Loading services/core/java/com/android/server/NetworkManagementService.java +0 −8 Original line number Diff line number Diff line Loading @@ -39,14 +39,6 @@ import static android.net.NetworkStats.TAG_NONE; import static android.net.NetworkStats.UID_ALL; import static android.net.TrafficStats.UID_TETHERING; import static com.android.server.NetworkManagementService.NetdResponseCode.ClatdStatusResult; import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceGetCfgResult; import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceListResult; import static com.android.server.NetworkManagementService.NetdResponseCode.IpFwdStatusResult; import static com.android.server.NetworkManagementService.NetdResponseCode.TetherDnsFwdTgtListResult; import static com.android.server.NetworkManagementService.NetdResponseCode.TetherInterfaceListResult; import static com.android.server.NetworkManagementService.NetdResponseCode.TetherStatusResult; import static com.android.server.NetworkManagementService.NetdResponseCode.TetheringStatsListResult; import static com.android.server.NetworkManagementService.NetdResponseCode.TtyListResult; import static com.android.server.NetworkManagementSocketTagger.PROP_QTAGUID_ENABLED; Loading services/net/java/android/net/dhcp/DhcpClient.java +33 −19 Original line number Diff line number Diff line Loading @@ -16,28 +16,39 @@ package android.net.dhcp; import com.android.internal.util.HexDump; import com.android.internal.util.Protocol; import com.android.internal.util.State; import com.android.internal.util.MessageUtils; import com.android.internal.util.StateMachine; import com.android.internal.util.WakeupMessage; import static android.net.dhcp.DhcpPacket.DHCP_BROADCAST_ADDRESS; import static android.net.dhcp.DhcpPacket.DHCP_DNS_SERVER; import static android.net.dhcp.DhcpPacket.DHCP_DOMAIN_NAME; import static android.net.dhcp.DhcpPacket.DHCP_LEASE_TIME; import static android.net.dhcp.DhcpPacket.DHCP_MTU; import static android.net.dhcp.DhcpPacket.DHCP_REBINDING_TIME; import static android.net.dhcp.DhcpPacket.DHCP_RENEWAL_TIME; import static android.net.dhcp.DhcpPacket.DHCP_ROUTER; import static android.net.dhcp.DhcpPacket.DHCP_SUBNET_MASK; import static android.net.dhcp.DhcpPacket.DHCP_VENDOR_INFO; import static android.net.dhcp.DhcpPacket.INADDR_ANY; import static android.net.dhcp.DhcpPacket.INADDR_BROADCAST; import static android.system.OsConstants.AF_INET; import static android.system.OsConstants.AF_PACKET; import static android.system.OsConstants.ETH_P_IP; import static android.system.OsConstants.IPPROTO_UDP; import static android.system.OsConstants.SOCK_DGRAM; import static android.system.OsConstants.SOCK_RAW; import static android.system.OsConstants.SOL_SOCKET; import static android.system.OsConstants.SO_BINDTODEVICE; import static android.system.OsConstants.SO_BROADCAST; import static android.system.OsConstants.SO_RCVBUF; import static android.system.OsConstants.SO_REUSEADDR; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.DhcpResults; import android.net.InterfaceConfiguration; import android.net.LinkAddress; import android.net.NetworkUtils; import android.net.TrafficStats; import android.net.metrics.IpConnectivityLog; import android.net.metrics.DhcpClientEvent; import android.net.metrics.DhcpErrorEvent; import android.net.metrics.IpConnectivityLog; import android.net.util.InterfaceParams; import android.os.Message; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; import android.system.ErrnoException; import android.system.Os; Loading @@ -47,20 +58,23 @@ import android.util.Log; import android.util.SparseArray; import android.util.TimeUtils; import com.android.internal.util.HexDump; import com.android.internal.util.MessageUtils; import com.android.internal.util.Protocol; import com.android.internal.util.State; import com.android.internal.util.StateMachine; import com.android.internal.util.WakeupMessage; import libcore.io.IoBridge; import java.io.FileDescriptor; import java.io.IOException; import java.lang.Thread; import java.net.Inet4Address; import java.net.SocketException; import java.nio.ByteBuffer; import java.util.Arrays; import java.util.Random; import libcore.io.IoBridge; import static android.system.OsConstants.*; import static android.net.dhcp.DhcpPacket.*; /** * A DHCPv4 client. * Loading services/net/java/android/net/ip/ConnectivityPacketTracker.java +6 −6 Original line number Diff line number Diff line Loading @@ -16,27 +16,27 @@ package android.net.ip; import static android.system.OsConstants.*; import static android.system.OsConstants.AF_PACKET; import static android.system.OsConstants.ARPHRD_ETHER; import static android.system.OsConstants.ETH_P_ALL; import static android.system.OsConstants.SOCK_RAW; import android.net.NetworkUtils; import android.net.util.PacketReader; import android.net.util.ConnectivityPacketSummary; import android.net.util.InterfaceParams; import android.net.util.PacketReader; import android.os.Handler; import android.system.ErrnoException; import android.system.Os; import android.system.PacketSocketAddress; import android.text.TextUtils; import android.util.Log; import android.util.LocalLog; import android.util.Log; import libcore.io.IoBridge; import libcore.util.HexEncoding; import java.io.FileDescriptor; import java.io.InterruptedIOException; import java.io.IOException; import java.net.SocketException; /** Loading services/net/java/android/net/ip/InterfaceController.java +0 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package android.net.ip; import android.net.INetd; import android.net.InterfaceConfiguration; import android.net.LinkAddress; import android.net.util.NetdService; import android.net.util.SharedLog; import android.os.INetworkManagementService; import android.os.RemoteException; Loading services/net/java/android/net/ip/IpClient.java +63 −28 Original line number Diff line number Diff line Loading @@ -343,7 +343,7 @@ public class IpClient extends StateMachine { private static final int CMD_START = 3; private static final int CMD_CONFIRM = 4; private static final int EVENT_PRE_DHCP_ACTION_COMPLETE = 5; // Sent by NetlinkTracker to communicate netlink events. // Triggered by NetlinkTracker to communicate netlink events. private static final int EVENT_NETLINK_LINKPROPERTIES_CHANGED = 6; private static final int CMD_UPDATE_TCP_BUFFER_SIZES = 7; private static final int CMD_UPDATE_HTTP_PROXY = 8; Loading Loading @@ -429,6 +429,9 @@ public class IpClient extends StateMachine { return NetdService.getInstance(); } /** * Get interface parameters for the specified interface. */ public InterfaceParams getInterfaceParams(String ifname) { return InterfaceParams.getByName(ifname); } Loading @@ -446,7 +449,9 @@ public class IpClient extends StateMachine { INetworkManagementService nwService) { this(context, ifName, callback, new Dependencies() { @Override public INetworkManagementService getNMS() { return nwService; } public INetworkManagementService getNMS() { return nwService; } }); } Loading Loading @@ -517,7 +522,7 @@ public class IpClient extends StateMachine { private void logMsg(String msg) { Log.d(mTag, msg); getHandler().post(() -> { mLog.log("OBSERVED " + msg); }); getHandler().post(() -> mLog.log("OBSERVED " + msg)); } }; Loading Loading @@ -590,10 +595,12 @@ public class IpClient extends StateMachine { } private void configureAndStartStateMachine() { // CHECKSTYLE:OFF IndentationCheck addState(mStoppedState); addState(mStartedState); addState(mRunningState, mStartedState); addState(mStoppingState); // CHECKSTYLE:ON IndentationCheck setInitialState(mStoppedState); Loading Loading @@ -676,18 +683,34 @@ public class IpClient extends StateMachine { startProvisioning(new android.net.shared.ProvisioningConfiguration()); } /** * Stop this IpClient. * * <p>This does not shut down the StateMachine itself, which is handled by {@link #shutdown()}. */ public void stop() { sendMessage(CMD_STOP); } /** * Confirm the provisioning configuration. */ public void confirmConfiguration() { sendMessage(CMD_CONFIRM); } /** * For clients using {@link ProvisioningConfiguration.Builder#withPreDhcpAction()}, must be * called after {@link IIpClientCallbacks#onPreDhcpAction} to indicate that DHCP is clear to * proceed. */ public void completedPreDhcpAction() { sendMessage(EVENT_PRE_DHCP_ACTION_COMPLETE); } /** * Indicate that packet filter read is complete. */ public void readPacketFilterComplete(byte[] data) { sendMessage(EVENT_READ_PACKET_FILTER_COMPLETE, data); } Loading Loading @@ -720,6 +743,9 @@ public class IpClient extends StateMachine { sendMessage(CMD_SET_MULTICAST_FILTER, enabled); } /** * Dump logs of this IpClient. */ public void dump(FileDescriptor fd, PrintWriter writer, String[] args) { if (args != null && args.length > 0 && DUMP_ARG_CONFIRM.equals(args[0])) { // Execute confirmConfiguration() and take no further action. Loading Loading @@ -962,19 +988,25 @@ public class IpClient extends StateMachine { private void dispatchCallback(ProvisioningChange delta, LinkProperties newLp) { switch (delta) { case GAINED_PROVISIONING: if (DBG) { Log.d(mTag, "onProvisioningSuccess()"); } if (DBG) { Log.d(mTag, "onProvisioningSuccess()"); } recordMetric(IpManagerEvent.PROVISIONING_OK); mCallback.onProvisioningSuccess(newLp); break; case LOST_PROVISIONING: if (DBG) { Log.d(mTag, "onProvisioningFailure()"); } if (DBG) { Log.d(mTag, "onProvisioningFailure()"); } recordMetric(IpManagerEvent.PROVISIONING_FAIL); mCallback.onProvisioningFailure(newLp); break; default: if (DBG) { Log.d(mTag, "onLinkPropertiesChange()"); } if (DBG) { Log.d(mTag, "onLinkPropertiesChange()"); } mCallback.onLinkPropertiesChange(newLp); break; } Loading Loading @@ -1118,7 +1150,9 @@ public class IpClient extends StateMachine { // any addresses upon entry to StoppedState. mInterfaceCtrl.clearIPv4Address(); mDhcpResults = null; if (DBG) { Log.d(mTag, "onNewDhcpResults(null)"); } if (DBG) { Log.d(mTag, "onNewDhcpResults(null)"); } mCallback.onNewDhcpResults(null); handleProvisioningFailure(); Loading Loading @@ -1171,9 +1205,9 @@ public class IpClient extends StateMachine { } private boolean startIPv6() { return mInterfaceCtrl.setIPv6PrivacyExtensions(true) && mInterfaceCtrl.setIPv6AddrGenModeIfSupported(mConfiguration.mIPv6AddrGenMode) && mInterfaceCtrl.enableIPv6(); return mInterfaceCtrl.setIPv6PrivacyExtensions(true) && mInterfaceCtrl.setIPv6AddrGenModeIfSupported(mConfiguration.mIPv6AddrGenMode) && mInterfaceCtrl.enableIPv6(); } private boolean applyInitialConfig(InitialConfiguration config) { Loading @@ -1191,10 +1225,10 @@ public class IpClient extends StateMachine { // settings observer to watch for update and re-program these // parameters (Q: is this level of dynamic updatability really // necessary or does reading from settings at startup suffice?). final int NUM_SOLICITS = 5; final int INTER_SOLICIT_INTERVAL_MS = 750; final int numSolicits = 5; final int interSolicitIntervalMs = 750; setNeighborParameters(mDependencies.getNetd(), mInterfaceName, NUM_SOLICITS, INTER_SOLICIT_INTERVAL_MS); numSolicits, interSolicitIntervalMs); } catch (Exception e) { mLog.e("Failed to adjust neighbor parameters", e); // Carry on using the system defaults (currently: 3, 1000); Loading Loading @@ -1341,8 +1375,8 @@ public class IpClient extends StateMachine { mStartTimeMillis = SystemClock.elapsedRealtime(); if (mConfiguration.mProvisioningTimeoutMs > 0) { final long alarmTime = SystemClock.elapsedRealtime() + mConfiguration.mProvisioningTimeoutMs; final long alarmTime = SystemClock.elapsedRealtime() + mConfiguration.mProvisioningTimeoutMs; mProvisioningTimeoutAlarm.schedule(alarmTime); } Loading Loading @@ -1397,8 +1431,7 @@ public class IpClient extends StateMachine { } private boolean readyToProceed() { return (!mLinkProperties.hasIPv4Address() && !mLinkProperties.hasGlobalIPv6Address()); return (!mLinkProperties.hasIPv4Address() && !mLinkProperties.hasGlobalIPv6Address()); } } Loading Loading @@ -1449,7 +1482,7 @@ public class IpClient extends StateMachine { if (mConfiguration.mUsingMultinetworkPolicyTracker) { mMultinetworkPolicyTracker = new MultinetworkPolicyTracker( mContext, getHandler(), () -> { mLog.log("OBSERVED AvoidBadWifi changed"); }); () -> mLog.log("OBSERVED AvoidBadWifi changed")); mMultinetworkPolicyTracker.start(); } Loading Loading @@ -1510,8 +1543,8 @@ public class IpClient extends StateMachine { if (!mDhcpActionInFlight) { mCallback.onPreDhcpAction(); mDhcpActionInFlight = true; final long alarmTime = SystemClock.elapsedRealtime() + mConfiguration.mRequestedPreDhcpActionMs; final long alarmTime = SystemClock.elapsedRealtime() + mConfiguration.mRequestedPreDhcpActionMs; mDhcpActionTimeoutAlarm.schedule(alarmTime); } } Loading Loading @@ -1680,16 +1713,18 @@ public class IpClient extends StateMachine { } private static void setNeighborParameters( INetd netd, String ifName, int num_solicits, int inter_solicit_interval_ms) INetd netd, String ifName, int numSolicits, int interSolicitIntervalMs) throws RemoteException, IllegalArgumentException { Preconditions.checkNotNull(netd); Preconditions.checkArgument(!TextUtils.isEmpty(ifName)); Preconditions.checkArgument(num_solicits > 0); Preconditions.checkArgument(inter_solicit_interval_ms > 0); Preconditions.checkArgument(numSolicits > 0); Preconditions.checkArgument(interSolicitIntervalMs > 0); for (int family : new Integer[]{INetd.IPV4, INetd.IPV6}) { netd.setProcSysNet(family, INetd.NEIGH, ifName, "retrans_time_ms", Integer.toString(inter_solicit_interval_ms)); netd.setProcSysNet(family, INetd.NEIGH, ifName, "ucast_solicit", Integer.toString(num_solicits)); netd.setProcSysNet(family, INetd.NEIGH, ifName, "retrans_time_ms", Integer.toString(interSolicitIntervalMs)); netd.setProcSysNet(family, INetd.NEIGH, ifName, "ucast_solicit", Integer.toString(numSolicits)); } } Loading Loading
services/core/java/com/android/server/NetworkManagementService.java +0 −8 Original line number Diff line number Diff line Loading @@ -39,14 +39,6 @@ import static android.net.NetworkStats.TAG_NONE; import static android.net.NetworkStats.UID_ALL; import static android.net.TrafficStats.UID_TETHERING; import static com.android.server.NetworkManagementService.NetdResponseCode.ClatdStatusResult; import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceGetCfgResult; import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceListResult; import static com.android.server.NetworkManagementService.NetdResponseCode.IpFwdStatusResult; import static com.android.server.NetworkManagementService.NetdResponseCode.TetherDnsFwdTgtListResult; import static com.android.server.NetworkManagementService.NetdResponseCode.TetherInterfaceListResult; import static com.android.server.NetworkManagementService.NetdResponseCode.TetherStatusResult; import static com.android.server.NetworkManagementService.NetdResponseCode.TetheringStatsListResult; import static com.android.server.NetworkManagementService.NetdResponseCode.TtyListResult; import static com.android.server.NetworkManagementSocketTagger.PROP_QTAGUID_ENABLED; Loading
services/net/java/android/net/dhcp/DhcpClient.java +33 −19 Original line number Diff line number Diff line Loading @@ -16,28 +16,39 @@ package android.net.dhcp; import com.android.internal.util.HexDump; import com.android.internal.util.Protocol; import com.android.internal.util.State; import com.android.internal.util.MessageUtils; import com.android.internal.util.StateMachine; import com.android.internal.util.WakeupMessage; import static android.net.dhcp.DhcpPacket.DHCP_BROADCAST_ADDRESS; import static android.net.dhcp.DhcpPacket.DHCP_DNS_SERVER; import static android.net.dhcp.DhcpPacket.DHCP_DOMAIN_NAME; import static android.net.dhcp.DhcpPacket.DHCP_LEASE_TIME; import static android.net.dhcp.DhcpPacket.DHCP_MTU; import static android.net.dhcp.DhcpPacket.DHCP_REBINDING_TIME; import static android.net.dhcp.DhcpPacket.DHCP_RENEWAL_TIME; import static android.net.dhcp.DhcpPacket.DHCP_ROUTER; import static android.net.dhcp.DhcpPacket.DHCP_SUBNET_MASK; import static android.net.dhcp.DhcpPacket.DHCP_VENDOR_INFO; import static android.net.dhcp.DhcpPacket.INADDR_ANY; import static android.net.dhcp.DhcpPacket.INADDR_BROADCAST; import static android.system.OsConstants.AF_INET; import static android.system.OsConstants.AF_PACKET; import static android.system.OsConstants.ETH_P_IP; import static android.system.OsConstants.IPPROTO_UDP; import static android.system.OsConstants.SOCK_DGRAM; import static android.system.OsConstants.SOCK_RAW; import static android.system.OsConstants.SOL_SOCKET; import static android.system.OsConstants.SO_BINDTODEVICE; import static android.system.OsConstants.SO_BROADCAST; import static android.system.OsConstants.SO_RCVBUF; import static android.system.OsConstants.SO_REUSEADDR; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.DhcpResults; import android.net.InterfaceConfiguration; import android.net.LinkAddress; import android.net.NetworkUtils; import android.net.TrafficStats; import android.net.metrics.IpConnectivityLog; import android.net.metrics.DhcpClientEvent; import android.net.metrics.DhcpErrorEvent; import android.net.metrics.IpConnectivityLog; import android.net.util.InterfaceParams; import android.os.Message; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; import android.system.ErrnoException; import android.system.Os; Loading @@ -47,20 +58,23 @@ import android.util.Log; import android.util.SparseArray; import android.util.TimeUtils; import com.android.internal.util.HexDump; import com.android.internal.util.MessageUtils; import com.android.internal.util.Protocol; import com.android.internal.util.State; import com.android.internal.util.StateMachine; import com.android.internal.util.WakeupMessage; import libcore.io.IoBridge; import java.io.FileDescriptor; import java.io.IOException; import java.lang.Thread; import java.net.Inet4Address; import java.net.SocketException; import java.nio.ByteBuffer; import java.util.Arrays; import java.util.Random; import libcore.io.IoBridge; import static android.system.OsConstants.*; import static android.net.dhcp.DhcpPacket.*; /** * A DHCPv4 client. * Loading
services/net/java/android/net/ip/ConnectivityPacketTracker.java +6 −6 Original line number Diff line number Diff line Loading @@ -16,27 +16,27 @@ package android.net.ip; import static android.system.OsConstants.*; import static android.system.OsConstants.AF_PACKET; import static android.system.OsConstants.ARPHRD_ETHER; import static android.system.OsConstants.ETH_P_ALL; import static android.system.OsConstants.SOCK_RAW; import android.net.NetworkUtils; import android.net.util.PacketReader; import android.net.util.ConnectivityPacketSummary; import android.net.util.InterfaceParams; import android.net.util.PacketReader; import android.os.Handler; import android.system.ErrnoException; import android.system.Os; import android.system.PacketSocketAddress; import android.text.TextUtils; import android.util.Log; import android.util.LocalLog; import android.util.Log; import libcore.io.IoBridge; import libcore.util.HexEncoding; import java.io.FileDescriptor; import java.io.InterruptedIOException; import java.io.IOException; import java.net.SocketException; /** Loading
services/net/java/android/net/ip/InterfaceController.java +0 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package android.net.ip; import android.net.INetd; import android.net.InterfaceConfiguration; import android.net.LinkAddress; import android.net.util.NetdService; import android.net.util.SharedLog; import android.os.INetworkManagementService; import android.os.RemoteException; Loading
services/net/java/android/net/ip/IpClient.java +63 −28 Original line number Diff line number Diff line Loading @@ -343,7 +343,7 @@ public class IpClient extends StateMachine { private static final int CMD_START = 3; private static final int CMD_CONFIRM = 4; private static final int EVENT_PRE_DHCP_ACTION_COMPLETE = 5; // Sent by NetlinkTracker to communicate netlink events. // Triggered by NetlinkTracker to communicate netlink events. private static final int EVENT_NETLINK_LINKPROPERTIES_CHANGED = 6; private static final int CMD_UPDATE_TCP_BUFFER_SIZES = 7; private static final int CMD_UPDATE_HTTP_PROXY = 8; Loading Loading @@ -429,6 +429,9 @@ public class IpClient extends StateMachine { return NetdService.getInstance(); } /** * Get interface parameters for the specified interface. */ public InterfaceParams getInterfaceParams(String ifname) { return InterfaceParams.getByName(ifname); } Loading @@ -446,7 +449,9 @@ public class IpClient extends StateMachine { INetworkManagementService nwService) { this(context, ifName, callback, new Dependencies() { @Override public INetworkManagementService getNMS() { return nwService; } public INetworkManagementService getNMS() { return nwService; } }); } Loading Loading @@ -517,7 +522,7 @@ public class IpClient extends StateMachine { private void logMsg(String msg) { Log.d(mTag, msg); getHandler().post(() -> { mLog.log("OBSERVED " + msg); }); getHandler().post(() -> mLog.log("OBSERVED " + msg)); } }; Loading Loading @@ -590,10 +595,12 @@ public class IpClient extends StateMachine { } private void configureAndStartStateMachine() { // CHECKSTYLE:OFF IndentationCheck addState(mStoppedState); addState(mStartedState); addState(mRunningState, mStartedState); addState(mStoppingState); // CHECKSTYLE:ON IndentationCheck setInitialState(mStoppedState); Loading Loading @@ -676,18 +683,34 @@ public class IpClient extends StateMachine { startProvisioning(new android.net.shared.ProvisioningConfiguration()); } /** * Stop this IpClient. * * <p>This does not shut down the StateMachine itself, which is handled by {@link #shutdown()}. */ public void stop() { sendMessage(CMD_STOP); } /** * Confirm the provisioning configuration. */ public void confirmConfiguration() { sendMessage(CMD_CONFIRM); } /** * For clients using {@link ProvisioningConfiguration.Builder#withPreDhcpAction()}, must be * called after {@link IIpClientCallbacks#onPreDhcpAction} to indicate that DHCP is clear to * proceed. */ public void completedPreDhcpAction() { sendMessage(EVENT_PRE_DHCP_ACTION_COMPLETE); } /** * Indicate that packet filter read is complete. */ public void readPacketFilterComplete(byte[] data) { sendMessage(EVENT_READ_PACKET_FILTER_COMPLETE, data); } Loading Loading @@ -720,6 +743,9 @@ public class IpClient extends StateMachine { sendMessage(CMD_SET_MULTICAST_FILTER, enabled); } /** * Dump logs of this IpClient. */ public void dump(FileDescriptor fd, PrintWriter writer, String[] args) { if (args != null && args.length > 0 && DUMP_ARG_CONFIRM.equals(args[0])) { // Execute confirmConfiguration() and take no further action. Loading Loading @@ -962,19 +988,25 @@ public class IpClient extends StateMachine { private void dispatchCallback(ProvisioningChange delta, LinkProperties newLp) { switch (delta) { case GAINED_PROVISIONING: if (DBG) { Log.d(mTag, "onProvisioningSuccess()"); } if (DBG) { Log.d(mTag, "onProvisioningSuccess()"); } recordMetric(IpManagerEvent.PROVISIONING_OK); mCallback.onProvisioningSuccess(newLp); break; case LOST_PROVISIONING: if (DBG) { Log.d(mTag, "onProvisioningFailure()"); } if (DBG) { Log.d(mTag, "onProvisioningFailure()"); } recordMetric(IpManagerEvent.PROVISIONING_FAIL); mCallback.onProvisioningFailure(newLp); break; default: if (DBG) { Log.d(mTag, "onLinkPropertiesChange()"); } if (DBG) { Log.d(mTag, "onLinkPropertiesChange()"); } mCallback.onLinkPropertiesChange(newLp); break; } Loading Loading @@ -1118,7 +1150,9 @@ public class IpClient extends StateMachine { // any addresses upon entry to StoppedState. mInterfaceCtrl.clearIPv4Address(); mDhcpResults = null; if (DBG) { Log.d(mTag, "onNewDhcpResults(null)"); } if (DBG) { Log.d(mTag, "onNewDhcpResults(null)"); } mCallback.onNewDhcpResults(null); handleProvisioningFailure(); Loading Loading @@ -1171,9 +1205,9 @@ public class IpClient extends StateMachine { } private boolean startIPv6() { return mInterfaceCtrl.setIPv6PrivacyExtensions(true) && mInterfaceCtrl.setIPv6AddrGenModeIfSupported(mConfiguration.mIPv6AddrGenMode) && mInterfaceCtrl.enableIPv6(); return mInterfaceCtrl.setIPv6PrivacyExtensions(true) && mInterfaceCtrl.setIPv6AddrGenModeIfSupported(mConfiguration.mIPv6AddrGenMode) && mInterfaceCtrl.enableIPv6(); } private boolean applyInitialConfig(InitialConfiguration config) { Loading @@ -1191,10 +1225,10 @@ public class IpClient extends StateMachine { // settings observer to watch for update and re-program these // parameters (Q: is this level of dynamic updatability really // necessary or does reading from settings at startup suffice?). final int NUM_SOLICITS = 5; final int INTER_SOLICIT_INTERVAL_MS = 750; final int numSolicits = 5; final int interSolicitIntervalMs = 750; setNeighborParameters(mDependencies.getNetd(), mInterfaceName, NUM_SOLICITS, INTER_SOLICIT_INTERVAL_MS); numSolicits, interSolicitIntervalMs); } catch (Exception e) { mLog.e("Failed to adjust neighbor parameters", e); // Carry on using the system defaults (currently: 3, 1000); Loading Loading @@ -1341,8 +1375,8 @@ public class IpClient extends StateMachine { mStartTimeMillis = SystemClock.elapsedRealtime(); if (mConfiguration.mProvisioningTimeoutMs > 0) { final long alarmTime = SystemClock.elapsedRealtime() + mConfiguration.mProvisioningTimeoutMs; final long alarmTime = SystemClock.elapsedRealtime() + mConfiguration.mProvisioningTimeoutMs; mProvisioningTimeoutAlarm.schedule(alarmTime); } Loading Loading @@ -1397,8 +1431,7 @@ public class IpClient extends StateMachine { } private boolean readyToProceed() { return (!mLinkProperties.hasIPv4Address() && !mLinkProperties.hasGlobalIPv6Address()); return (!mLinkProperties.hasIPv4Address() && !mLinkProperties.hasGlobalIPv6Address()); } } Loading Loading @@ -1449,7 +1482,7 @@ public class IpClient extends StateMachine { if (mConfiguration.mUsingMultinetworkPolicyTracker) { mMultinetworkPolicyTracker = new MultinetworkPolicyTracker( mContext, getHandler(), () -> { mLog.log("OBSERVED AvoidBadWifi changed"); }); () -> mLog.log("OBSERVED AvoidBadWifi changed")); mMultinetworkPolicyTracker.start(); } Loading Loading @@ -1510,8 +1543,8 @@ public class IpClient extends StateMachine { if (!mDhcpActionInFlight) { mCallback.onPreDhcpAction(); mDhcpActionInFlight = true; final long alarmTime = SystemClock.elapsedRealtime() + mConfiguration.mRequestedPreDhcpActionMs; final long alarmTime = SystemClock.elapsedRealtime() + mConfiguration.mRequestedPreDhcpActionMs; mDhcpActionTimeoutAlarm.schedule(alarmTime); } } Loading Loading @@ -1680,16 +1713,18 @@ public class IpClient extends StateMachine { } private static void setNeighborParameters( INetd netd, String ifName, int num_solicits, int inter_solicit_interval_ms) INetd netd, String ifName, int numSolicits, int interSolicitIntervalMs) throws RemoteException, IllegalArgumentException { Preconditions.checkNotNull(netd); Preconditions.checkArgument(!TextUtils.isEmpty(ifName)); Preconditions.checkArgument(num_solicits > 0); Preconditions.checkArgument(inter_solicit_interval_ms > 0); Preconditions.checkArgument(numSolicits > 0); Preconditions.checkArgument(interSolicitIntervalMs > 0); for (int family : new Integer[]{INetd.IPV4, INetd.IPV6}) { netd.setProcSysNet(family, INetd.NEIGH, ifName, "retrans_time_ms", Integer.toString(inter_solicit_interval_ms)); netd.setProcSysNet(family, INetd.NEIGH, ifName, "ucast_solicit", Integer.toString(num_solicits)); netd.setProcSysNet(family, INetd.NEIGH, ifName, "retrans_time_ms", Integer.toString(interSolicitIntervalMs)); netd.setProcSysNet(family, INetd.NEIGH, ifName, "ucast_solicit", Integer.toString(numSolicits)); } } Loading