On 10/31/14, 5:50 PM, Hooman Fazaeli wrote:
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
just as a nit, I'd add "in" as well sometimes outgoing packets can have a receive interface if they were routed.


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

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.
This behaviour may be new since IPFORWARD was added.. My memory is that you could do this.

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.



_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to