Loading services/core/java/com/android/server/NetworkManagementService.java +14 −2 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ import java.net.SocketException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; import java.util.StringTokenizer; Loading Loading @@ -1022,6 +1023,15 @@ public class NetworkManagementService extends INetworkManagementService.Stub } } private List<InterfaceAddress> excludeLinkLocal(List<InterfaceAddress> addresses) { ArrayList<InterfaceAddress> filtered = new ArrayList<InterfaceAddress>(addresses.size()); for (InterfaceAddress ia : addresses) { if (!ia.getAddress().isLinkLocalAddress()) filtered.add(ia); } return filtered; } private void modifyNat(String action, String internalInterface, String externalInterface) throws SocketException { final Command cmd = new Command("nat", action, internalInterface, externalInterface); Loading @@ -1031,8 +1041,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub if (internalNetworkInterface == null) { cmd.appendArg("0"); } else { Collection<InterfaceAddress> interfaceAddresses = internalNetworkInterface .getInterfaceAddresses(); // Don't touch link-local routes, as link-local addresses aren't routable, // kernel creates link-local routes on all interfaces automatically List<InterfaceAddress> interfaceAddresses = excludeLinkLocal( internalNetworkInterface.getInterfaceAddresses()); cmd.appendArg(interfaceAddresses.size()); for (InterfaceAddress ia : interfaceAddresses) { InetAddress addr = NetworkUtils.getNetworkPart( Loading Loading
services/core/java/com/android/server/NetworkManagementService.java +14 −2 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ import java.net.SocketException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; import java.util.StringTokenizer; Loading Loading @@ -1022,6 +1023,15 @@ public class NetworkManagementService extends INetworkManagementService.Stub } } private List<InterfaceAddress> excludeLinkLocal(List<InterfaceAddress> addresses) { ArrayList<InterfaceAddress> filtered = new ArrayList<InterfaceAddress>(addresses.size()); for (InterfaceAddress ia : addresses) { if (!ia.getAddress().isLinkLocalAddress()) filtered.add(ia); } return filtered; } private void modifyNat(String action, String internalInterface, String externalInterface) throws SocketException { final Command cmd = new Command("nat", action, internalInterface, externalInterface); Loading @@ -1031,8 +1041,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub if (internalNetworkInterface == null) { cmd.appendArg("0"); } else { Collection<InterfaceAddress> interfaceAddresses = internalNetworkInterface .getInterfaceAddresses(); // Don't touch link-local routes, as link-local addresses aren't routable, // kernel creates link-local routes on all interfaces automatically List<InterfaceAddress> interfaceAddresses = excludeLinkLocal( internalNetworkInterface.getInterfaceAddresses()); cmd.appendArg(interfaceAddresses.size()); for (InterfaceAddress ia : interfaceAddresses) { InetAddress addr = NetworkUtils.getNetworkPart( Loading