Hello list members I would like to create an IP tunnel using the IP protocol type 4 (socket.IPPROTO_IPIP) on a Linux host. (I also would be happy if I could create a GRE tunnel)
The thing is, I just don't understand how I such a socket could be created and then later on handled. Regarding to help(socket.socke()) the constructor looks like this: | socket([family[, type[, proto]]]) -> socket object | | Open a socket of the given type. The family argument specifies the | address family; it defaults to AF_INET. The type argument specifies | whether this is a stream (SOCK_STREAM, this is the default) | or datagram (SOCK_DGRAM) socket. The protocol argument defaults to 0, | specifying the default protocol. Keyword arguments are accepted. This means to create a simple UDP socket I can do the following where the last argument is optional. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_IP) So to create an IP-Encapsulation socket I would have to do this: s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IPIP) or for GRE this. s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_GRE) But how can I now set the fields? How do I really encapsulate other data (=sockets?)? Do I need a Raw socket at all? Or should this work somehow like the following to encapsulate UDP payload? s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_IPIP) I really would be happy if someone could help me with this and even better could provide some examples on the usage. Thanks in advance, Matthias -- http://mail.python.org/mailman/listinfo/python-list