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 <neale@graphiant.com>
Change-Id: Iad49fb6168b9ba47216a9a52bd262363b49c3c43
This commit is contained in:
Neale Ranns
2021-12-20 18:18:42 +00:00
committed by Damjan Marion
parent 3aa3d6d3f3
commit 53962fbccb
10 changed files with 84 additions and 66 deletions

View File

@ -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 """