Search in sources :

Example 56 with LinkAddress

use of android.net.LinkAddress in project android_frameworks_base by DirtyUnicorns.

the class IpManager method clearIPv4Address.

private void clearIPv4Address() {
    try {
        final InterfaceConfiguration ifcg = new InterfaceConfiguration();
        ifcg.setLinkAddress(new LinkAddress("0.0.0.0/0"));
        mNwService.setInterfaceConfig(mInterfaceName, ifcg);
    } catch (IllegalStateException | RemoteException e) {
        Log.e(mTag, "ALERT: Failed to clear IPv4 address on interface " + mInterfaceName, e);
    }
}
Also used : LinkAddress(android.net.LinkAddress) RemoteException(android.os.RemoteException) InterfaceConfiguration(android.net.InterfaceConfiguration)

Example 57 with LinkAddress

use of android.net.LinkAddress in project android_frameworks_base by DirtyUnicorns.

the class DhcpPacket method toDhcpResults.

/**
     *  Construct a DhcpResults object from a DHCP reply packet.
     */
public DhcpResults toDhcpResults() {
    Inet4Address ipAddress = mYourIp;
    if (ipAddress.equals(Inet4Address.ANY)) {
        ipAddress = mClientIp;
        if (ipAddress.equals(Inet4Address.ANY)) {
            return null;
        }
    }
    int prefixLength;
    if (mSubnetMask != null) {
        try {
            prefixLength = NetworkUtils.netmaskToPrefixLength(mSubnetMask);
        } catch (IllegalArgumentException e) {
            // Non-contiguous netmask.
            return null;
        }
    } else {
        prefixLength = NetworkUtils.getImplicitNetmask(ipAddress);
    }
    DhcpResults results = new DhcpResults();
    try {
        results.ipAddress = new LinkAddress(ipAddress, prefixLength);
    } catch (IllegalArgumentException e) {
        return null;
    }
    if (mGateways.size() > 0) {
        results.gateway = mGateways.get(0);
    }
    results.dnsServers.addAll(mDnsServers);
    results.domains = mDomainName;
    results.serverAddress = mServerIdentifier;
    results.vendorInfo = mVendorInfo;
    results.leaseDuration = (mLeaseTime != null) ? mLeaseTime : INFINITE_LEASE;
    results.mtu = (mMtu != null && MIN_MTU <= mMtu && mMtu <= MAX_MTU) ? mMtu : 0;
    return results;
}
Also used : LinkAddress(android.net.LinkAddress) Inet4Address(java.net.Inet4Address) DhcpResults(android.net.DhcpResults)

Example 58 with LinkAddress

use of android.net.LinkAddress in project android_frameworks_base by DirtyUnicorns.

the class LinkAddressTest method testIsGlobalPreferred.

public void testIsGlobalPreferred() {
    LinkAddress l;
    l = new LinkAddress(V4_ADDRESS, 32, 0, RT_SCOPE_UNIVERSE);
    assertGlobalPreferred(l, "v4,global,noflags");
    l = new LinkAddress("10.10.1.7/23", 0, RT_SCOPE_UNIVERSE);
    assertGlobalPreferred(l, "v4-rfc1918,global,noflags");
    l = new LinkAddress("10.10.1.7/23", 0, RT_SCOPE_SITE);
    assertNotGlobalPreferred(l, "v4-rfc1918,site-local,noflags");
    l = new LinkAddress("127.0.0.7/8", 0, RT_SCOPE_HOST);
    assertNotGlobalPreferred(l, "v4-localhost,node-local,noflags");
    l = new LinkAddress(V6_ADDRESS, 64, 0, RT_SCOPE_UNIVERSE);
    assertGlobalPreferred(l, "v6,global,noflags");
    l = new LinkAddress(V6_ADDRESS, 64, IFA_F_PERMANENT, RT_SCOPE_UNIVERSE);
    assertGlobalPreferred(l, "v6,global,permanent");
    // IPv6 ULAs are not acceptable "global preferred" addresses.
    l = new LinkAddress("fc12::1/64", 0, RT_SCOPE_UNIVERSE);
    assertNotGlobalPreferred(l, "v6,ula1,noflags");
    l = new LinkAddress("fd34::1/64", 0, RT_SCOPE_UNIVERSE);
    assertNotGlobalPreferred(l, "v6,ula2,noflags");
    l = new LinkAddress(V6_ADDRESS, 64, IFA_F_TEMPORARY, RT_SCOPE_UNIVERSE);
    assertGlobalPreferred(l, "v6,global,tempaddr");
    l = new LinkAddress(V6_ADDRESS, 64, (IFA_F_TEMPORARY | IFA_F_DADFAILED), RT_SCOPE_UNIVERSE);
    assertNotGlobalPreferred(l, "v6,global,tempaddr+dadfailed");
    l = new LinkAddress(V6_ADDRESS, 64, (IFA_F_TEMPORARY | IFA_F_DEPRECATED), RT_SCOPE_UNIVERSE);
    assertNotGlobalPreferred(l, "v6,global,tempaddr+deprecated");
    l = new LinkAddress(V6_ADDRESS, 64, IFA_F_TEMPORARY, RT_SCOPE_SITE);
    assertNotGlobalPreferred(l, "v6,site-local,tempaddr");
    l = new LinkAddress(V6_ADDRESS, 64, IFA_F_TEMPORARY, RT_SCOPE_LINK);
    assertNotGlobalPreferred(l, "v6,link-local,tempaddr");
    l = new LinkAddress(V6_ADDRESS, 64, IFA_F_TEMPORARY, RT_SCOPE_HOST);
    assertNotGlobalPreferred(l, "v6,node-local,tempaddr");
    l = new LinkAddress("::1/128", IFA_F_PERMANENT, RT_SCOPE_HOST);
    assertNotGlobalPreferred(l, "v6-localhost,node-local,permanent");
    l = new LinkAddress(V6_ADDRESS, 64, (IFA_F_TEMPORARY | IFA_F_TENTATIVE), RT_SCOPE_UNIVERSE);
    assertNotGlobalPreferred(l, "v6,global,tempaddr+tentative");
    l = new LinkAddress(V6_ADDRESS, 64, (IFA_F_TEMPORARY | IFA_F_TENTATIVE | IFA_F_OPTIMISTIC), RT_SCOPE_UNIVERSE);
    assertGlobalPreferred(l, "v6,global,tempaddr+optimistic");
}
Also used : LinkAddress(android.net.LinkAddress)

