echo function stops if echo source is removed
(self)
| 1815 | self.assert_equal(len(events), 0, "number of bfd events") |
| 1816 | |
| 1817 | def test_echo_source_removed(self): |
| 1818 | """echo function stops if echo source is removed""" |
| 1819 | |
| 1820 | if self.multihop: |
| 1821 | self.skipTest( |
| 1822 | f"Skipping because echo functionality is not supported with multihop" |
| 1823 | ) |
| 1824 | |
| 1825 | bfd_session_up(self) |
| 1826 | self.test_session.update(required_min_echo_rx=150000) |
| 1827 | self.test_session.send_packet() |
| 1828 | self.vapi.bfd_udp_set_echo_source(sw_if_index=self.loopback0.sw_if_index) |
| 1829 | # wait for first echo packet |
| 1830 | while True: |
| 1831 | p = self.pg0.wait_for_packet(1) |
| 1832 | self.logger.debug(ppp("Got packet:", p)) |
| 1833 | if p[UDP].dport == BFD.udp_dport_echo: |
| 1834 | self.logger.debug(ppp("Looping back packet:", p)) |
| 1835 | p[Ether].dst = self.pg0.local_mac |
| 1836 | self.pg0.add_stream(p) |
| 1837 | self.pg_start() |
| 1838 | break |
| 1839 | elif p.haslayer(BFD): |
| 1840 | # ignore BFD |
| 1841 | pass |
| 1842 | else: |
| 1843 | raise Exception(ppp("Received unknown packet:", p)) |
| 1844 | self.vapi.bfd_udp_del_echo_source() |
| 1845 | self.test_session.send_packet() |
| 1846 | # echo packets shouldn't arrive anymore |
| 1847 | for dummy in range(5): |
| 1848 | wait_for_bfd_packet(self, pcap_time_min=time.time() - self.vpp_clock_offset) |
| 1849 | self.test_session.send_packet() |
| 1850 | events = self.vapi.collect_events() |
| 1851 | self.assert_equal(len(events), 0, "number of bfd events") |
| 1852 | |
| 1853 | def test_stale_echo(self): |
| 1854 | """stale echo packets don't keep a session up""" |
nothing calls this directly
no test coverage detected