Fabian Deutsch wrote: >>--- Ursprüngliche Nachricht --- >>Von: Steve Holden <[EMAIL PROTECTED]> >>An: python-list@python.org >>Betreff: Re: getsockopt >>Datum: Fri, 16 Dec 2005 08:29:08 +0000 >> >>Fabian Deutsch wrote: >> >>>Hello, >>> >>>my name is fabian and i'm a student from northern germany. right now i >>>try to create som kind of decapsulation of esp-udp packets using python. >>> >>>therefor i need to use the socket.getsockopt (SOL_IP, IP_OPTIONS, 20) >>>method. But al i get is some empty value. Nothin. >>> >>>Does someone know or have an working exmaple of how to use this method?? >>> >>>The lines: >>>s = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP) >>>s.bind(('',4500)) >>>while 1: # Run until cancelled >>> message, client = s.recvfrom(1400) # <=256 byte datagram >>> hdr = s.getsockopt (SOL_IP, IP_OPTIONS, 20) >>> print "Client connected:", client >>> print "HDR:" + binascii.hexlify(hdr) >>> >> >>Perhaps you're getting an empty string back because no IP options are >>set in the received packets' headers? >> > > Hey, > you are right - i just re-read the ip (7) man - i only get the ip options .. > > but do you know a way of getting the whole header? > > 'cause what i'm trying to do is, to "remove" the udp-header of the packet i > recieved and sendind a new packet without the udp-header. > I want to do this by taking it's payload (incl. esp-hdr) and ip-header and > resending it to my system creating a new packet with the old ip-header and > payload (incl. esp-hdr) i got from the recvd packet. > > Before: > +--------+---------+----------+----------- - - > | IP HDR | UDP HDR | ESP HDR | PAYLOAD ... > +--------+---------+----------+----------- - - > After : > +--------+---------+----------- - - > | IP HDR | ESP HDR | PAYLOAD ... > +--------+---------+----------- - - > I'm not sure where ESP is going to come into this, or how the traffic you will be receiving will be generated. I suspect you may need to reconsider your application design a little.
The only way to get hold of the IP headers is to use SOCK_RAW, which delivers everything that comes in from the packet driver. What is it you're actually trying to do? If you perform the transformation you outline in the diagrams above then the IP header will certainly contain the wrong protocol value for a start. regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC www.holdenweb.com PyCon TX 2006 www.python.org/pycon/ -- http://mail.python.org/mailman/listinfo/python-list