Merge "Fix lint errors for moving IpClient to NetworkStack"

This commit is contained in:
Remi NGUYEN VAN
2019-01-22 07:13:39 +00:00
committed by Gerrit Code Review
11 changed files with 156 additions and 88 deletions

View File

@@ -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;

View File

@@ -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.
*

View File

@@ -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;
/**

View File

@@ -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;

View File

@@ -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.
*
* <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);
}
@@ -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 <T> T find(Iterable<T> coll, Predicate<T> fn) {
for (T t: coll) {
if (fn.test(t)) {
return t;
return t;
}
}
return null;

View File

@@ -16,8 +16,8 @@
package android.net.ip;
import static android.net.netlink.NetlinkConstants.hexify;
import static android.net.netlink.NetlinkConstants.RTM_DELNEIGH;
import static android.net.netlink.NetlinkConstants.hexify;
import static android.net.netlink.NetlinkConstants.stringForNlMsgType;
import android.net.MacAddress;
@@ -26,7 +26,6 @@ import android.net.netlink.NetlinkMessage;
import android.net.netlink.NetlinkSocket;
import android.net.netlink.RtNetlinkNeighborMessage;
import android.net.netlink.StructNdMsg;
import android.net.netlink.StructNlMsgHdr;
import android.net.util.PacketReader;
import android.net.util.SharedLog;
import android.os.Handler;

View File

@@ -18,11 +18,15 @@ package android.net.ip;
import static android.net.util.NetworkConstants.IPV6_MIN_MTU;
import static android.net.util.NetworkConstants.RFC7421_PREFIX_LENGTH;
import static android.system.OsConstants.*;
import static android.system.OsConstants.AF_INET6;
import static android.system.OsConstants.IPPROTO_ICMPV6;
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_SNDTIMEO;
import android.net.IpPrefix;
import android.net.LinkAddress;
import android.net.LinkProperties;
import android.net.NetworkUtils;
import android.net.TrafficStats;
import android.net.util.InterfaceParams;
@@ -34,10 +38,8 @@ import android.util.Log;
import com.android.internal.annotations.GuardedBy;
import libcore.io.IoBridge;
import libcore.util.HexEncoding;
import java.io.FileDescriptor;
import java.io.InterruptedIOException;
import java.io.IOException;
import java.net.Inet6Address;
import java.net.InetAddress;
@@ -47,7 +49,6 @@ import java.net.UnknownHostException;
import java.nio.BufferOverflowException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;

View File

@@ -16,22 +16,15 @@
package android.net.netlink;
import static android.net.netlink.NetlinkConstants.alignedLengthOf;
import static android.net.netlink.StructNlAttr.makeNestedType;
import static android.net.netlink.StructNlAttr.NLA_HEADERLEN;
import static android.net.netlink.StructNlMsgHdr.NLM_F_ACK;
import static android.net.netlink.StructNlMsgHdr.NLM_F_DUMP;
import static android.net.netlink.StructNlMsgHdr.NLM_F_REPLACE;
import static android.net.netlink.StructNlMsgHdr.NLM_F_REQUEST;
import static android.net.util.NetworkConstants.IPV4_ADDR_LEN;
import static java.nio.ByteOrder.BIG_ENDIAN;
import android.system.OsConstants;
import android.util.Log;
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;

View File

@@ -16,19 +16,56 @@
package android.net.util;
import android.net.dhcp.DhcpPacket;
import static android.net.util.NetworkConstants.ARP_HWTYPE_ETHER;
import static android.net.util.NetworkConstants.ARP_PAYLOAD_LEN;
import static android.net.util.NetworkConstants.ARP_REPLY;
import static android.net.util.NetworkConstants.ARP_REQUEST;
import static android.net.util.NetworkConstants.DHCP4_CLIENT_PORT;
import static android.net.util.NetworkConstants.ETHER_ADDR_LEN;
import static android.net.util.NetworkConstants.ETHER_DST_ADDR_OFFSET;
import static android.net.util.NetworkConstants.ETHER_HEADER_LEN;
import static android.net.util.NetworkConstants.ETHER_SRC_ADDR_OFFSET;
import static android.net.util.NetworkConstants.ETHER_TYPE_ARP;
import static android.net.util.NetworkConstants.ETHER_TYPE_IPV4;
import static android.net.util.NetworkConstants.ETHER_TYPE_IPV6;
import static android.net.util.NetworkConstants.ETHER_TYPE_OFFSET;
import static android.net.util.NetworkConstants.ICMPV6_HEADER_MIN_LEN;
import static android.net.util.NetworkConstants.ICMPV6_ND_OPTION_LENGTH_SCALING_FACTOR;
import static android.net.util.NetworkConstants.ICMPV6_ND_OPTION_MIN_LENGTH;
import static android.net.util.NetworkConstants.ICMPV6_ND_OPTION_MTU;
import static android.net.util.NetworkConstants.ICMPV6_ND_OPTION_SLLA;
import static android.net.util.NetworkConstants.ICMPV6_ND_OPTION_TLLA;
import static android.net.util.NetworkConstants.ICMPV6_NEIGHBOR_ADVERTISEMENT;
import static android.net.util.NetworkConstants.ICMPV6_NEIGHBOR_SOLICITATION;
import static android.net.util.NetworkConstants.ICMPV6_ROUTER_ADVERTISEMENT;
import static android.net.util.NetworkConstants.ICMPV6_ROUTER_SOLICITATION;
import static android.net.util.NetworkConstants.IPV4_ADDR_LEN;
import static android.net.util.NetworkConstants.IPV4_DST_ADDR_OFFSET;
import static android.net.util.NetworkConstants.IPV4_FLAGS_OFFSET;
import static android.net.util.NetworkConstants.IPV4_FRAGMENT_MASK;
import static android.net.util.NetworkConstants.IPV4_HEADER_MIN_LEN;
import static android.net.util.NetworkConstants.IPV4_IHL_MASK;
import static android.net.util.NetworkConstants.IPV4_PROTOCOL_OFFSET;
import static android.net.util.NetworkConstants.IPV4_SRC_ADDR_OFFSET;
import static android.net.util.NetworkConstants.IPV6_ADDR_LEN;
import static android.net.util.NetworkConstants.IPV6_HEADER_LEN;
import static android.net.util.NetworkConstants.IPV6_PROTOCOL_OFFSET;
import static android.net.util.NetworkConstants.IPV6_SRC_ADDR_OFFSET;
import static android.net.util.NetworkConstants.UDP_HEADER_LEN;
import static android.net.util.NetworkConstants.asString;
import static android.net.util.NetworkConstants.asUint;
import static android.system.OsConstants.IPPROTO_ICMPV6;
import static android.system.OsConstants.IPPROTO_UDP;
import android.net.MacAddress;
import android.net.dhcp.DhcpPacket;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.Arrays;
import java.util.StringJoiner;
import static android.system.OsConstants.*;
import static android.net.util.NetworkConstants.*;
/**
* Critical connectivity packet summarizing class.

View File

@@ -19,7 +19,6 @@ package android.net.util;
import android.net.INetd;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.ServiceSpecificException;
import android.os.SystemClock;
import android.util.Log;

View File

@@ -16,19 +16,18 @@
package android.net.util;
import static android.net.util.NetworkConstants.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import android.net.MacAddress;
import android.support.test.runner.AndroidJUnit4;
import android.support.test.filters.SmallTest;
import org.junit.runner.RunWith;
import org.junit.Test;
import android.support.test.runner.AndroidJUnit4;
import libcore.util.HexEncoding;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* Tests for ConnectivityPacketSummary.
*