aboutsummaryrefs @media only all and (prefers-color-scheme: dark) { .highlight .hll { background-color: #49483e } .highlight .c { color: #75715e } /* Comment */ .highlight .err { color: #960050; background-color: #1e0010 } /* Error */ .highlight .k { color: #66d9ef } /* Keyword */ .highlight .l { color: #ae81ff } /* Literal */ .highlight .n { color: #f8f8f2 } /* Name */ .highlight .o { color: #f92672 } /* Operator */ .highlight .p { color: #f8f8f2 } /* Punctuation */ .highlight .ch { color: #75715e } /* Comment.Hashbang */ .highlight .cm { color: #75715e } /* Comment.Multiline */ .highlight .cp { color: #75715e } /* Comment.Preproc */ .highlight .cpf { color: #75715e } /* Comment.PreprocFile */ .highlight .c1 { color: #75715e } /* Comment.Single */ .highlight .cs { color: #75715e } /* Comment.Special */ .highlight .gd { color: #f92672 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gi { color: #a6e22e } /* Generic.Inserted */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #75715e } /* Generic.Subheading */ .highlight .kc { color: #66d9ef } /* Keyword.Constant */ .highlight .kd { color: #66d9ef } /* Keyword.Declaration */ .highlight .kn { color: #f92672 } /* Keyword.Namespace */ .highlight .kp { color: #66d9ef } /* Keyword.Pseudo */ .highlight .kr { color: #66d9ef } /* Keyword.Reserved */ .highlight .kt { color: #66d9ef } /* Keyword.Type */ .highlight .ld { color: #e6db74 } /* Literal.Date */ .highlight .m { color: #ae81ff } /* Literal.Number */ .highlight .s { color: #e6db74 } /* Literal.String */
https://nexus.fd.io/content/repositories/fd.io.master.centos7/io/fd/vpp/
"n">resolve_arp() except: cls.tearDownClass() raise @staticmethod def create_icmp_stream(src_if, dst_ifs): """ :param VppInterface src_if: Packets are send to this interface, using this interfaces remote host. :param list dst_ifs: IPv4 ICMP requests are send to interfaces addresses. :return: List of generated packets. """ pkts = [] for i in dst_ifs: p = (Ether(dst=src_if.local_mac, src=src_if.remote_mac) / IP(src=src_if.remote_ip4, dst=i.local_ip4) / ICMP(id=i.sw_if_index, type='echo-request')) pkts.append(p) return pkts def verify_icmp(self, capture, request_src_if, dst_ifs): """ :param capture: Capture to verify. :param VppInterface request_src_if: Interface where was send packets. :param list dst_ifs: Interfaces where was generated IPv4 ICMP requests. """ rcvd_icmp_pkts = [] for pkt in capture: try: ip = pkt[IP] icmp = pkt[ICMP] except IndexError: pass else: info = (ip.src, ip.dst, icmp.type, icmp.id) rcvd_icmp_pkts.append(info) for i in dst_ifs: # 0 - icmp echo response info = (i.local_ip4, request_src_if.remote_ip4, 0, i.sw_if_index) self.assertIn(info, rcvd_icmp_pkts) def test_crud(self): # create loopbacks = self.create_loopback_interfaces(range(20)) for i in loopbacks: i.local_ip4_prefix_len = 32 i.config_ip4() i.admin_up() # read (check sw if dump, ip4 fib, ip6 fib) if_dump = self.vapi.sw_interface_dump() fib4_dump = self.vapi.ip_fib_dump() for i in loopbacks: self.assertTrue(i.is_interface_config_in_dump(if_dump)) self.assertTrue(i.is_ip4_entry_in_fib_dump(fib4_dump)) # check ping stream = self.create_icmp_stream(self.pg0, loopbacks) self.pg0.add_stream(stream) self.pg_enable_capture(self.pg_interfaces) self.pg_start() capture = self.pg0.get_capture(expected_count=len(stream)) self.verify_icmp(capture, self.pg0, loopbacks) # delete for i in loopbacks: i.remove_vpp_config() # read (check not in sw if dump, ip4 fib, ip6 fib) if_dump = self.vapi.sw_interface_dump() fib4_dump = self.vapi.ip_fib_dump() for i in loopbacks: self.assertFalse(i.is_interface_config_in_dump(if_dump)) self.assertFalse(i.is_ip4_entry_in_fib_dump(fib4_dump)) # check not ping stream = self.create_icmp_stream(self.pg0, loopbacks) self.pg0.add_stream(stream) self.pg_enable_capture(self.pg_interfaces) self.pg_start() self.pg0.assert_nothing_captured() def test_down(self): # create loopbacks = self.create_loopback_interfaces(range(20)) for i in loopbacks: i.local_ip4_prefix_len = 32 i.config_ip4() i.admin_up() # disable for i in loopbacks: i.admin_down() i.unconfig_ip4() # read (check not in sw if dump, ip4 fib, ip6 fib) if_dump = self.vapi.sw_interface_dump() fib4_dump = self.vapi.ip_fib_dump() for i in loopbacks: self.assertTrue(i.is_interface_config_in_dump(if_dump)) self.assertFalse(i.is_ip4_entry_in_fib_dump(fib4_dump)) # check not ping stream = self.create_icmp_stream(self.pg0, loopbacks) self.pg0.add_stream(stream) self.pg_enable_capture(self.pg_interfaces) self.pg_start() self.pg0.assert_nothing_captured() if __name__ == '__main__': unittest.main(testRunner=VppTestRunner)