aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/mfib
AgeCommit message (Expand)AuthorFilesLines
2019-07-02fib: Coverity fix to remove dead codeNeale Ranns1-2/+0
2019-06-18fib: fib api updatesNeale Ranns8-142/+414
2019-06-05In ip6_mfib_forward_rpf_node,is_v4 should be 0.mu.duojiao1-1/+1
2019-05-30FIB: correctly report IPv6 FIB Unicast and Multicast memory usage (VPP-1578)"Neale Ranns2-3/+8
2019-04-08fixing typosJim Thompson1-1/+1
2019-03-11mfib: migrate old MULTIARCH macros to VLIB_NODE_FNFilip Tehlar1-29/+9
2019-01-07VOM: mroutesNeale Ranns1-0/+13
2018-12-21MFIB: coverity fixesNeale Ranns2-7/+16
2018-12-20FIB: encode the label stack in the FIB path during table dumpNeale Ranns3-3/+30
2018-12-18MFIB: recurse resolution through an MFIB entryNeale Ranns17-157/+1492
2018-12-16IP6-MFIB: replace the radix tree with bihash (VPP-1526)Neale Ranns4-123/+146
2018-12-06MFIB; CLI improvementsNeale Ranns1-1/+5
2018-12-03move [m]fib and BIER tests to unittest pluginNeale Ranns1-1535/+0
2018-10-25Trivial: Cleanup missing va_ends.Paul Vinciguerra1-2/+2
2018-10-23c11 safe string handling supportDave Barach4-10/+10
2018-10-19vppinfra: add atomic macros for __sync builtinsSirshak Das2-6/+6
2018-10-16FIB: use vlib-log for debuggingNeale Ranns1-20/+12
2018-10-01mroute routers in the stats segmentNeale Ranns2-0/+11
2018-09-19GRE: fix 4o6 and 6o4 adj stackingNeale Ranns1-17/+0
2018-09-10vxlan-gbp: Add support for vxlan gbpMohsin Kazmi1-0/+2
2018-08-22IPIP and SIXRD tunnels create API needs table-IDs not fib-indexesNeale Ranns1-0/+2
2018-07-09IGMP improvementsNeale Ranns1-0/+2
2018-05-04Harmonize vec/pool_get_aligned object sizes and alignment requestsDave Barach2-0/+10
2018-04-17IP mcast: allow unicast address as a next-hopNeale Ranns4-38/+279
2018-03-20FIB Interpose SourceNeale Ranns1-203/+214
2018-03-09MPLS Unifom modeNeale Ranns1-2/+4
2018-01-24Improve the error reporting for a IP multicast RPF miss.Neale Ranns1-2/+12
2018-01-11api: fix handlers that explicitly depend on svm queueFlorin Coras2-5/+5
2018-01-09api: refactor vlibmemoryFlorin Coras2-4/+4
2017-12-13Separate heap for IPv4 mtriesNeale Ranns1-3/+3
2017-12-12Stats for Multicast FIBNeale Ranns2-0/+13
2017-11-29Include allocated table memory in 'sh fib mem' outputNeale Ranns6-16/+113
2017-11-26FIB: store the node type not the function pointer.Neale Ranns1-2/+0
2017-11-09BIERNeale Ranns1-1/+2
2017-10-26fib test - fix undefined behavior warning found by clangGabriel Ganne1-1/+1
2017-10-15Revert "Enforce FIB table creation before use"Florin Coras1-0/+1
2017-10-13Enforce FIB table creation before useNeale Ranns1-1/+0
2017-10-06Initial GENEVE TUNNEL implementation and tests.Marco Varlese1-0/+2
2017-10-04[aarch64] Fixes CLI crashes on dpaa2 platform.Christophe Fontaine3-8/+8
2017-09-13Add a name to the creation of an IP and MPLS tableNeale Ranns3-8/+63
2017-09-11FIB table add/delete APINeale Ranns10-34/+149
2017-08-29Fix for bootstrap crash when VPP compiled with gcc-7Marco Varlese1-1/+1
2017-08-08L2 over MPLSNeale Ranns3-16/+14
2017-06-06Rework vxlan-gpe to support FIB 2.0 and bypass modeHongjun Ni1-0/+2
2017-06-01IP Mcast - recalculate on interface up/dowmNeale Ranns2-56/+87
2017-05-23ARP/ND entries for the same address on different interfaces (VPP-848)Neale Ranns1-4/+4
2017-05-19mfib CLI bugs (VPP-852)Neale Ranns2-8/+14
2017-05-15Add GTP-U plugin. VPP-694Hongjun Ni1-0/+2
2017-05-02Allow local/for-us replications for IP multicast routes on the CLINeale Ranns1-4/+2
2017-04-07MPLS McastNeale Ranns8-165/+417
an class="p">]) packet_index = payload_info.index ip_sent = self._packet_infos[packet_index].data[ip_l] self.logger.debug("Got packet on port %s: src=%u (id=%u)" % (rx_if.name, payload_info.src, packet_index)) # Check standard fields self.assertIn(packet.dst, rx_if._hosts_by_mac, "Destination MAC address %s shouldn't be routed " "via interface %s" % (packet.dst, rx_if.name)) self.assertEqual(packet.src, rx_if.local_mac) self.assertEqual(ip_received.src, ip_sent.src) self.assertEqual(ip_received.dst, ip_sent.dst) host_counters[packet.dst] += 1 self._packet_infos.pop(packet_index) except: self.logger.error(ppp("Unexpected or invalid packet:", packet)) raise # We expect packet routed via all host of pg interface for host_mac in host_counters: nr = host_counters[host_mac] self.assertNotEqual( nr, 0, "No packet routed via host %s" % host_mac) self.logger.info("%u packets routed via host %s of %s interface" % (nr, host_mac, rx_if.name)) count += nr self.logger.info("Total amount of %u packets routed via %s interface" % (count, rx_if.name)) return count def create_ip_routes(self, dst_ip_net, dst_prefix_len, is_ipv6=0): """ Create IP routes for defined destination IP network. :param str dst_ip_net: Destination IP network. :param int dst_prefix_len: IP address prefix length. :param int is_ipv6: 0 if an ip4 route, else ip6 """ paths = [] for pg_if in self.pg_interfaces[1:]: for nh_host in pg_if.remote_hosts: nh_host_ip = nh_host.ip4 if is_ipv6 == 0 else nh_host.ip6 paths.append(VppRoutePath(nh_host_ip, pg_if.sw_if_index)) rip = VppIpRoute(self, dst_ip_net, dst_prefix_len, paths) rip.add_vpp_config() self.logger.info("Route via %s on %s created" % (nh_host_ip, pg_if.name)) self.logger.debug(self.vapi.ppcli("show ip fib")) self.logger.debug(self.vapi.ppcli("show ip6 fib")) def test_ip_ecmp(self): """ IP equal-cost multi-path routing test """ src_ip_net = '16.0.0.1' dst_ip_net = '32.0.0.1' ip_prefix_len = 24 self.create_ip_routes(dst_ip_net, ip_prefix_len) pkts = self.create_stream(self.pg0, src_ip_net, dst_ip_net, ip_prefix_len, self.pg_if_packet_sizes) self.pg0.add_stream(pkts) self.pg_enable_capture(self.pg_interfaces) self.pg_start() # We expect packets on pg1, pg2 and pg3, but not on pg0 rx_count = 0 for pg_if in self.pg_interfaces[1:]: capture = pg_if._get_capture(timeout=1) self.assertNotEqual( len(capture), 0, msg="No packets captured on %s" % pg_if.name) rx_count += self.verify_capture(pg_if, capture) self.pg0.assert_nothing_captured(remark="IP packets forwarded on pg0") # Check that all packets were forwarded via pg1, pg2 and pg3 self.assertEqual(rx_count, len(pkts)) def test_ip6_ecmp(self): """ IPv6 equal-cost multi-path routing test """ src_ip_net = '3ffe:51::1' dst_ip_net = '3ffe:71::1' ip_prefix_len = 64 self.create_ip_routes(dst_ip_net, ip_prefix_len, is_ipv6=1) pkts = self.create_stream( self.pg0, src_ip_net, dst_ip_net, ip_prefix_len, self.pg_if_packet_sizes, ip_l=IPv6) self.pg0.add_stream(pkts) self.pg_enable_capture(self.pg_interfaces) self.pg_start() # We expect packets on pg1, pg2 and pg3, but not on pg0 rx_count = 0 for pg_if in self.pg_interfaces[1:]: capture = pg_if._get_capture(timeout=1) self.assertNotEqual( len(capture), 0, msg="No packets captured on %s" % pg_if.name) rx_count += self.verify_capture(pg_if, capture, ip_l=IPv6) self.pg0.assert_nothing_captured(remark="IP packets forwarded on pg0") # Check that all packets were forwarded via pg1, pg2 and pg3 self.assertEqual(rx_count, len(pkts)) if __name__ == '__main__': unittest.main(testRunner=VppTestRunner)