bisdn / basebox

A tiny OpenFlow controller for OF-DPA switches.
Mozilla Public License 2.0
45 stars 9 forks source link

nl_l3: handle deleting purged l3 neighbors #329

Closed KanjiMonster closed 3 years ago

KanjiMonster commented 3 years ago

At the point of handling a deleted l3 neighbor, it might already be removed from the fdb, so we can't rely on it having an entry to figure out the physical port.

In that case, traverse the map and find a match for vid/src/dst, which should exist at this point (and only have one entry), and use that.

Fixes the following assert:

3 0x00007f26bdd36b32 in __assert_fail () from /lib/libc.so.6

4 0x000055a87d18deda in basebox::nl_l3::del_l3_neigh_egress (this=0x55a87d389cb0, n=) at /usr/include/c++/9.3.0/ostream:181

5 0x000055a87d18e7f3 in basebox::nl_l3::del_l3_neigh (this=0x55a87d389cb0, n=0x55a87d398930) at ../git/src/netlink/nl_l3.cc:920

6 0x000055a87d170c51 in basebox::cnetlink::route_neigh_apply (this=0x55a87d368da0, obj=...) at ../git/src/netlink/nl_obj.h:24

Signed-off-by: Jonas Gorski jonas.gorski@bisdn.de

How Has This Been Tested?

Pipeline 16934