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