Example 59 with LinkAddress

use of android.net.LinkAddress in project android_frameworks_base by DirtyUnicorns.

the class LinkAddressTest method testConstructors.

public void testConstructors() throws SocketException {
    LinkAddress address;
    // Valid addresses work as expected.
    address = new LinkAddress(V4_ADDRESS, 25);
    assertEquals(V4_ADDRESS, address.getAddress());
    assertEquals(25, address.getPrefixLength());
    assertEquals(0, address.getFlags());
    assertEquals(RT_SCOPE_UNIVERSE, address.getScope());
    address = new LinkAddress(V6_ADDRESS, 127);
    assertEquals(V6_ADDRESS, address.getAddress());
    assertEquals(127, address.getPrefixLength());
    assertEquals(0, address.getFlags());
    assertEquals(RT_SCOPE_UNIVERSE, address.getScope());
    // Nonsensical flags/scopes or combinations thereof are acceptable.
    address = new LinkAddress(V6 + "/64", IFA_F_DEPRECATED | IFA_F_PERMANENT, RT_SCOPE_LINK);
    assertEquals(V6_ADDRESS, address.getAddress());
    assertEquals(64, address.getPrefixLength());
    assertEquals(IFA_F_DEPRECATED | IFA_F_PERMANENT, address.getFlags());
    assertEquals(RT_SCOPE_LINK, address.getScope());
    address = new LinkAddress(V4 + "/23", 123, 456);
    assertEquals(V4_ADDRESS, address.getAddress());
    assertEquals(23, address.getPrefixLength());
    assertEquals(123, address.getFlags());
    assertEquals(456, address.getScope());
    // InterfaceAddress doesn't have a constructor. Fetch some from an interface.
    List<InterfaceAddress> addrs = NetworkInterface.getByName("lo").getInterfaceAddresses();
    // We expect to find 127.0.0.1/8 and ::1/128, in any order.
    LinkAddress ipv4Loopback, ipv6Loopback;
    assertEquals(2, addrs.size());
    if (addrs.get(0).getAddress() instanceof Inet4Address) {
        ipv4Loopback = new LinkAddress(addrs.get(0));
        ipv6Loopback = new LinkAddress(addrs.get(1));
    } else {
        ipv4Loopback = new LinkAddress(addrs.get(1));
        ipv6Loopback = new LinkAddress(addrs.get(0));
    }
    assertEquals(NetworkUtils.numericToInetAddress("127.0.0.1"), ipv4Loopback.getAddress());
    assertEquals(8, ipv4Loopback.getPrefixLength());
    assertEquals(NetworkUtils.numericToInetAddress("::1"), ipv6Loopback.getAddress());
    assertEquals(128, ipv6Loopback.getPrefixLength());
    // Null addresses are rejected.
    try {
        address = new LinkAddress(null, 24);
        fail("Null InetAddress should cause IllegalArgumentException");
    } catch (IllegalArgumentException expected) {
    }
    try {
        address = new LinkAddress((String) null, IFA_F_PERMANENT, RT_SCOPE_UNIVERSE);
        fail("Null string should cause IllegalArgumentException");
    } catch (IllegalArgumentException expected) {
    }
    try {
        address = new LinkAddress((InterfaceAddress) null);
        fail("Null string should cause NullPointerException");
    } catch (NullPointerException expected) {
    }
    // Invalid prefix lengths are rejected.
    try {
        address = new LinkAddress(V4_ADDRESS, -1);
        fail("Negative IPv4 prefix length should cause IllegalArgumentException");
    } catch (IllegalArgumentException expected) {
    }
    try {
        address = new LinkAddress(V6_ADDRESS, -1);
        fail("Negative IPv6 prefix length should cause IllegalArgumentException");
    } catch (IllegalArgumentException expected) {
    }
    try {
        address = new LinkAddress(V4_ADDRESS, 33);
        fail("/33 IPv4 prefix length should cause IllegalArgumentException");
    } catch (IllegalArgumentException expected) {
    }
    try {
        address = new LinkAddress(V4 + "/33", IFA_F_PERMANENT, RT_SCOPE_UNIVERSE);
        fail("/33 IPv4 prefix length should cause IllegalArgumentException");
    } catch (IllegalArgumentException expected) {
    }
    try {
        address = new LinkAddress(V6_ADDRESS, 129, IFA_F_PERMANENT, RT_SCOPE_UNIVERSE);
        fail("/129 IPv6 prefix length should cause IllegalArgumentException");
    } catch (IllegalArgumentException expected) {
    }
    try {
        address = new LinkAddress(V6 + "/129", IFA_F_PERMANENT, RT_SCOPE_UNIVERSE);
        fail("/129 IPv6 prefix length should cause IllegalArgumentException");
    } catch (IllegalArgumentException expected) {
    }
    // Multicast addresses are rejected.
    try {
        address = new LinkAddress("224.0.0.2/32");
        fail("IPv4 multicast address should cause IllegalArgumentException");
    } catch (IllegalArgumentException expected) {
    }
    try {
        address = new LinkAddress("ff02::1/128");
        fail("IPv6 multicast address should cause IllegalArgumentException");
    } catch (IllegalArgumentException expected) {
    }
}
Also used : LinkAddress(android.net.LinkAddress) Inet4Address(java.net.Inet4Address) InterfaceAddress(java.net.InterfaceAddress)

