Как я могу вызвать getsockopt в Java, чтобы получить SO_ORIGINAL_DST

Кто-нибудь знает, существует ли существующая библиотека, которая позволит мне сделать вызов getsockopt, чтобы получить IP-адрес назначения для сокета, который iptables перенаправил через мое приложение Java?

Похожий вопрос в списке рассылки Netty, без ответа.

Вызов в c будет выглядеть примерно так:

getsockopt(ctx->client.fd, SOL_IP, 
    SO_ORIGINAL_DST, &SANY_ADDR(addr), &SANY_LEN(addr))

Также приветствуется пример того, как это сделать с помощью JNI.


person Jamie McCrindle    schedule 08.03.2012    source источник


Ответы (1)


Вы не можете сделать это в Java. Вы могли бы сделать это в JNI точно так, как вы написали, если бы вы могли получить FD сокета, который находится в SocketImpl из Socket.

person user207421    schedule 09.03.2012
comment
@downvoter Если вы считаете, что это можно сделать на Java без JNI, поделитесь с нами своим решением, чтобы его можно было прокомментировать, проголосовать и т. д. - person user207421; 21.03.2014