Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 31 Oct 2014 13:20:58 +0330
From:      Hooman Fazaeli <hoomanfazaeli@gmail.com>
To:        "freebsd-net@freebsd.org" <freebsd-net@freebsd.org>
Subject:   transparent udp proxy
Message-ID:  <54535B82.405@gmail.com>

next in thread | raw e-mail | index | archive | help
Hi,

I my setup, I use a fwd rule to forward all udp traffic to my local proxy:

ipfw add 10 fwd localhost,7000 udp from any to any recv em1

The proxy needs to know the original destination address of forwarded datagrams, but
there seems to be no way to obtain that address.

Using recvmsg with IP_RECVDSTADDR does not help because it returns next-hop address
instead of original destination. This is because udp_input() overwrites packet's destination
with next-hop address before doing ip_savecontrol.

It seems easy to change udp_input to pass the original dest. address to ip_savecontrol.
Another soultion would be to implement IP_RECVDSTSOCKADDR option, which records the original
destination address:port as a 'struct sockaddr_in[6]' in packet's control data.

Comments/suggestions are welcome.


-- 

Best regards.
Hooman Fazaeli




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?54535B82.405>