summaryrefslogtreecommitdiffstats
path: root/src/plugins/ioam/lib-trace
AgeCommit message (Expand)AuthorFilesLines
2019-04-10API: Fix shared memory only action handlers.Ole Troan1-57/+13
2018-10-23c11 safe string handling supportDave Barach1-1/+1
2018-08-25ioam: one api test plugin instead of fiveDamjan Marion1-1/+1
2018-01-23VPPAPIGEN: vppapigen replacement in Python PLY.Ole Troan1-1/+1
2018-01-09api: refactor vlibmemoryFlorin Coras1-2/+2
2017-10-09vppapigen: support per-file (major,minor,patch) version stampsDave Barach1-0/+1
2017-10-03Repair vlib API socket serverDave Barach2-2/+2
2017-04-25"autoreply" flag: autogenerate standard xxx_reply_t messagesDave Barach1-24/+2
2017-03-15VPP changes to support iOAM over NSH-MD2. Separate trace dataVengada4-16/+47
2017-03-07In-band OAM active probe (VPP-471)AkshayaNadahalli1-6/+22
2017-03-06ioam: manycast using iOAM and SR (VPP-628)Shwetha Bhandari1-2/+0
2017-02-13VPP-632 : InBand OAM AnalyserAkshayaNadahalli1-1/+8
2017-02-02Refactor fragile msg macro W and W2 to not burry return control flow.Jon Loeliger1-8/+9
2017-02-02Localize the timeout variable within the W message macro.Jon Loeliger1-3/+1
2017-02-02Convert message macro S to accept a message pointer parameter;Jon Loeliger1-3/+3
2017-02-02Ensure all M() and M2() second parameters are the message pointer.Jon Loeliger1-3/+3
2017-01-25Repair plugin binary API message numberingDave Barach1-0/+2
2017-01-23binary-api debug CLI works with pluginsDave Barach1-44/+4
2017-01-04Merging all ioam plugin libraries to single libraryAkshayaNadahalli1-19/+4
2017-01-01Move java,lua api and remaining plugins to src/Damjan Marion7-0/+1133
d/delete - interface type: - pg (TBD) - loopback - vhostuser (TBD) - af_packet (TBD) - netmap (TBD) - tuntap (root privileges needed) - vxlan (TBD) """ import unittest from scapy.layers.inet import IP, ICMP from scapy.layers.l2 import Ether from framework import VppTestCase, VppTestRunner class TestLoopbackInterfaceCRUD(VppTestCase): """CRUD Loopback """ @classmethod def setUpClass(cls): super(TestLoopbackInterfaceCRUD, cls).setUpClass() try: cls.create_pg_interfaces(range(1)) for i in cls.pg_interfaces: i.config_ip4() i.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(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(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)