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