Merge "Replace InterfaceParams with ifName in DhcpServer"

This commit is contained in:
Remi NGUYEN VAN
2018-12-18 03:38:24 +00:00
committed by Gerrit Code Review
5 changed files with 13 additions and 25 deletions

View File

@@ -39,7 +39,6 @@ import android.annotation.Nullable;
import android.net.MacAddress; import android.net.MacAddress;
import android.net.NetworkUtils; import android.net.NetworkUtils;
import android.net.TrafficStats; import android.net.TrafficStats;
import android.net.util.InterfaceParams;
import android.net.util.SharedLog; import android.net.util.SharedLog;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
@@ -85,7 +84,7 @@ public class DhcpServer {
@NonNull @NonNull
private final ServerHandler mHandler; private final ServerHandler mHandler;
@NonNull @NonNull
private final InterfaceParams mIface; private final String mIfName;
@NonNull @NonNull
private final DhcpLeaseRepository mLeaseRepo; private final DhcpLeaseRepository mLeaseRepo;
@NonNull @NonNull
@@ -161,20 +160,20 @@ public class DhcpServer {
} }
} }
public DhcpServer(@NonNull Looper looper, @NonNull InterfaceParams iface, public DhcpServer(@NonNull Looper looper, @NonNull String ifName,
@NonNull DhcpServingParams params, @NonNull SharedLog log) { @NonNull DhcpServingParams params, @NonNull SharedLog log) {
this(looper, iface, params, log, null); this(looper, ifName, params, log, null);
} }
@VisibleForTesting @VisibleForTesting
DhcpServer(@NonNull Looper looper, @NonNull InterfaceParams iface, DhcpServer(@NonNull Looper looper, @NonNull String ifName,
@NonNull DhcpServingParams params, @NonNull SharedLog log, @NonNull DhcpServingParams params, @NonNull SharedLog log,
@Nullable Dependencies deps) { @Nullable Dependencies deps) {
if (deps == null) { if (deps == null) {
deps = new DependenciesImpl(); deps = new DependenciesImpl();
} }
mHandler = new ServerHandler(looper); mHandler = new ServerHandler(looper);
mIface = iface; mIfName = ifName;
mServingParams = params; mServingParams = params;
mLog = log; mLog = log;
mDeps = deps; mDeps = deps;
@@ -444,7 +443,7 @@ public class DhcpServer {
private boolean addArpEntry(@NonNull MacAddress macAddr, @NonNull Inet4Address inetAddr) { private boolean addArpEntry(@NonNull MacAddress macAddr, @NonNull Inet4Address inetAddr) {
try { try {
mDeps.addArpEntry(inetAddr, macAddr, mIface.name, mSocket); mDeps.addArpEntry(inetAddr, macAddr, mIfName, mSocket);
return true; return true;
} catch (IOException e) { } catch (IOException e) {
mLog.e("Error adding client to ARP table", e); mLog.e("Error adding client to ARP table", e);
@@ -526,7 +525,7 @@ public class DhcpServer {
// SO_BINDTODEVICE actually takes a string. This works because the first member // SO_BINDTODEVICE actually takes a string. This works because the first member
// of struct ifreq is a NULL-terminated interface name. // of struct ifreq is a NULL-terminated interface name.
// TODO: add a setsockoptString() // TODO: add a setsockoptString()
Os.setsockoptIfreq(mSocket, SOL_SOCKET, SO_BINDTODEVICE, mIface.name); Os.setsockoptIfreq(mSocket, SOL_SOCKET, SO_BINDTODEVICE, mIfName);
Os.setsockoptInt(mSocket, SOL_SOCKET, SO_BROADCAST, 1); Os.setsockoptInt(mSocket, SOL_SOCKET, SO_BROADCAST, 1);
Os.bind(mSocket, Inet4Address.ANY, DHCP_SERVER); Os.bind(mSocket, Inet4Address.ANY, DHCP_SERVER);
NetworkUtils.protectFromVpn(mSocket); NetworkUtils.protectFromVpn(mSocket);

View File

@@ -138,9 +138,9 @@ public class IpServer extends StateMachine {
return NetdService.getInstance(); return NetdService.getInstance();
} }
public DhcpServer makeDhcpServer(Looper looper, InterfaceParams iface, public DhcpServer makeDhcpServer(Looper looper, String ifName,
DhcpServingParams params, SharedLog log) { DhcpServingParams params, SharedLog log) {
return new DhcpServer(looper, iface, params, log); return new DhcpServer(looper, ifName, params, log);
} }
} }
@@ -256,12 +256,6 @@ public class IpServer extends StateMachine {
if (mUsingLegacyDhcp) { if (mUsingLegacyDhcp) {
return true; return true;
} }
final InterfaceParams ifaceParams = mDeps.getInterfaceParams(mIfaceName);
if (ifaceParams == null) {
Log.e(TAG, "Failed to find interface params for DHCPv4");
return false;
}
final DhcpServingParams params; final DhcpServingParams params;
try { try {
params = new DhcpServingParams.Builder() params = new DhcpServingParams.Builder()
@@ -277,7 +271,7 @@ public class IpServer extends StateMachine {
return false; return false;
} }
mDhcpServer = mDeps.makeDhcpServer(getHandler().getLooper(), ifaceParams, params, mDhcpServer = mDeps.makeDhcpServer(getHandler().getLooper(), mIfaceName, params,
mLog.forSubComponent("DHCP")); mLog.forSubComponent("DHCP"));
mDhcpServer.start(); mDhcpServer.start();
return true; return true;

View File

@@ -25,7 +25,6 @@ import static android.net.dhcp.DhcpPacket.INADDR_BROADCAST;
import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.assertNull;
import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
@@ -48,7 +47,6 @@ import android.net.dhcp.DhcpLeaseRepository.InvalidAddressException;
import android.net.dhcp.DhcpLeaseRepository.OutOfAddressesException; import android.net.dhcp.DhcpLeaseRepository.OutOfAddressesException;
import android.net.dhcp.DhcpServer.Clock; import android.net.dhcp.DhcpServer.Clock;
import android.net.dhcp.DhcpServer.Dependencies; import android.net.dhcp.DhcpServer.Dependencies;
import android.net.util.InterfaceParams;
import android.net.util.SharedLog; import android.net.util.SharedLog;
import android.os.test.TestLooper; import android.os.test.TestLooper;
import android.support.test.filters.SmallTest; import android.support.test.filters.SmallTest;
@@ -74,9 +72,6 @@ import java.util.Set;
public class DhcpServerTest { public class DhcpServerTest {
private static final String PROP_DEXMAKER_SHARE_CLASSLOADER = "dexmaker.share_classloader"; private static final String PROP_DEXMAKER_SHARE_CLASSLOADER = "dexmaker.share_classloader";
private static final String TEST_IFACE = "testiface"; private static final String TEST_IFACE = "testiface";
private static final MacAddress TEST_IFACE_MAC = MacAddress.fromString("11:22:33:44:55:66");
private static final InterfaceParams TEST_IFACEPARAMS =
new InterfaceParams(TEST_IFACE, 1, TEST_IFACE_MAC);
private static final Inet4Address TEST_SERVER_ADDR = parseAddr("192.168.0.2"); private static final Inet4Address TEST_SERVER_ADDR = parseAddr("192.168.0.2");
private static final LinkAddress TEST_SERVER_LINKADDR = new LinkAddress(TEST_SERVER_ADDR, 20); private static final LinkAddress TEST_SERVER_LINKADDR = new LinkAddress(TEST_SERVER_ADDR, 20);
@@ -149,7 +144,7 @@ public class DhcpServerTest {
.build(); .build();
mLooper = new TestLooper(); mLooper = new TestLooper();
mServer = new DhcpServer(mLooper.getLooper(), TEST_IFACEPARAMS, servingParams, mServer = new DhcpServer(mLooper.getLooper(), TEST_IFACE, servingParams,
new SharedLog(DhcpServerTest.class.getSimpleName()), mDeps); new SharedLog(DhcpServerTest.class.getSimpleName()), mDeps);
mServer.start(); mServer.start();

View File

@@ -404,7 +404,7 @@ public class IpServerTest {
private void assertDhcpStarted(IpPrefix expectedPrefix) { private void assertDhcpStarted(IpPrefix expectedPrefix) {
verify(mDependencies, times(1)).makeDhcpServer( verify(mDependencies, times(1)).makeDhcpServer(
eq(mLooper.getLooper()), eq(TEST_IFACE_PARAMS), any(), eq(mSharedLog)); eq(mLooper.getLooper()), eq(IFACE_NAME), any(), eq(mSharedLog));
verify(mDhcpServer, times(1)).start(); verify(mDhcpServer, times(1)).start();
final DhcpServingParams params = mDhcpParamsCaptor.getValue(); final DhcpServingParams params = mDhcpParamsCaptor.getValue();
// Last address byte is random // Last address byte is random

View File

@@ -240,7 +240,7 @@ public class TetheringTest {
} }
@Override @Override
public DhcpServer makeDhcpServer(Looper looper, InterfaceParams iface, public DhcpServer makeDhcpServer(Looper looper, String ifName,
DhcpServingParams params, SharedLog log) { DhcpServingParams params, SharedLog log) {
return mDhcpServer; return mDhcpServer;
} }