aboutsummaryrefslogtreecommitdiffstats
path: root/src/vat/api_format.c
AgeCommit message (Expand)AuthorFilesLines
2019-02-25IKEv2 to pluginNeale Ranns1-708/+0
2019-02-18IPSEC: move SA counters into the stats segmentNeale Ranns1-5/+2
2019-02-07IPSEC: no second lookup after tunnel encapNeale Ranns1-55/+59
2019-02-05sock api: allow to start client with no rx_threadTomasz Kulasek1-1/+1
2019-02-05IPSEC: SPD counters in the stats sgementNeale Ranns1-1/+0
2019-01-31IPSEC: API modernisationNeale Ranns1-225/+144
2019-01-30Use IP and MAC API types for neighborsNeale Ranns1-129/+71
2019-01-25deprecate tapcliDamjan Marion1-360/+0
2019-01-22virtio: Add api support in vatMohsin Kazmi1-0/+299
2019-01-13bonding: support custom interface IDsAlexander Chernavin1-1/+6
2019-01-07tapv2: add "tap_flags" field to the TAPv2 interface APIAndrew Yourtchenko1-2/+3
2019-01-07L2 BD API to flush all IP-MAC entries in the specified BDJohn Lo1-1/+38
2018-12-22bapi/vat: fix socket transport for vatFlorin Coras1-2/+8
2018-12-18PAPI: Add MACAddress object wrapper for vl_api_mac_address_tOle Troan1-9/+1
2018-12-17stats: Deprecate old stats frameworkOle Troan1-536/+1
2018-12-17String type: Not include \0 in show_versionOle Troan1-11/+23
2018-12-14String type: Fix off by one errorOle Troan1-1/+1
2018-12-13API: Use string type instead of u8.Ole Troan1-13/+33
2018-12-07VPP-1506: dump local punts and registered punt socketsPavel Kotucek1-9/+9
2018-12-04MPLS: buffer over-run with incorrectly init'd vector. fix VAT dumpNeale Ranns1-2/+2
2018-11-12IPv6: Make link-local configurable per-interface (VPP-1446)Juraj Sloboda1-54/+0
2018-11-06BD ARP entry use common API typesNeale Ranns1-15/+9
2018-11-05Genric API types format/unformat support for VAT and custom dumpNeale Ranns1-0/+11
2018-10-23c11 safe string handling supportDave Barach1-47/+47
2018-10-17fix ip6 prefix check for tap_v2Michal Cmarada1-1/+1
2018-10-04Fix handling of mpls_tunnel_add_del APIJohn Lo1-14/+41
2018-10-01vat: fix coverity warning for show_threadsMohsin Kazmi1-3/+7
2018-10-01thread: Add show threads apiMohsin Kazmi1-0/+72
2018-09-29vom: Fix the l2 port type in bridge domainMohsin Kazmi1-4/+5
2018-09-27Trivial: Cleanup some typos.Paul Vinciguerra1-3/+3
2018-09-26MPLS tunnel dump: use sw_if_index not tunnel_indexNeale Ranns1-8/+5
2018-09-26itf: dump interface rx-placementMohsin Kazmi1-0/+79
2018-09-25L2 BD: introduce a BD interface on which to send UU packetsNeale Ranns1-10/+14
2018-09-21Add more CLI options to vpp_api_test for calling ip_add_del_routeJohn Lo1-2/+14
2018-09-20Route counters in the stats segmentNeale Ranns1-4/+4
2018-09-20vhost-user: Add disable feature support in apiMohsin Kazmi1-0/+10
2018-09-14Ehnance and fix vpp_api_test and custom_dump to support SR-MPLSJohn Lo1-25/+176
2018-09-11vat: remove the endiness for u8Mohsin Kazmi1-1/+1
2018-08-30Fix array bound failure in api_sr_localsid_add_delLijian Zhang1-2/+2
2018-08-24rx-placement: Add API call for interface rx-placementMohsin Kazmi1-0/+55
2018-08-17l2: arp termination dumpMohsin Kazmi1-0/+96
2018-08-09Fix "Old Style VLA" build warningsJuraj Sloboda1-0/+2
2018-07-13VPP-1338: fix ipsec api coverity warningsDave Barach1-8/+4
2018-07-10FIB path dump: fix next-hop-table ID for recursive routesNeale Ranns1-4/+6
2018-06-25MAP: Move MAP-E/T to a plugin.Ole Troan1-373/+0
2018-06-19Fixed bugs in SRv6 APIPablo Camarillo1-4/+12
2018-06-15STATS: Separate socket for fd exchange.Ole Troan1-90/+2
2018-06-13Stat segment / client: show run" works nowDave Barach1-9/+10
2018-06-13vxlan:offload RX floweyal bari1-5/+106
2018-06-11MTU: Software interface / Per-protocol MTU supportOle Troan1-6/+6
>copy() size = packet_sizes[(i // 2) % len(packet_sizes)] self.extend_packet(p, size) pkts.append(p) return pkts def create_stream_l2_to_ip(self, src_l2_if, src_ip_if, dst_ip_if, packet_sizes): pkts = [] for i in range(0, 257): info = self.create_packet_info(src_ip_if, dst_ip_if) payload = self.info_to_payload(info) host = choice(src_l2_if.remote_hosts) p = (Ether(src=host.mac, dst=src_ip_if.local_mac) / IP(src=host.ip4, dst=dst_ip_if.remote_ip4) / UDP(sport=1234, dport=1234) / Raw(payload)) info.data = p.copy() size = packet_sizes[(i // 2) % len(packet_sizes)] self.extend_packet(p, size) pkts.append(p) return pkts def verify_capture_l2_to_ip(self, dst_ip_if, src_ip_if, capture): last_info = dict() for i in self.interfaces: last_info[i.sw_if_index] = None dst_ip_sw_if_index = dst_ip_if.sw_if_index for packet in capture: ip = packet[IP] udp = packet[IP][UDP] payload_info = self.payload_to_info(str(packet[IP][UDP][Raw])) self.assertEqual(payload_info.dst, dst_ip_sw_if_index) next_info = self.get_next_packet_info_for_interface2( payload_info.src, dst_ip_sw_if_index, last_info[payload_info.src]) last_info[payload_info.src] = next_info self.assertTrue(next_info is not None) saved_packet = next_info.data self.assertTrue(next_info is not None) # MAC: src, dst self.assertEqual(packet.src, dst_ip_if.local_mac) self.assertEqual(packet.dst, dst_ip_if.remote_mac) # IP: src, dst host = src_ip_if.host_by_ip4(ip.src) self.assertIsNotNone(host) self.assertEqual(ip.dst, saved_packet[IP].dst) self.assertEqual(ip.dst, dst_ip_if.remote_ip4) # UDP: self.assertEqual(udp.sport, saved_packet[UDP].sport) self.assertEqual(udp.dport, saved_packet[UDP].dport) def verify_capture(self, dst_ip_if, src_ip_if, capture): last_info = dict() for i in self.interfaces: last_info[i.sw_if_index] = None dst_ip_sw_if_index = dst_ip_if.sw_if_index for packet in capture: ip = packet[IP] udp = packet[IP][UDP] payload_info = self.payload_to_info(str(packet[IP][UDP][Raw])) packet_index = payload_info.index self.assertEqual(payload_info.dst, dst_ip_sw_if_index) next_info = self.get_next_packet_info_for_interface2( payload_info.src, dst_ip_sw_if_index, last_info[payload_info.src]) last_info[payload_info.src] = next_info self.assertTrue(next_info is not None) self.assertEqual(packet_index, next_info.index) saved_packet = next_info.data self.assertTrue(next_info is not None) # MAC: src, dst self.assertEqual(packet.src, dst_ip_if.local_mac) host = dst_ip_if.host_by_mac(packet.dst) # IP: src, dst self.assertEqual(ip.src, src_ip_if.remote_ip4) self.assertEqual(ip.dst, saved_packet[IP].dst) self.assertEqual(ip.dst, host.ip4) # UDP: self.assertEqual(udp.sport, saved_packet[UDP].sport) self.assertEqual(udp.dport, saved_packet[UDP].dport) def test_ip4_irb_1(self): """ IPv4 IRB test 1 Test scenario: - ip traffic from pg2 interface must ends in both pg0 and pg1 - arp entry present in loop0 interface for destination IP - no l2 entree configured, pg0 and pg1 are same """ stream = self.create_stream( self.pg2, self.loop0, self.pg_if_packet_sizes) self.pg2.add_stream(stream) self.pg_enable_capture(self.pg_interfaces) self.pg_start() packet_count = self.get_packet_count_for_if_idx(self.loop0.sw_if_index) rcvd1 = self.pg0.get_capture(packet_count) rcvd2 = self.pg1.get_capture(packet_count) self.verify_capture(self.loop0, self.pg2, rcvd1) self.verify_capture(self.loop0, self.pg2, rcvd2) self.assertListEqual(rcvd1.res, rcvd2.res) def test_ip4_irb_2(self): """ IPv4 IRB test 2 Test scenario: - ip traffic from pg0 and pg1 ends on pg2 """ stream1 = self.create_stream_l2_to_ip( self.pg0, self.loop0, self.pg2, self.pg_if_packet_sizes) stream2 = self.create_stream_l2_to_ip( self.pg1, self.loop0, self.pg2, self.pg_if_packet_sizes) self.pg0.add_stream(stream1) self.pg1.add_stream(stream2) self.pg_enable_capture(self.pg_interfaces) self.pg_start() rcvd = self.pg2.get_capture() self.verify_capture_l2_to_ip(self.pg2, self.loop0, rcvd) if __name__ == '__main__': unittest.main(testRunner=VppTestRunner)