From 53962fbccb4612af41e3fbd913cc50be09d3b24a Mon Sep 17 00:00:00 2001 From: Neale Ranns Date: Mon, 20 Dec 2021 18:18:42 +0000 Subject: fib: MPLS EOS chains built for attached prefixes should link to a lookup DPO Type: fix Presently a local label associated with an attached or connected prefix will link to the glean. This is a problem since it will never use the adj-fibs that are installed for that attached prefix. Instead link the local label to a lookup in the table in which the attached link is bound. Signed-off-by: Neale Ranns Change-Id: Iad49fb6168b9ba47216a9a52bd262363b49c3c43 --- test/test_mpls.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'test') diff --git a/test/test_mpls.py b/test/test_mpls.py index 2b959e48fb6..34645a9fce1 100644 --- a/test/test_mpls.py +++ b/test/test_mpls.py @@ -1563,6 +1563,33 @@ class TestMPLS(VppTestCase): VppMplsLabel(32), VppMplsLabel(99)]) + def test_attached(self): + """ Attach Routes with Local Label """ + + # + # test that if a local label is associated with an attached/connected + # prefix, that we can reach hosts in the prefix. + # + binding = VppMplsIpBind(self, 44, + self.pg0._local_ip4_subnet, + self.pg0.local_ip4_prefix_len) + binding.add_vpp_config() + + tx = (Ether(src=self.pg1.remote_mac, + dst=self.pg1.local_mac) / + MPLS(label=44, ttl=64) / + IP(src=self.pg0.remote_ip4, dst=self.pg0.remote_ip4) / + UDP(sport=1234, dport=1234) / + Raw(b'\xa5' * 100)) + rxs = self.send_and_expect(self.pg0, [tx], self.pg0) + for rx in rxs: + # if there's an ARP then the label is linked to the glean + # which is wrong. + self.assertFalse(rx.haslayer(ARP)) + # it should be unicasted to the host + self.assertEqual(rx[Ether].dst, self.pg0.remote_mac) + self.assertEqual(rx[IP].dst, self.pg0.remote_ip4) + class TestMPLSDisabled(VppTestCase): """ MPLS disabled """ -- cgit 1.2.3-korg