diff options
author | Július Milan <julius.milan@pantheon.tech> | 2021-02-16 19:20:47 +0100 |
---|---|---|
committer | Beno�t Ganne <bganne@cisco.com> | 2021-02-24 15:21:46 +0000 |
commit | 98874cda5853ea2d6b2dc32001b935d394b88430 (patch) | |
tree | 35ea43524d8138eb6a6e28276f4d7061d45a2967 /test/test_ping.py | |
parent | cb1c4902bbc29d2bec2862c385659c682aa3984e (diff) |
fib: fix sa selection for fib routed destinations
The move from ip4(6)_src_address_for_packet to fib_sas4(6)_get changed
the behavior, so that the new looked only to adjacent gleans. This
caused a problem for destinations routed according to FIB table.
To reproduce:
vpp# create tap
vpp# set interface state tap0 up
vpp# set interface ip address tap0 192.168.11.1/24
vpp# ip route add 192.168.20.0/24 via 192.168.11.2
linux$ sudo ip addr add 192.168.20.1/24 dev lo
linux$ sudo ip link set tap0 up
linux$ sudo ip addr add 192.168.11.2/24 dev tap0
vpp# ping 192.168.20.1
Failed: no source address for egress interface
Type: fix
Signed-off-by: Július Milan <julius.milan@pantheon.tech>
Signed-off-by: Neale Ranns <neale@graphiant.com>
Change-Id: I22899f4dbbf8c1c85ccce72f801b92c183195b5d
Diffstat (limited to 'test/test_ping.py')
-rw-r--r-- | test/test_ping.py | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/test/test_ping.py b/test/test_ping.py index 40ad9d4efe0..8c5c087b0c5 100644 --- a/test/test_ping.py +++ b/test/test_ping.py @@ -7,7 +7,7 @@ from scapy.packet import Raw from framework import VppTestCase from util import ppp -from vpp_ip_route import VppIpInterfaceAddress +from vpp_ip_route import VppIpInterfaceAddress, VppIpRoute, VppRoutePath from vpp_neighbor import VppNeighbor """ TestPing is a subclass of VPPTestCase classes. @@ -150,3 +150,27 @@ class TestPing(VppTestCase): for p in out: icmp = self.verify_ping_request(p, "10.0.0.1", nbr_addr, icmp_seq) icmp_seq = icmp_seq + 1 + + def test_ping_fib_routed_dst(self): + """ ping destination routed according to FIB table """ + + try: + self.pg1.generate_remote_hosts(1) + self.pg_enable_capture(self.pg_interfaces) + self.pg_start() + routed_dst = "10.0.2.0" + self.logger.info(self.vapi.cli("show ip4 neighbors")) + VppIpRoute(self, routed_dst, 24, + [VppRoutePath(self.pg1.remote_hosts[0].ip4, + self.pg1.sw_if_index)]).add_vpp_config() + ping_cmd = "ping %s interval 0.01 repeat 3" % routed_dst + ret = self.vapi.cli(ping_cmd) + self.logger.info(ret) + out = self.pg1.get_capture(3) + icmp_seq = 1 + for p in out: + self.verify_ping_request(p, self.pg1.local_ip4, routed_dst, + icmp_seq) + icmp_seq = icmp_seq + 1 + finally: + self.vapi.cli("show error") |