Package dpkt :: Module mrt
[hide private]
[frames] | no frames]

Source Code for Module dpkt.mrt

 1  # $Id: mrt.py 29 2007-01-26 02:29:07Z jon.oberheide $ 
 2   
 3  """Multi-threaded Routing Toolkit.""" 
 4   
 5  import dpkt 
 6  import bgp 
 7   
 8  # Multi-threaded Routing Toolkit 
 9  # http://www.ietf.org/internet-drafts/draft-ietf-grow-mrt-03.txt 
10   
11  # MRT Types 
12  NULL                    = 0 
13  START                   = 1 
14  DIE                     = 2 
15  I_AM_DEAD               = 3 
16  PEER_DOWN               = 4 
17  BGP                     = 5     # Deprecated by BGP4MP 
18  RIP                     = 6 
19  IDRP                    = 7 
20  RIPNG                   = 8 
21  BGP4PLUS                = 9     # Deprecated by BGP4MP 
22  BGP4PLUS_01             = 10    # Deprecated by BGP4MP 
23  OSPF                    = 11 
24  TABLE_DUMP              = 12 
25  BGP4MP                  = 16 
26  BGP4MP_ET               = 17 
27  ISIS                    = 32 
28  ISIS_ET                 = 33 
29  OSPF_ET                 = 64 
30   
31  # BGP4MP Subtypes 
32  BGP4MP_STATE_CHANGE     = 0 
33  BGP4MP_MESSAGE          = 1 
34  BGP4MP_ENTRY            = 2 
35  BGP4MP_SNAPSHOT         = 3 
36  BGP4MP_MESSAGE_32BIT_AS = 4 
37   
38  # Address Family Types 
39  AFI_IPv4                = 1 
40  AFI_IPv6                = 2 
41   
42 -class MRTHeader(dpkt.Packet):
43 __hdr__ = ( 44 ('ts', 'I', 0), 45 ('type', 'H', 0), 46 ('subtype', 'H', 0), 47 ('len', 'I', 0) 48 )
49
50 -class TableDump(dpkt.Packet):
51 __hdr__ = ( 52 ('view', 'H', 0), 53 ('seq', 'H', 0), 54 ('prefix', 'I', 0), 55 ('prefix_len', 'B', 0), 56 ('status', 'B', 1), 57 ('originated_ts', 'I', 0), 58 ('peer_ip', 'I', 0), 59 ('peer_as', 'H', 0), 60 ('attr_len', 'H', 0) 61 ) 62
63 - def unpack(self, buf):
64 dpkt.Packet.unpack(self, buf) 65 plen = self.attr_len 66 l = [] 67 while plen > 0: 68 attr = bgp.BGP.Update.Attribute(self.data) 69 self.data = self.data[len(attr):] 70 plen -= len(attr) 71 l.append(attr) 72 self.attributes = l
73
74 -class BGP4MPMessage(dpkt.Packet):
75 __hdr__ = ( 76 ('src_as', 'H', 0), 77 ('dst_as', 'H', 0), 78 ('intf', 'H', 0), 79 ('family', 'H', AFI_IPv4), 80 ('src_ip', 'I', 0), 81 ('dst_ip', 'I', 0) 82 )
83
84 -class BGP4MPMessage_32(dpkt.Packet):
85 __hdr__ = ( 86 ('src_as', 'I', 0), 87 ('dst_as', 'I', 0), 88 ('intf', 'H', 0), 89 ('family', 'H', AFI_IPv4), 90 ('src_ip', 'I', 0), 91 ('dst_ip', 'I', 0) 92 )
93