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

Source Code for Module dpkt.vrrp

 1  # $Id: vrrp.py 88 2013-03-05 19:43:17Z andrewflnr@gmail.com $ 
 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_type, _set_type) 30
31 - def unpack(self, buf):
32 dpkt.Packet.unpack(self, buf) 33 l = [] 34 off = 0 35 for off in range(0, 4 * self.count, 4): 36 l.append(self.data[off:off+4]) 37 self.addrs = l 38 self.auth = self.data[off+4:] 39 self.data = ''
40
41 - def __len__(self):
42 return self.__hdr_len__ + (4 * self.count) + len(self.auth)
43
44 - def __str__(self):
45 data = ''.join(self.addrs) + self.auth 46 if not self.sum: 47 self.sum = dpkt.in_cksum(self.pack_hdr() + data) 48 return self.pack_hdr() + data
49