summaryrefslogtreecommitdiff
path: root/lib/northbound_grpc.cpp
diff options
context:
space:
mode:
authorvdhingra <vdhingra@vmware.com>2021-02-03 05:58:12 -0800
committerIqra Siddiqui <imujeebsiddi@vmware.com>2022-02-22 09:28:00 -0800
commit1b1e934facb2f57278a193367a0473817eefba8a (patch)
tree397d9842ed7f97eff6df52f84bef0713027ea37c /lib/northbound_grpc.cpp
parentaf768d506fbbd4d1de42c92dfa670d2f93c96ca7 (diff)
zebra: Nexthop tracking, route resolution recursive lookup
Description: =========== Change is intended for fixing the NHT resolution logic. While recursively resolving nexthop, keep looking for a valid/useable route in the rib, by not stopping at the first/most-specific route in the rib. Consider the following set of events taking place on R1: R1(config)# ip route 2.2.2.0/24 ens192 R1# sharp watch nexthop 2.2.2.32 connected R1# show ip nht 2.2.2.32(Connected) resolved via static is directly connected, ens192 Client list: sharp(fd 33) -2.2.2.32 NHT is resolved over the above valid static route. R1# sharp install routes 2.2.2.32 nexthop 2.2.2.32 1 R1# 2.2.2.32(Connected) resolved via static is directly connected, ens192 Client list: sharp(fd 33) -.32/32 comes which is going to resolve through itself, but since this is an invalid route, it will be marked as inactive and will not affect the NHT. R1# sharp install routes 2.2.2.31 nexthop 2.2.2.32 1 R1# 2.2.2.32(Connected) unresolved(Connected) Client list: sharp(fd 50) -Now a .31/32 comes which will resolve over .32 route, but as per the current logic, this will trigger the NHT check, in turn making the NHT unresolved. -With fix, NHT should stay in resolved state as long as the valid static or connected route stays installed Fix: ==== -While resolving nexthops, walk up the tree from the most-specific match, walk up the tree without any ZEBRA_NHT_CONNECTED check. Co-authored-by: Vishal Dhingra <vdhingra@vmware.com> Co-authored-by: Kantesh Mundaragi <kmundaragi@vmware.com> Signed-off-by: Iqra Siddiqui <imujeebsiddi@vmware.com>
Diffstat (limited to 'lib/northbound_grpc.cpp')
0 files changed, 0 insertions, 0 deletions