Example usage for com.google.common.net InetAddresses is6to4Address

List of usage examples for com.google.common.net InetAddresses is6to4Address

Introduction

In this page you can find the example usage for com.google.common.net InetAddresses is6to4Address.

Prototype

public static boolean is6to4Address(Inet6Address ip) 

Source Link

Document

Evaluates whether the argument is a 6to4 address.

Usage

From source file:org.n52.shetland.ogc.ows.service.OwsServiceRequestContext.java

private static IPAddress getIPAddress(HttpServletRequest req) {
    InetAddress addr = null;/*from   w  w w  .ja v a  2 s. c o m*/
    String addrAsString = req.getRemoteAddr();
    try {
        addr = InetAddresses.forString(addrAsString);
    } catch (IllegalArgumentException e) {
        LOG.warn("Ignoring invalid IP address: " + req.getRemoteAddr(), e);
    }

    if (addr instanceof Inet4Address) {
        Inet4Address inet4Address = (Inet4Address) addr;
        return new IPAddress(inet4Address);
    } else if (addr instanceof Inet6Address) {
        Inet6Address inet6Address = (Inet6Address) addr;
        // embedded form
        if (InetAddresses.isCompatIPv4Address(inet6Address)) {
            return new IPAddress(InetAddresses.getCompatIPv4Address(inet6Address));
            // mapped form
        } else if (InetAddresses.isMappedIPv4Address(addrAsString)) {
            try {
                return new IPAddress(InetAddress.getByName(addrAsString).getAddress());
            } catch (UnknownHostException e) {
                LOG.warn("Ignoring invalid IPv4-mapped-IPv6 address: " + req.getRemoteAddr(), e);
            }
            // 6to4 addresses
        } else if (InetAddresses.is6to4Address(inet6Address)) {
            return new IPAddress(InetAddresses.get6to4IPv4Address(inet6Address));
        } else if (InetAddresses.toAddrString(addr).equals("::1")) {
            // ::1 is not handled by InetAddresses.isCompatIPv4Address()
            return new IPAddress("127.0.0.1");
        } else {
            LOG.warn("Ignoring not v4 compatible IP address: {}", req.getRemoteAddr());
        }
    } else {
        LOG.warn("Ignoring unknown InetAddress: {}", addr);
    }
    return null;
}