diff options
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/pair/ip.py')
-rwxr-xr-x | lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/pair/ip.py | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/pair/ip.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/pair/ip.py deleted file mode 100755 index de03bd41..00000000 --- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/pair/ip.py +++ /dev/null @@ -1,72 +0,0 @@ -# -*- test-case-name: twisted.pair.test.test_ip -*- -# Copyright (c) Twisted Matrix Laboratories. -# See LICENSE for details. - -# - - -"""Support for working directly with IP packets""" - -import struct -import socket - -from twisted.internet import protocol -from twisted.pair import raw -from zope.interface import implements - - -class IPHeader: - def __init__(self, data): - - (ihlversion, self.tos, self.tot_len, self.fragment_id, frag_off, - self.ttl, self.protocol, self.check, saddr, daddr) \ - = struct.unpack("!BBHHHBBH4s4s", data[:20]) - self.saddr = socket.inet_ntoa(saddr) - self.daddr = socket.inet_ntoa(daddr) - self.version = ihlversion & 0x0F - self.ihl = ((ihlversion & 0xF0) >> 4) << 2 - self.fragment_offset = frag_off & 0x1FFF - self.dont_fragment = (frag_off & 0x4000 != 0) - self.more_fragments = (frag_off & 0x2000 != 0) - -MAX_SIZE = 2L**32 - -class IPProtocol(protocol.AbstractDatagramProtocol): - implements(raw.IRawPacketProtocol) - - def __init__(self): - self.ipProtos = {} - - def addProto(self, num, proto): - proto = raw.IRawDatagramProtocol(proto) - if num < 0: - raise TypeError, 'Added protocol must be positive or zero' - if num >= MAX_SIZE: - raise TypeError, 'Added protocol must fit in 32 bits' - if num not in self.ipProtos: - self.ipProtos[num] = [] - self.ipProtos[num].append(proto) - - def datagramReceived(self, - data, - partial, - dest, - source, - protocol): - header = IPHeader(data) - for proto in self.ipProtos.get(header.protocol, ()): - proto.datagramReceived(data=data[20:], - partial=partial, - source=header.saddr, - dest=header.daddr, - protocol=header.protocol, - version=header.version, - ihl=header.ihl, - tos=header.tos, - tot_len=header.tot_len, - fragment_id=header.fragment_id, - fragment_offset=header.fragment_offset, - dont_fragment=header.dont_fragment, - more_fragments=header.more_fragments, - ttl=header.ttl, - ) |