diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java index 600a6ae0babdb..5ef3fe49da5d2 100644 --- a/services/core/java/com/android/server/NetworkManagementService.java +++ b/services/core/java/com/android/server/NetworkManagementService.java @@ -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; diff --git a/services/net/java/android/net/dhcp/DhcpClient.java b/services/net/java/android/net/dhcp/DhcpClient.java index a956cefd12357..8ae689b1b6a7d 100644 --- a/services/net/java/android/net/dhcp/DhcpClient.java +++ b/services/net/java/android/net/dhcp/DhcpClient.java @@ -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; @@ -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. * diff --git a/services/net/java/android/net/ip/ConnectivityPacketTracker.java b/services/net/java/android/net/ip/ConnectivityPacketTracker.java index e6ddbbc954692..bef425a37da45 100644 --- a/services/net/java/android/net/ip/ConnectivityPacketTracker.java +++ b/services/net/java/android/net/ip/ConnectivityPacketTracker.java @@ -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; /** diff --git a/services/net/java/android/net/ip/InterfaceController.java b/services/net/java/android/net/ip/InterfaceController.java index 02e4f875230a2..55dfcef81890a 100644 --- a/services/net/java/android/net/ip/InterfaceController.java +++ b/services/net/java/android/net/ip/InterfaceController.java @@ -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; diff --git a/services/net/java/android/net/ip/IpClient.java b/services/net/java/android/net/ip/IpClient.java index ff4e2809d090b..9f1557354dc46 100644 --- a/services/net/java/android/net/ip/IpClient.java +++ b/services/net/java/android/net/ip/IpClient.java @@ -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; @@ -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); } @@ -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; + } }); } @@ -493,7 +498,7 @@ public class IpClient extends StateMachine { return; } - final String msg = "interfaceAdded(" + iface +")"; + final String msg = "interfaceAdded(" + iface + ")"; logMsg(msg); } @@ -511,13 +516,13 @@ public class IpClient extends StateMachine { return; } - final String msg = "interfaceRemoved(" + iface +")"; + final String msg = "interfaceRemoved(" + iface + ")"; logMsg(msg); } private void logMsg(String msg) { Log.d(mTag, msg); - getHandler().post(() -> { mLog.log("OBSERVED " + msg); }); + getHandler().post(() -> mLog.log("OBSERVED " + msg)); } }; @@ -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); @@ -676,18 +683,34 @@ public class IpClient extends StateMachine { startProvisioning(new android.net.shared.ProvisioningConfiguration()); } + /** + * Stop this IpClient. + * + *
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);
}
@@ -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.
@@ -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;
}
@@ -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();
@@ -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) {
@@ -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);
@@ -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);
}
@@ -1397,8 +1431,7 @@ public class IpClient extends StateMachine {
}
private boolean readyToProceed() {
- return (!mLinkProperties.hasIPv4Address() &&
- !mLinkProperties.hasGlobalIPv6Address());
+ return (!mLinkProperties.hasIPv4Address() && !mLinkProperties.hasGlobalIPv6Address());
}
}
@@ -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();
}
@@ -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);
}
}
@@ -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));
}
}
@@ -1718,7 +1753,7 @@ public class IpClient extends StateMachine {
static