Thinking about UDP and tunneling

Max Laier max at
Thu Nov 20 05:50:33 PST 2008

On Thursday 20 November 2008 14:00:11 Randall Stewart wrote:
> On Nov 19, 2008, at 5:33 PM, Julian Elischer wrote:
> >> Its not new, its the same ip header..
> >> Its just you go into the mbuf chain and take out
> >> the udp header...
> >
> > well you can't do that at the socket buffer becasue you've discarded
> > the IP header. It may not even be in the mbufs you have. (though it's
> > unlikely). After you've processed the UDP part the IP part is gone so
> > you'd need to intercept the packet way earlier and then do your
> > own UDP processing, (or maybe attach the IP header onto it with a
> > tag).
> One would definitely  have to do some work in udp_input() not a lot from
> what I can tell... but it would take some work.
> Maybe  good course is to use the socket(9) stuff, but add an option
> that can set a "by-pass function" if the socket is udp... right
> after you establish the INP the packet goes to, if the function is
> set, you engage the bypass...

This sounds reasonable.  One would only have to replace calls to udp_append in 
udp_input with the by-pass function et voila.  Should be clean enough.  There 
might be some problems with holding the socket lock, though.

For the record, I don't like all the UDP-tunneling madness either, but it 
seems that we are stuck with it ... so we should at least try to come up with 
a somewhat reasonable implementation for this hackery.

/"\  Best regards,                      | mlaier at
\ /  Max Laier                          | ICQ #67774661
 X  | mlaier at EFnet
/ \  ASCII Ribbon Campaign              | Against HTML Mail and News

More information about the freebsd-net mailing list