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

Source Code for Module dpkt.vrrp

 1  # $Id: vrrp.py 271 2006-01-11 16:03:33Z dugsong $ 
 2   
 3  """Virtual Router Redundancy Protocol.""" 
 4   
 5  import dpkt 
 6   
7 -class VRRP(dpkt.Packet):
8 __hdr__ = ( 9 ('vtype', 'B', 0x21), 10 ('vrid', 'B', 0), 11 ('priority', 'B', 0), 12 ('count', 'B', 0), 13 ('atype', 'B', 0), 14 ('advtime', 'B', 0), 15 ('sum', 'H', 0), 16 ) 17 addrs = () 18 auth = ''
19 - def _get_v(self):
20 return self.vtype >> 4
21 - def _set_v(self, v):
22 self.vtype = (self.vtype & ~0xf) | (v << 4)
23 v = property(_get_v, _set_v) 24
25 - def _get_type(self):
26 return self.vtype & 0xf
27 - def _set_type(self, v):
28 self.vtype = (self.vtype & ~0xf0) | (v & 0xf)
29 type = property(_get_v, _set_v) 30
31 - def unpack(self, buf):
32 dpkt.Packet.unpack(self, buf) 33 l = [] 34 for off in range(0, 4 * self.count, 4): 35 l.append(self.data[off:off+4]) 36 self.addrs = l 37 self.auth = self.data[off+4:] 38 self.data = ''
39
40 - def __len__(self):
41 return self.__hdr_len__ + (4 * self.count) + len(self.auth)
42
43 - def __str__(self):
44 data = ''.join(self.addrs) + self.auth 45 if not self.sum: 46 self.sum = dpkt.in_cksum(self.pack_hdr() + data) 47 return self.pack_hdr() + data
48