diff options
author | 2015-08-26 14:27:43 +0300 | |
---|---|---|
committer | 2015-08-26 14:27:43 +0300 | |
commit | cdcc62972d42f009f55e6aeb2ca5c60c3acd75eb (patch) | |
tree | 5c3fef81ac01407a89740f2d9b8b01b0f3a47c7f /scripts/automation/trex_control_plane/python_lib/dpkt-1.8.6.2/dpkt/ip.py | |
parent | 42053c95419042f36242b19d2416d112f7643e14 (diff) |
added dpkt package, initial stateless client implementation
Diffstat (limited to 'scripts/automation/trex_control_plane/python_lib/dpkt-1.8.6.2/dpkt/ip.py')
-rw-r--r-- | scripts/automation/trex_control_plane/python_lib/dpkt-1.8.6.2/dpkt/ip.py | 359 |
1 files changed, 0 insertions, 359 deletions
diff --git a/scripts/automation/trex_control_plane/python_lib/dpkt-1.8.6.2/dpkt/ip.py b/scripts/automation/trex_control_plane/python_lib/dpkt-1.8.6.2/dpkt/ip.py deleted file mode 100644 index 0658ff6a..00000000 --- a/scripts/automation/trex_control_plane/python_lib/dpkt-1.8.6.2/dpkt/ip.py +++ /dev/null @@ -1,359 +0,0 @@ -# $Id: ip.py 87 2013-03-05 19:41:04Z andrewflnr@gmail.com $ -# -*- coding: utf-8 -*- -"""Internet Protocol.""" - -import dpkt -from decorators import deprecated - - -class IP(dpkt.Packet): - __hdr__ = ( - ('v_hl', 'B', (4 << 4) | (20 >> 2)), - ('tos', 'B', 0), - ('len', 'H', 20), - ('id', 'H', 0), - ('off', 'H', 0), - ('ttl', 'B', 64), - ('p', 'B', 0), - ('sum', 'H', 0), - ('src', '4s', '\x00' * 4), - ('dst', '4s', '\x00' * 4) - ) - _protosw = {} - opts = '' - - @property - def v(self): - return self.v_hl >> 4 - - @v.setter - def v(self, v): - self.v_hl = (v << 4) | (self.v_hl & 0xf) - - @property - def hl(self): - return self.v_hl & 0xf - - @hl.setter - def hl(self, hl): - self.v_hl = (self.v_hl & 0xf0) | hl - - # Deprecated methods, will be removed in the future - # ================================================= - @deprecated - def _get_v(self): - return self.v - - @deprecated - def _set_v(self, v): - self.v = v - - @deprecated - def _get_hl(self): - return self.hl - - @deprecated - def _set_hl(self, hl): - self.hl = hl - - # ================================================= - - def __len__(self): - return self.__hdr_len__ + len(self.opts) + len(self.data) - - def __str__(self): - if self.sum == 0: - self.sum = dpkt.in_cksum(self.pack_hdr() + self.opts) - if (self.p == 6 or self.p == 17) and (self.off & (IP_MF | IP_OFFMASK)) == 0 and \ - isinstance(self.data, dpkt.Packet) and self.data.sum == 0: - # Set zeroed TCP and UDP checksums for non-fragments. - p = str(self.data) - s = dpkt.struct.pack('>4s4sxBH', self.src, self.dst, - self.p, len(p)) - s = dpkt.in_cksum_add(0, s) - s = dpkt.in_cksum_add(s, p) - self.data.sum = dpkt.in_cksum_done(s) - if self.p == 17 and self.data.sum == 0: - self.data.sum = 0xffff # RFC 768 - # XXX - skip transports which don't need the pseudoheader - return self.pack_hdr() + self.opts + str(self.data) - - def unpack(self, buf): - dpkt.Packet.unpack(self, buf) - ol = ((self.v_hl & 0xf) << 2) - self.__hdr_len__ - if ol < 0: - raise dpkt.UnpackError, 'invalid header length' - self.opts = buf[self.__hdr_len__:self.__hdr_len__ + ol] - if self.len: - buf = buf[self.__hdr_len__ + ol:self.len] - else: # very likely due to TCP segmentation offload - buf = buf[self.__hdr_len__ + ol:] - try: - self.data = self._protosw[self.p](buf) - setattr(self, self.data.__class__.__name__.lower(), self.data) - except (KeyError, dpkt.UnpackError): - self.data = buf - - @classmethod - def set_proto(cls, p, pktclass): - cls._protosw[p] = pktclass - - @classmethod - def get_proto(cls, p): - return cls._protosw[p] - -# IP Headers -IP_ADDR_LEN = 0x04 -IP_ADDR_BITS = 0x20 - -IP_HDR_LEN = 0x14 -IP_OPT_LEN = 0x02 -IP_OPT_LEN_MAX = 0x28 -IP_HDR_LEN_MAX = IP_HDR_LEN + IP_OPT_LEN_MAX - -IP_LEN_MAX = 0xffff -IP_LEN_MIN = IP_HDR_LEN - -# Reserved Addresses -IP_ADDR_ANY = "\x00\x00\x00\x00" # 0.0.0.0 -IP_ADDR_BROADCAST = "\xff\xff\xff\xff" # 255.255.255.255 -IP_ADDR_LOOPBACK = "\x7f\x00\x00\x01" # 127.0.0.1 -IP_ADDR_MCAST_ALL = "\xe0\x00\x00\x01" # 224.0.0.1 -IP_ADDR_MCAST_LOCAL = "\xe0\x00\x00\xff" # 224.0.0.255 - -# Type of service (ip_tos), RFC 1349 ("obsoleted by RFC 2474") -IP_TOS_DEFAULT = 0x00 # default -IP_TOS_LOWDELAY = 0x10 # low delay -IP_TOS_THROUGHPUT = 0x08 # high throughput -IP_TOS_RELIABILITY = 0x04 # high reliability -IP_TOS_LOWCOST = 0x02 # low monetary cost - XXX -IP_TOS_ECT = 0x02 # ECN-capable transport -IP_TOS_CE = 0x01 # congestion experienced - -# IP precedence (high 3 bits of ip_tos), hopefully unused -IP_TOS_PREC_ROUTINE = 0x00 -IP_TOS_PREC_PRIORITY = 0x20 -IP_TOS_PREC_IMMEDIATE = 0x40 -IP_TOS_PREC_FLASH = 0x60 -IP_TOS_PREC_FLASHOVERRIDE = 0x80 -IP_TOS_PREC_CRITIC_ECP = 0xa0 -IP_TOS_PREC_INTERNETCONTROL = 0xc0 -IP_TOS_PREC_NETCONTROL = 0xe0 - -# Fragmentation flags (ip_off) -IP_RF = 0x8000 # reserved -IP_DF = 0x4000 # don't fragment -IP_MF = 0x2000 # more fragments (not last frag) -IP_OFFMASK = 0x1fff # mask for fragment offset - -# Time-to-live (ip_ttl), seconds -IP_TTL_DEFAULT = 64 # default ttl, RFC 1122, RFC 1340 -IP_TTL_MAX = 255 # maximum ttl - -# Protocol (ip_p) - http://www.iana.org/assignments/protocol-numbers -IP_PROTO_IP = 0 # dummy for IP -IP_PROTO_HOPOPTS = IP_PROTO_IP # IPv6 hop-by-hop options -IP_PROTO_ICMP = 1 # ICMP -IP_PROTO_IGMP = 2 # IGMP -IP_PROTO_GGP = 3 # gateway-gateway protocol -IP_PROTO_IPIP = 4 # IP in IP -IP_PROTO_ST = 5 # ST datagram mode -IP_PROTO_TCP = 6 # TCP -IP_PROTO_CBT = 7 # CBT -IP_PROTO_EGP = 8 # exterior gateway protocol -IP_PROTO_IGP = 9 # interior gateway protocol -IP_PROTO_BBNRCC = 10 # BBN RCC monitoring -IP_PROTO_NVP = 11 # Network Voice Protocol -IP_PROTO_PUP = 12 # PARC universal packet -IP_PROTO_ARGUS = 13 # ARGUS -IP_PROTO_EMCON = 14 # EMCON -IP_PROTO_XNET = 15 # Cross Net Debugger -IP_PROTO_CHAOS = 16 # Chaos -IP_PROTO_UDP = 17 # UDP -IP_PROTO_MUX = 18 # multiplexing -IP_PROTO_DCNMEAS = 19 # DCN measurement -IP_PROTO_HMP = 20 # Host Monitoring Protocol -IP_PROTO_PRM = 21 # Packet Radio Measurement -IP_PROTO_IDP = 22 # Xerox NS IDP -IP_PROTO_TRUNK1 = 23 # Trunk-1 -IP_PROTO_TRUNK2 = 24 # Trunk-2 -IP_PROTO_LEAF1 = 25 # Leaf-1 -IP_PROTO_LEAF2 = 26 # Leaf-2 -IP_PROTO_RDP = 27 # "Reliable Datagram" proto -IP_PROTO_IRTP = 28 # Inet Reliable Transaction -IP_PROTO_TP = 29 # ISO TP class 4 -IP_PROTO_NETBLT = 30 # Bulk Data Transfer -IP_PROTO_MFPNSP = 31 # MFE Network Services -IP_PROTO_MERITINP = 32 # Merit Internodal Protocol -IP_PROTO_SEP = 33 # Sequential Exchange proto -IP_PROTO_3PC = 34 # Third Party Connect proto -IP_PROTO_IDPR = 35 # Interdomain Policy Route -IP_PROTO_XTP = 36 # Xpress Transfer Protocol -IP_PROTO_DDP = 37 # Datagram Delivery Proto -IP_PROTO_CMTP = 38 # IDPR Ctrl Message Trans -IP_PROTO_TPPP = 39 # TP++ Transport Protocol -IP_PROTO_IL = 40 # IL Transport Protocol -IP_PROTO_IP6 = 41 # IPv6 -IP_PROTO_SDRP = 42 # Source Demand Routing -IP_PROTO_ROUTING = 43 # IPv6 routing header -IP_PROTO_FRAGMENT = 44 # IPv6 fragmentation header -IP_PROTO_RSVP = 46 # Reservation protocol -IP_PROTO_GRE = 47 # General Routing Encap -IP_PROTO_MHRP = 48 # Mobile Host Routing -IP_PROTO_ENA = 49 # ENA -IP_PROTO_ESP = 50 # Encap Security Payload -IP_PROTO_AH = 51 # Authentication Header -IP_PROTO_INLSP = 52 # Integated Net Layer Sec -IP_PROTO_SWIPE = 53 # SWIPE -IP_PROTO_NARP = 54 # NBMA Address Resolution -IP_PROTO_MOBILE = 55 # Mobile IP, RFC 2004 -IP_PROTO_TLSP = 56 # Transport Layer Security -IP_PROTO_SKIP = 57 # SKIP -IP_PROTO_ICMP6 = 58 # ICMP for IPv6 -IP_PROTO_NONE = 59 # IPv6 no next header -IP_PROTO_DSTOPTS = 60 # IPv6 destination options -IP_PROTO_ANYHOST = 61 # any host internal proto -IP_PROTO_CFTP = 62 # CFTP -IP_PROTO_ANYNET = 63 # any local network -IP_PROTO_EXPAK = 64 # SATNET and Backroom EXPAK -IP_PROTO_KRYPTOLAN = 65 # Kryptolan -IP_PROTO_RVD = 66 # MIT Remote Virtual Disk -IP_PROTO_IPPC = 67 # Inet Pluribus Packet Core -IP_PROTO_DISTFS = 68 # any distributed fs -IP_PROTO_SATMON = 69 # SATNET Monitoring -IP_PROTO_VISA = 70 # VISA Protocol -IP_PROTO_IPCV = 71 # Inet Packet Core Utility -IP_PROTO_CPNX = 72 # Comp Proto Net Executive -IP_PROTO_CPHB = 73 # Comp Protocol Heart Beat -IP_PROTO_WSN = 74 # Wang Span Network -IP_PROTO_PVP = 75 # Packet Video Protocol -IP_PROTO_BRSATMON = 76 # Backroom SATNET Monitor -IP_PROTO_SUNND = 77 # SUN ND Protocol -IP_PROTO_WBMON = 78 # WIDEBAND Monitoring -IP_PROTO_WBEXPAK = 79 # WIDEBAND EXPAK -IP_PROTO_EON = 80 # ISO CNLP -IP_PROTO_VMTP = 81 # Versatile Msg Transport -IP_PROTO_SVMTP = 82 # Secure VMTP -IP_PROTO_VINES = 83 # VINES -IP_PROTO_TTP = 84 # TTP -IP_PROTO_NSFIGP = 85 # NSFNET-IGP -IP_PROTO_DGP = 86 # Dissimilar Gateway Proto -IP_PROTO_TCF = 87 # TCF -IP_PROTO_EIGRP = 88 # EIGRP -IP_PROTO_OSPF = 89 # Open Shortest Path First -IP_PROTO_SPRITERPC = 90 # Sprite RPC Protocol -IP_PROTO_LARP = 91 # Locus Address Resolution -IP_PROTO_MTP = 92 # Multicast Transport Proto -IP_PROTO_AX25 = 93 # AX.25 Frames -IP_PROTO_IPIPENCAP = 94 # yet-another IP encap -IP_PROTO_MICP = 95 # Mobile Internet Ctrl -IP_PROTO_SCCSP = 96 # Semaphore Comm Sec Proto -IP_PROTO_ETHERIP = 97 # Ethernet in IPv4 -IP_PROTO_ENCAP = 98 # encapsulation header -IP_PROTO_ANYENC = 99 # private encryption scheme -IP_PROTO_GMTP = 100 # GMTP -IP_PROTO_IFMP = 101 # Ipsilon Flow Mgmt Proto -IP_PROTO_PNNI = 102 # PNNI over IP -IP_PROTO_PIM = 103 # Protocol Indep Multicast -IP_PROTO_ARIS = 104 # ARIS -IP_PROTO_SCPS = 105 # SCPS -IP_PROTO_QNX = 106 # QNX -IP_PROTO_AN = 107 # Active Networks -IP_PROTO_IPCOMP = 108 # IP Payload Compression -IP_PROTO_SNP = 109 # Sitara Networks Protocol -IP_PROTO_COMPAQPEER = 110 # Compaq Peer Protocol -IP_PROTO_IPXIP = 111 # IPX in IP -IP_PROTO_VRRP = 112 # Virtual Router Redundancy -IP_PROTO_PGM = 113 # PGM Reliable Transport -IP_PROTO_ANY0HOP = 114 # 0-hop protocol -IP_PROTO_L2TP = 115 # Layer 2 Tunneling Proto -IP_PROTO_DDX = 116 # D-II Data Exchange (DDX) -IP_PROTO_IATP = 117 # Interactive Agent Xfer -IP_PROTO_STP = 118 # Schedule Transfer Proto -IP_PROTO_SRP = 119 # SpectraLink Radio Proto -IP_PROTO_UTI = 120 # UTI -IP_PROTO_SMP = 121 # Simple Message Protocol -IP_PROTO_SM = 122 # SM -IP_PROTO_PTP = 123 # Performance Transparency -IP_PROTO_ISIS = 124 # ISIS over IPv4 -IP_PROTO_FIRE = 125 # FIRE -IP_PROTO_CRTP = 126 # Combat Radio Transport -IP_PROTO_CRUDP = 127 # Combat Radio UDP -IP_PROTO_SSCOPMCE = 128 # SSCOPMCE -IP_PROTO_IPLT = 129 # IPLT -IP_PROTO_SPS = 130 # Secure Packet Shield -IP_PROTO_PIPE = 131 # Private IP Encap in IP -IP_PROTO_SCTP = 132 # Stream Ctrl Transmission -IP_PROTO_FC = 133 # Fibre Channel -IP_PROTO_RSVPIGN = 134 # RSVP-E2E-IGNORE -IP_PROTO_RAW = 255 # Raw IP packets -IP_PROTO_RESERVED = IP_PROTO_RAW # Reserved -IP_PROTO_MAX = 255 - -# XXX - auto-load IP dispatch table from IP_PROTO_* definitions - - -def __load_protos(): - g = globals() - for k, v in g.iteritems(): - if k.startswith('IP_PROTO_'): - name = k[9:].lower() - try: - mod = __import__(name, g) - except ImportError: - continue - IP.set_proto(v, getattr(mod, name.upper())) - - -if not IP._protosw: - __load_protos() - - -def test_ip(): - import udp - - s = 'E\x00\x00"\x00\x00\x00\x00@\x11r\xc0\x01\x02\x03\x04\x01\x02\x03\x04\x00o\x00\xde\x00\x0e\xbf5foobar' - ip = IP(id=0, src='\x01\x02\x03\x04', dst='\x01\x02\x03\x04', p=17) - u = udp.UDP(sport=111, dport=222) - u.data = 'foobar' - u.ulen += len(u.data) - ip.data = u - ip.len += len(u) - assert (str(ip) == s) - - ip = IP(s) - assert (str(ip) == s) - assert (ip.udp.sport == 111) - assert (ip.udp.data == 'foobar') - - -def test_hl(): # Todo chack this test method - s = 'BB\x03\x00\x00\x00\x00\x00\x00\x00\xd0\x00\xec\xbc\xa5\x00\x00\x00\x03\x80\x00\x00\xd0\x01\xf2\xac\xa5"0\x01\x00\x14\x00\x02\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00' - try: - IP(s) - except dpkt.UnpackError: - pass - - -def test_opt(): - s = '\x4f\x00\x00\x50\xae\x08\x00\x00\x40\x06\x17\xfc\xc0\xa8\x0a\x26\xc0\xa8\x0a\x01\x07\x27\x08\x01\x02\x03\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' - ip = IP(s) - ip.sum = 0 - assert (str(ip) == s) - - -def test_zerolen(): - import tcp - d = 'X' * 2048 - s = 'E\x00\x00\x004\xce@\x00\x80\x06\x00\x00\x7f\x00\x00\x01\x7f\x00\x00\x01\xccN\x0c8`\xff\xc6N_\x8a\x12\x98P\x18@):\xa3\x00\x00' + d - ip = IP(s) - assert (isinstance(ip.data, tcp.TCP)) - assert (ip.tcp.data == d) - - -if __name__ == '__main__': - test_ip() - test_hl() - test_opt() - test_zerolen() - print 'Tests Successful...' |