Example 60 with LinkAddress

use of android.net.LinkAddress in project android_frameworks_base by DirtyUnicorns.

the class LinkAddressTest method testHashCode.

public void testHashCode() {
    LinkAddress l;
    l = new LinkAddress(V4_ADDRESS, 23);
    assertEquals(-982787, l.hashCode());
    l = new LinkAddress(V4_ADDRESS, 23, 0, RT_SCOPE_HOST);
    assertEquals(-971865, l.hashCode());
    l = new LinkAddress(V4_ADDRESS, 27);
    assertEquals(-982743, l.hashCode());
    l = new LinkAddress(V6_ADDRESS, 64);
    assertEquals(1076522926, l.hashCode());
    l = new LinkAddress(V6_ADDRESS, 128);
    assertEquals(1076523630, l.hashCode());
    l = new LinkAddress(V6_ADDRESS, 128, IFA_F_TENTATIVE, RT_SCOPE_UNIVERSE);
    assertEquals(1076524846, l.hashCode());
}
Also used : LinkAddress(android.net.LinkAddress)

Aggregations

LinkAddress (android.net.LinkAddress)210 LinkProperties (android.net.LinkProperties)70 InetAddress (java.net.InetAddress)70 RouteInfo (android.net.RouteInfo)52 SmallTest (android.test.suitebuilder.annotation.SmallTest)29 RemoteException (android.os.RemoteException)27 Inet4Address (java.net.Inet4Address)24 InterfaceConfiguration (android.net.InterfaceConfiguration)22 Inet6Address (java.net.Inet6Address)21 IpPrefix (android.net.IpPrefix)20 StaticIpConfiguration (android.net.StaticIpConfiguration)20 IOException (java.io.IOException)15 ApfFilter (android.net.apf.ApfFilter)12 ByteBuffer (java.nio.ByteBuffer)12 ProxyInfo (android.net.ProxyInfo)10 VpnConfig (com.android.internal.net.VpnConfig)10 DhcpResults (android.net.DhcpResults)9 LargeTest (android.test.suitebuilder.annotation.LargeTest)9 Command (com.android.server.NativeDaemonConnector.Command)9 EOFException (java.io.EOFException)6