private void parseDstAddr()

in zuul-core/src/main/java/com/netflix/netty/common/proxyprotocol/HAProxyMessageChannelHandler.java [116:153]


    private void parseDstAddr(HAProxyMessage hapm, Channel channel) {
        String destinationAddress = hapm.destinationAddress();
        if (destinationAddress != null) {
            channel.attr(SourceAddressChannelHandler.ATTR_LOCAL_ADDRESS).set(destinationAddress);

            SocketAddress dstAddr;
            switch (hapm.proxiedProtocol()) {
                case UNKNOWN:
                    throw new IllegalArgumentException("unknown proxy protocol" + destinationAddress);
                case TCP4:
                case TCP6:
                    InetSocketAddress inetAddr =
                            new InetSocketAddress(InetAddresses.forString(destinationAddress), hapm.destinationPort());
                    dstAddr = inetAddr;
                    // set ppv2 attr explicitly because ATTR_LOCAL_ADDR could be non ppv2
                    channel.attr(SourceAddressChannelHandler.ATTR_PROXY_PROTOCOL_DESTINATION_ADDRESS)
                            .set(inetAddr);
                    Attrs attrs = channel.attr(Server.CONN_DIMENSIONS).get();
                    if (inetAddr.getAddress() instanceof Inet4Address) {
                        HAPM_DEST_IP_VERSION.put(attrs, "v4");
                    } else if (inetAddr.getAddress() instanceof Inet6Address) {
                        HAPM_DEST_IP_VERSION.put(attrs, "v6");
                    } else {
                        HAPM_DEST_IP_VERSION.put(attrs, "unknown");
                    }
                    HAPM_DEST_PORT.put(attrs, hapm.destinationPort());
                    break;
                case UNIX_STREAM: // TODO: implement
                case UDP4:
                case UDP6:
                case UNIX_DGRAM:
                    throw new IllegalArgumentException("unknown proxy protocol" + destinationAddress);
                default:
                    throw new AssertionError(hapm.proxiedProtocol());
            }
            channel.attr(SourceAddressChannelHandler.ATTR_LOCAL_ADDR).set(dstAddr);
        }
    }