Partial unification of DHCPv4 and static IPv4 configuration codepaths

Change-Id: Ic796f9b7bb853a332175c34e0f557588efb6247a
This commit is contained in:
Erik Kline
2016-02-03 19:34:47 +09:00
parent 8afa558c52
commit 8deac7793c

View File

@@ -113,10 +113,9 @@ public class IpManager extends StateMachine {
private static final int CMD_STOP = 1;
private static final int CMD_START = 2;
private static final int CMD_CONFIRM = 3;
private static final int CMD_UPDATE_DHCPV4_RESULTS = 4;
private static final int EVENT_PRE_DHCP_ACTION_COMPLETE = 5;
private static final int EVENT_PRE_DHCP_ACTION_COMPLETE = 4;
// Sent by NetlinkTracker to communicate netlink events.
private static final int EVENT_NETLINK_LINKPROPERTIES_CHANGED = 6;
private static final int EVENT_NETLINK_LINKPROPERTIES_CHANGED = 5;
private static final int MAX_LOG_RECORDS = 1000;
@@ -343,6 +342,19 @@ public class IpManager extends StateMachine {
}
}
private void handleIPv4Success(DhcpResults dhcpResults) {
mDhcpResults = new DhcpResults(dhcpResults);
setLinkProperties(assembleLinkProperties());
mCallback.onIPv4ProvisioningSuccess(dhcpResults);
}
private void handleIPv4Failure() {
clearIPv4Address();
mDhcpResults = null;
setLinkProperties(assembleLinkProperties());
mCallback.onIPv4ProvisioningFailure();
}
class StoppedState extends State {
@Override
public void enter() {
@@ -418,9 +430,9 @@ public class IpManager extends StateMachine {
// handle the result accordingly.
if (mStaticIpConfig != null) {
if (applyStaticIpConfig()) {
sendMessage(CMD_UPDATE_DHCPV4_RESULTS, new DhcpResults(mStaticIpConfig));
handleIPv4Success(new DhcpResults(mStaticIpConfig));
} else {
sendMessage(CMD_UPDATE_DHCPV4_RESULTS);
handleIPv4Failure();
}
} else {
// Start DHCPv4.
@@ -465,21 +477,6 @@ public class IpManager extends StateMachine {
}
break;
case CMD_UPDATE_DHCPV4_RESULTS: {
final DhcpResults dhcpResults = (DhcpResults) msg.obj;
if (dhcpResults != null) {
mDhcpResults = new DhcpResults(dhcpResults);
setLinkProperties(assembleLinkProperties());
mCallback.onIPv4ProvisioningSuccess(dhcpResults);
} else {
clearIPv4Address();
mDhcpResults = null;
setLinkProperties(assembleLinkProperties());
mCallback.onIPv4ProvisioningFailure();
}
break;
}
case EVENT_PRE_DHCP_ACTION_COMPLETE:
// It's possible to reach here if, for example, someone
// calls completedPreDhcpAction() after provisioning with
@@ -527,15 +524,10 @@ public class IpManager extends StateMachine {
final DhcpResults dhcpResults = (DhcpResults) msg.obj;
switch (msg.arg1) {
case DhcpStateMachine.DHCP_SUCCESS:
mDhcpResults = new DhcpResults(dhcpResults);
setLinkProperties(assembleLinkProperties());
mCallback.onIPv4ProvisioningSuccess(dhcpResults);
handleIPv4Success(dhcpResults);
break;
case DhcpStateMachine.DHCP_FAILURE:
clearIPv4Address();
mDhcpResults = null;
setLinkProperties(assembleLinkProperties());
mCallback.onIPv4ProvisioningFailure();
handleIPv4Failure();
break;
default:
Log.e(TAG, "Unknown CMD_POST_DHCP_ACTION status:" + msg.arg1);