X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fbfd.py;h=452a18049883d07f01028056091ed3c0a0ebab71;hb=e0d2bd6bd7fc59c0c6ac48195d7f825dc99bfd91;hp=8eb3b36acb05ffdd2fcaccbec7e1310acf8c680f;hpb=aeeac3bf4429235c952ce54abad7d3729be6a2f5;p=vpp.git diff --git a/test/bfd.py b/test/bfd.py index 8eb3b36acb0..452a1804988 100644 --- a/test/bfd.py +++ b/test/bfd.py @@ -152,6 +152,27 @@ class BFD(Packet): bind_layers(UDP, BFD, dport=BFD.udp_dport) +class BFD_vpp_echo(Packet): + """ BFD echo packet as used by VPP (non-rfc, as rfc doesn't define one) """ + + udp_dport = 3785 #: BFD echo destination port per RFC 5881 + name = "BFD_VPP_ECHO" + + fields_desc = [ + BitField("discriminator", 0, 32), + BitField("expire_time_clocks", 0, 64), + BitField("checksum", 0, 64) + ] + + def mysummary(self): + return self.sprintf( + "BFD_VPP_ECHO(disc=%BFD_VPP_ECHO.discriminator%," + "expire_time_clocks=%BFD_VPP_ECHO.expire_time_clocks%)") + +# glue the BFD echo packet class to scapy parser +bind_layers(UDP, BFD_vpp_echo, dport=BFD_vpp_echo.udp_dport) + + class VppBFDAuthKey(VppObject): """ Represents BFD authentication key in VPP """ @@ -177,6 +198,10 @@ class VppBFDAuthKey(VppObject): """ key data """ return self._key + @key.setter + def key(self, value): + self._key = value + @property def conf_key_id(self): """ configuration key ID """ @@ -212,7 +237,7 @@ class VppBFDUDPSession(VppObject): """ Represents BFD UDP session in VPP """ def __init__(self, test, interface, peer_addr, local_addr=None, af=AF_INET, - desired_min_tx=100000, required_min_rx=100000, detect_mult=3, + desired_min_tx=300000, required_min_rx=300000, detect_mult=3, sha1_key=None, bfd_key_id=None): self._test = test self._interface = interface @@ -228,7 +253,10 @@ class VppBFDUDPSession(VppObject): self._required_min_rx = required_min_rx self._detect_mult = detect_mult self._sha1_key = sha1_key - self._bfd_key_id = bfd_key_id if bfd_key_id else randint(0, 255) + if bfd_key_id is not None: + self._bfd_key_id = bfd_key_id + else: + self._bfd_key_id = randint(0, 255) @property def test(self): @@ -420,3 +448,12 @@ class VppBFDUDPSession(VppObject): self.local_addr_n, self.peer_addr_n, is_ipv6=is_ipv6) + + def admin_down(self): + """ set bfd session admin-down """ + is_ipv6 = 1 if AF_INET6 == self._af else 0 + self.test.vapi.bfd_udp_session_set_flags(0, + self._interface.sw_if_index, + self.local_addr_n, + self.peer_addr_n, + is_ipv6=is_ipv6)