encapsulation scheme

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hey guys,
I'm writing a module to encapsulate IP packets and send them throught a
tunnel between the 2 end-points, the IP packets being passed include
those that are locally generated and that are forwarded from other
computer (who sends their packets to this PC to be tunneled).
My code seems to work fine with the packets that are generated locally,
although it doesn't seem to make a lot of sense.
Here's the set up of my program.

I register my module to listen to packets coming through the POSTROUTING
hook at my tunnel end-point (because I thought that hook would cover
both types of packets mentioned above, after the criteria is met, i do
the following :
- hook the packet back at LOCAL_OUT hook
- copy the old sk_buff to a new sk_buff and drop the old one
- add my outer ip header to the new sk_buff
- and finally do an ip_send( new_sk_buff ) to send it out again

The postrouting code i wrote can differentiate between the original buff
and the new buff to avoid infinite looping.

This scheme seems to work fine with the locally generated packets
(although it seems kinda weird), but always locks up my PC once it
started receiving packets that are forwarded.

PS: I use the tunnel endpoint PC as the gateway to the other PC wishing
to be tunneled.

Any input would be appreciated,
Thanks,
Aaron



[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux