Search in sources :

Example 41 with Inet4Address

use of java.net.Inet4Address in project android_frameworks_base by DirtyUnicorns.

the class DhcpAckPacket method toString.

public String toString() {
    String s = super.toString();
    String dnsServers = " DNS servers: ";
    for (Inet4Address dnsServer : mDnsServers) {
        dnsServers += dnsServer.toString() + " ";
    }
    return s + " ACK: your new IP " + mYourIp + ", netmask " + mSubnetMask + ", gateways " + mGateways + dnsServers + ", lease time " + mLeaseTime;
}
Also used : Inet4Address(java.net.Inet4Address)

Example 42 with Inet4Address

use of java.net.Inet4Address 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 43 with Inet4Address

use of java.net.Inet4Address 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 44 with Inet4Address

use of java.net.Inet4Address in project android_frameworks_base by DirtyUnicorns.

the class DhcpResults method setIpAddress.

// Utils for jni population - false on success
// Not part of the superclass because they're only used by the JNI iterface to the DHCP daemon.
public boolean setIpAddress(String addrString, int prefixLength) {
    try {
        Inet4Address addr = (Inet4Address) NetworkUtils.numericToInetAddress(addrString);
        ipAddress = new LinkAddress(addr, prefixLength);
    } catch (IllegalArgumentException | ClassCastException e) {
        Log.e(TAG, "setIpAddress failed with addrString " + addrString + "/" + prefixLength);
        return true;
    }
    return false;
}
Also used : Inet4Address(java.net.Inet4Address)

Example 45 with Inet4Address

use of java.net.Inet4Address in project android_frameworks_base by DirtyUnicorns.

the class KeepalivePacketData method nattKeepalivePacket.

/**
     * Creates an IPsec NAT-T keepalive packet with the specified parameters.
     */
public static KeepalivePacketData nattKeepalivePacket(InetAddress srcAddress, int srcPort, InetAddress dstAddress, int dstPort) throws InvalidPacketException {
    if (!(srcAddress instanceof Inet4Address) || !(dstAddress instanceof Inet4Address)) {
        throw new InvalidPacketException(ERROR_INVALID_IP_ADDRESS);
    }
    if (dstPort != NATT_PORT) {
        throw new InvalidPacketException(ERROR_INVALID_PORT);
    }
    int length = IPV4_HEADER_LENGTH + UDP_HEADER_LENGTH + 1;
    ByteBuffer buf = ByteBuffer.allocate(length);
    buf.order(ByteOrder.BIG_ENDIAN);
    // IP version and TOS
    buf.putShort((short) 0x4500);
    buf.putShort((short) length);
    // ID, flags, offset
    buf.putInt(0);
    // TTL
    buf.put((byte) 64);
    buf.put((byte) OsConstants.IPPROTO_UDP);
    int ipChecksumOffset = buf.position();
    // IP checksum
    buf.putShort((short) 0);
    buf.put(srcAddress.getAddress());
    buf.put(dstAddress.getAddress());
    buf.putShort((short) srcPort);
    buf.putShort((short) dstPort);
    // UDP length
    buf.putShort((short) (length - 20));
    int udpChecksumOffset = buf.position();
    // UDP checksum
    buf.putShort((short) 0);
    // NAT-T keepalive
    buf.put((byte) 0xff);
    buf.putShort(ipChecksumOffset, IpUtils.ipChecksum(buf, 0));
    buf.putShort(udpChecksumOffset, IpUtils.udpChecksum(buf, 0, IPV4_HEADER_LENGTH));
    return new KeepalivePacketData(srcAddress, srcPort, dstAddress, dstPort, buf.array());
}
Also used : Inet4Address(java.net.Inet4Address) ByteBuffer(java.nio.ByteBuffer)

Aggregations

Inet4Address (java.net.Inet4Address)184 InetAddress (java.net.InetAddress)85 Inet6Address (java.net.Inet6Address)45 NetworkInterface (java.net.NetworkInterface)39 UnknownHostException (java.net.UnknownHostException)28 LinkAddress (android.net.LinkAddress)24 SocketException (java.net.SocketException)23 IOException (java.io.IOException)22 ArrayList (java.util.ArrayList)19 InterfaceAddress (java.net.InterfaceAddress)17 ByteBuffer (java.nio.ByteBuffer)17 RouteInfo (android.net.RouteInfo)12 LinkProperties (android.net.LinkProperties)7 InetSocketAddress (java.net.InetSocketAddress)6 Test (org.junit.Test)6 WifiDisplay (android.hardware.display.WifiDisplay)5 WifiDisplaySessionInfo (android.hardware.display.WifiDisplaySessionInfo)5 DhcpResults (android.net.DhcpResults)5 IpConfiguration (android.net.IpConfiguration)5 IpAssignment (android.net.IpConfiguration.IpAssignment)5