Loading services/net/java/android/net/ip/ConnectivityPacketTracker.java +16 −7 Original line number Original line Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.Handler; import android.system.ErrnoException; import android.system.ErrnoException; import android.system.Os; import android.system.Os; import android.system.PacketSocketAddress; import android.system.PacketSocketAddress; import android.text.TextUtils; import android.util.Log; import android.util.Log; import android.util.LocalLog; import android.util.LocalLog; Loading Loading @@ -59,11 +60,14 @@ public class ConnectivityPacketTracker { private static final boolean DBG = false; private static final boolean DBG = false; private static final String MARK_START = "--- START ---"; private static final String MARK_START = "--- START ---"; private static final String MARK_STOP = "--- STOP ---"; private static final String MARK_STOP = "--- STOP ---"; private static final String MARK_NAMED_START = "--- START (%s) ---"; private static final String MARK_NAMED_STOP = "--- STOP (%s) ---"; private final String mTag; private final String mTag; private final LocalLog mLog; private final LocalLog mLog; private final BlockingSocketReader mPacketListener; private final BlockingSocketReader mPacketListener; private boolean mRunning; private boolean mRunning; private String mDisplayName; public ConnectivityPacketTracker(Handler h, NetworkInterface netif, LocalLog log) { public ConnectivityPacketTracker(Handler h, NetworkInterface netif, LocalLog log) { final String ifname; final String ifname; Loading @@ -85,14 +89,16 @@ public class ConnectivityPacketTracker { mPacketListener = new PacketListener(h, ifindex, hwaddr, mtu); mPacketListener = new PacketListener(h, ifindex, hwaddr, mtu); } } public void start() { public void start(String displayName) { mRunning = true; mRunning = true; mDisplayName = displayName; mPacketListener.start(); mPacketListener.start(); } } public void stop() { public void stop() { mPacketListener.stop(); mPacketListener.stop(); mRunning = false; mRunning = false; mDisplayName = null; } } private final class PacketListener extends BlockingSocketReader { private final class PacketListener extends BlockingSocketReader { Loading Loading @@ -133,16 +139,19 @@ public class ConnectivityPacketTracker { @Override @Override protected void onStart() { protected void onStart() { mLog.log(MARK_START); final String msg = TextUtils.isEmpty(mDisplayName) ? MARK_START : String.format(MARK_NAMED_START, mDisplayName); mLog.log(msg); } } @Override @Override protected void onStop() { protected void onStop() { if (mRunning) { String msg = TextUtils.isEmpty(mDisplayName) mLog.log(MARK_STOP); ? MARK_STOP } else { : String.format(MARK_NAMED_STOP, mDisplayName); mLog.log(MARK_STOP + " (packet listener stopped unexpectedly)"); if (!mRunning) msg += " (packet listener stopped unexpectedly)"; } mLog.log(msg); } } @Override @Override Loading services/net/java/android/net/ip/IpManager.java +22 −4 Original line number Original line Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.net.IpPrefix; import android.net.LinkAddress; import android.net.LinkAddress; import android.net.LinkProperties.ProvisioningChange; import android.net.LinkProperties.ProvisioningChange; import android.net.LinkProperties; import android.net.LinkProperties; import android.net.Network; import android.net.ProxyInfo; import android.net.ProxyInfo; import android.net.RouteInfo; import android.net.RouteInfo; import android.net.StaticIpConfiguration; import android.net.StaticIpConfiguration; Loading Loading @@ -348,6 +349,16 @@ public class IpManager extends StateMachine { return this; return this; } } public Builder withNetwork(Network network) { mConfig.mNetwork = network; return this; } public Builder withDisplayName(String displayName) { mConfig.mDisplayName = displayName; return this; } public ProvisioningConfiguration build() { public ProvisioningConfiguration build() { return new ProvisioningConfiguration(mConfig); return new ProvisioningConfiguration(mConfig); } } Loading @@ -362,6 +373,8 @@ public class IpManager extends StateMachine { /* package */ ApfCapabilities mApfCapabilities; /* package */ ApfCapabilities mApfCapabilities; /* package */ int mProvisioningTimeoutMs = DEFAULT_TIMEOUT_MS; /* package */ int mProvisioningTimeoutMs = DEFAULT_TIMEOUT_MS; /* package */ int mIPv6AddrGenMode = INetd.IPV6_ADDR_GEN_MODE_STABLE_PRIVACY; /* package */ int mIPv6AddrGenMode = INetd.IPV6_ADDR_GEN_MODE_STABLE_PRIVACY; /* package */ Network mNetwork = null; /* package */ String mDisplayName = null; public ProvisioningConfiguration() {} // used by Builder public ProvisioningConfiguration() {} // used by Builder Loading @@ -374,6 +387,9 @@ public class IpManager extends StateMachine { mStaticIpConfig = other.mStaticIpConfig; mStaticIpConfig = other.mStaticIpConfig; mApfCapabilities = other.mApfCapabilities; mApfCapabilities = other.mApfCapabilities; mProvisioningTimeoutMs = other.mProvisioningTimeoutMs; mProvisioningTimeoutMs = other.mProvisioningTimeoutMs; mIPv6AddrGenMode = other.mIPv6AddrGenMode; mNetwork = other.mNetwork; mDisplayName = other.mDisplayName; } } @Override @Override Loading @@ -388,6 +404,8 @@ public class IpManager extends StateMachine { .add("mApfCapabilities: " + mApfCapabilities) .add("mApfCapabilities: " + mApfCapabilities) .add("mProvisioningTimeoutMs: " + mProvisioningTimeoutMs) .add("mProvisioningTimeoutMs: " + mProvisioningTimeoutMs) .add("mIPv6AddrGenMode: " + mIPv6AddrGenMode) .add("mIPv6AddrGenMode: " + mIPv6AddrGenMode) .add("mNetwork: " + mNetwork) .add("mDisplayName: " + mDisplayName) .toString(); .toString(); } } Loading Loading @@ -1441,10 +1459,10 @@ public class IpManager extends StateMachine { @Override @Override public void enter() { public void enter() { // Get the Configuration for ApfFilter from Context // Get the Configuration for ApfFilter from Context boolean filter802_3Frames = final boolean filter802_3Frames = mContext.getResources().getBoolean(R.bool.config_apfDrop802_3Frames); mContext.getResources().getBoolean(R.bool.config_apfDrop802_3Frames); int[] ethTypeBlackList = mContext.getResources().getIntArray( final int[] ethTypeBlackList = mContext.getResources().getIntArray( R.array.config_apfEthTypeBlackList); R.array.config_apfEthTypeBlackList); mApfFilter = ApfFilter.maybeCreate(mConfiguration.mApfCapabilities, mNetworkInterface, mApfFilter = ApfFilter.maybeCreate(mConfiguration.mApfCapabilities, mNetworkInterface, Loading @@ -1456,7 +1474,7 @@ public class IpManager extends StateMachine { } } mPacketTracker = createPacketTracker(); mPacketTracker = createPacketTracker(); if (mPacketTracker != null) mPacketTracker.start(); if (mPacketTracker != null) mPacketTracker.start(mConfiguration.mDisplayName); if (mConfiguration.mEnableIPv6 && !startIPv6()) { if (mConfiguration.mEnableIPv6 && !startIPv6()) { doImmediateProvisioningFailure(IpManagerEvent.ERROR_STARTING_IPV6); doImmediateProvisioningFailure(IpManagerEvent.ERROR_STARTING_IPV6); Loading @@ -1470,7 +1488,7 @@ public class IpManager extends StateMachine { return; return; } } InitialConfiguration config = mConfiguration.mInitialConfig; final InitialConfiguration config = mConfiguration.mInitialConfig; if ((config != null) && !applyInitialConfig(config)) { if ((config != null) && !applyInitialConfig(config)) { // TODO introduce a new IpManagerEvent constant to distinguish this error case. // TODO introduce a new IpManagerEvent constant to distinguish this error case. doImmediateProvisioningFailure(IpManagerEvent.ERROR_INVALID_PROVISIONING); doImmediateProvisioningFailure(IpManagerEvent.ERROR_INVALID_PROVISIONING); Loading Loading
services/net/java/android/net/ip/ConnectivityPacketTracker.java +16 −7 Original line number Original line Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.Handler; import android.system.ErrnoException; import android.system.ErrnoException; import android.system.Os; import android.system.Os; import android.system.PacketSocketAddress; import android.system.PacketSocketAddress; import android.text.TextUtils; import android.util.Log; import android.util.Log; import android.util.LocalLog; import android.util.LocalLog; Loading Loading @@ -59,11 +60,14 @@ public class ConnectivityPacketTracker { private static final boolean DBG = false; private static final boolean DBG = false; private static final String MARK_START = "--- START ---"; private static final String MARK_START = "--- START ---"; private static final String MARK_STOP = "--- STOP ---"; private static final String MARK_STOP = "--- STOP ---"; private static final String MARK_NAMED_START = "--- START (%s) ---"; private static final String MARK_NAMED_STOP = "--- STOP (%s) ---"; private final String mTag; private final String mTag; private final LocalLog mLog; private final LocalLog mLog; private final BlockingSocketReader mPacketListener; private final BlockingSocketReader mPacketListener; private boolean mRunning; private boolean mRunning; private String mDisplayName; public ConnectivityPacketTracker(Handler h, NetworkInterface netif, LocalLog log) { public ConnectivityPacketTracker(Handler h, NetworkInterface netif, LocalLog log) { final String ifname; final String ifname; Loading @@ -85,14 +89,16 @@ public class ConnectivityPacketTracker { mPacketListener = new PacketListener(h, ifindex, hwaddr, mtu); mPacketListener = new PacketListener(h, ifindex, hwaddr, mtu); } } public void start() { public void start(String displayName) { mRunning = true; mRunning = true; mDisplayName = displayName; mPacketListener.start(); mPacketListener.start(); } } public void stop() { public void stop() { mPacketListener.stop(); mPacketListener.stop(); mRunning = false; mRunning = false; mDisplayName = null; } } private final class PacketListener extends BlockingSocketReader { private final class PacketListener extends BlockingSocketReader { Loading Loading @@ -133,16 +139,19 @@ public class ConnectivityPacketTracker { @Override @Override protected void onStart() { protected void onStart() { mLog.log(MARK_START); final String msg = TextUtils.isEmpty(mDisplayName) ? MARK_START : String.format(MARK_NAMED_START, mDisplayName); mLog.log(msg); } } @Override @Override protected void onStop() { protected void onStop() { if (mRunning) { String msg = TextUtils.isEmpty(mDisplayName) mLog.log(MARK_STOP); ? MARK_STOP } else { : String.format(MARK_NAMED_STOP, mDisplayName); mLog.log(MARK_STOP + " (packet listener stopped unexpectedly)"); if (!mRunning) msg += " (packet listener stopped unexpectedly)"; } mLog.log(msg); } } @Override @Override Loading
services/net/java/android/net/ip/IpManager.java +22 −4 Original line number Original line Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.net.IpPrefix; import android.net.LinkAddress; import android.net.LinkAddress; import android.net.LinkProperties.ProvisioningChange; import android.net.LinkProperties.ProvisioningChange; import android.net.LinkProperties; import android.net.LinkProperties; import android.net.Network; import android.net.ProxyInfo; import android.net.ProxyInfo; import android.net.RouteInfo; import android.net.RouteInfo; import android.net.StaticIpConfiguration; import android.net.StaticIpConfiguration; Loading Loading @@ -348,6 +349,16 @@ public class IpManager extends StateMachine { return this; return this; } } public Builder withNetwork(Network network) { mConfig.mNetwork = network; return this; } public Builder withDisplayName(String displayName) { mConfig.mDisplayName = displayName; return this; } public ProvisioningConfiguration build() { public ProvisioningConfiguration build() { return new ProvisioningConfiguration(mConfig); return new ProvisioningConfiguration(mConfig); } } Loading @@ -362,6 +373,8 @@ public class IpManager extends StateMachine { /* package */ ApfCapabilities mApfCapabilities; /* package */ ApfCapabilities mApfCapabilities; /* package */ int mProvisioningTimeoutMs = DEFAULT_TIMEOUT_MS; /* package */ int mProvisioningTimeoutMs = DEFAULT_TIMEOUT_MS; /* package */ int mIPv6AddrGenMode = INetd.IPV6_ADDR_GEN_MODE_STABLE_PRIVACY; /* package */ int mIPv6AddrGenMode = INetd.IPV6_ADDR_GEN_MODE_STABLE_PRIVACY; /* package */ Network mNetwork = null; /* package */ String mDisplayName = null; public ProvisioningConfiguration() {} // used by Builder public ProvisioningConfiguration() {} // used by Builder Loading @@ -374,6 +387,9 @@ public class IpManager extends StateMachine { mStaticIpConfig = other.mStaticIpConfig; mStaticIpConfig = other.mStaticIpConfig; mApfCapabilities = other.mApfCapabilities; mApfCapabilities = other.mApfCapabilities; mProvisioningTimeoutMs = other.mProvisioningTimeoutMs; mProvisioningTimeoutMs = other.mProvisioningTimeoutMs; mIPv6AddrGenMode = other.mIPv6AddrGenMode; mNetwork = other.mNetwork; mDisplayName = other.mDisplayName; } } @Override @Override Loading @@ -388,6 +404,8 @@ public class IpManager extends StateMachine { .add("mApfCapabilities: " + mApfCapabilities) .add("mApfCapabilities: " + mApfCapabilities) .add("mProvisioningTimeoutMs: " + mProvisioningTimeoutMs) .add("mProvisioningTimeoutMs: " + mProvisioningTimeoutMs) .add("mIPv6AddrGenMode: " + mIPv6AddrGenMode) .add("mIPv6AddrGenMode: " + mIPv6AddrGenMode) .add("mNetwork: " + mNetwork) .add("mDisplayName: " + mDisplayName) .toString(); .toString(); } } Loading Loading @@ -1441,10 +1459,10 @@ public class IpManager extends StateMachine { @Override @Override public void enter() { public void enter() { // Get the Configuration for ApfFilter from Context // Get the Configuration for ApfFilter from Context boolean filter802_3Frames = final boolean filter802_3Frames = mContext.getResources().getBoolean(R.bool.config_apfDrop802_3Frames); mContext.getResources().getBoolean(R.bool.config_apfDrop802_3Frames); int[] ethTypeBlackList = mContext.getResources().getIntArray( final int[] ethTypeBlackList = mContext.getResources().getIntArray( R.array.config_apfEthTypeBlackList); R.array.config_apfEthTypeBlackList); mApfFilter = ApfFilter.maybeCreate(mConfiguration.mApfCapabilities, mNetworkInterface, mApfFilter = ApfFilter.maybeCreate(mConfiguration.mApfCapabilities, mNetworkInterface, Loading @@ -1456,7 +1474,7 @@ public class IpManager extends StateMachine { } } mPacketTracker = createPacketTracker(); mPacketTracker = createPacketTracker(); if (mPacketTracker != null) mPacketTracker.start(); if (mPacketTracker != null) mPacketTracker.start(mConfiguration.mDisplayName); if (mConfiguration.mEnableIPv6 && !startIPv6()) { if (mConfiguration.mEnableIPv6 && !startIPv6()) { doImmediateProvisioningFailure(IpManagerEvent.ERROR_STARTING_IPV6); doImmediateProvisioningFailure(IpManagerEvent.ERROR_STARTING_IPV6); Loading @@ -1470,7 +1488,7 @@ public class IpManager extends StateMachine { return; return; } } InitialConfiguration config = mConfiguration.mInitialConfig; final InitialConfiguration config = mConfiguration.mInitialConfig; if ((config != null) && !applyInitialConfig(config)) { if ((config != null) && !applyInitialConfig(config)) { // TODO introduce a new IpManagerEvent constant to distinguish this error case. // TODO introduce a new IpManagerEvent constant to distinguish this error case. doImmediateProvisioningFailure(IpManagerEvent.ERROR_INVALID_PROVISIONING); doImmediateProvisioningFailure(IpManagerEvent.ERROR_INVALID_PROVISIONING); Loading