diff options
author | Dan Klein <danklei@cisco.com> | 2015-08-26 14:27:43 +0300 |
---|---|---|
committer | Dan Klein <danklei@cisco.com> | 2015-08-26 14:27:43 +0300 |
commit | cdcc62972d42f009f55e6aeb2ca5c60c3acd75eb (patch) | |
tree | 5c3fef81ac01407a89740f2d9b8b01b0f3a47c7f /external_libs/python/dpkt-1.8.6.2/dpkt/vrrp.py | |
parent | 42053c95419042f36242b19d2416d112f7643e14 (diff) |
added dpkt package, initial stateless client implementation
Diffstat (limited to 'external_libs/python/dpkt-1.8.6.2/dpkt/vrrp.py')
-rw-r--r-- | external_libs/python/dpkt-1.8.6.2/dpkt/vrrp.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/external_libs/python/dpkt-1.8.6.2/dpkt/vrrp.py b/external_libs/python/dpkt-1.8.6.2/dpkt/vrrp.py new file mode 100644 index 00000000..6bdff005 --- /dev/null +++ b/external_libs/python/dpkt-1.8.6.2/dpkt/vrrp.py @@ -0,0 +1,70 @@ +# $Id: vrrp.py 88 2013-03-05 19:43:17Z andrewflnr@gmail.com $ +# -*- coding: utf-8 -*- +"""Virtual Router Redundancy Protocol.""" + +import dpkt +from decorators import deprecated + + +class VRRP(dpkt.Packet): + __hdr__ = ( + ('vtype', 'B', 0x21), + ('vrid', 'B', 0), + ('priority', 'B', 0), + ('count', 'B', 0), + ('atype', 'B', 0), + ('advtime', 'B', 0), + ('sum', 'H', 0), + ) + addrs = () + auth = '' + + @property + def v(self): + return self.vtype >> 4 + + @v.setter + def v(self, v): + self.vtype = (self.vtype & ~0xf) | (v << 4) + + @property + def type(self): + return self.vtype & 0xf + + @type.setter + def type(self, v): + self.vtype = (self.vtype & ~0xf0) | (v & 0xf) + + # 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_type(self): return self.type + + @deprecated + def _set_type(self, v): self.type = v + # ================================================= + + def unpack(self, buf): + dpkt.Packet.unpack(self, buf) + l = [] + off = 0 + for off in range(0, 4 * self.count, 4): + l.append(self.data[off:off + 4]) + self.addrs = l + self.auth = self.data[off + 4:] + self.data = '' + + def __len__(self): + return self.__hdr_len__ + (4 * self.count) + len(self.auth) + + def __str__(self): + data = ''.join(self.addrs) + self.auth + if not self.sum: + self.sum = dpkt.in_cksum(self.pack_hdr() + data) + return self.pack_hdr() + data |