summaryrefslogtreecommitdiff
path: root/net/switchdev
diff options
context:
space:
mode:
authorIdo Schimmel <idosch@mellanox.com>2017-02-08 11:16:40 +0100
committerDavid S. Miller <davem@davemloft.net>2017-02-08 15:25:18 -0500
commitad178c8eefdd94c946e3b808d8c772541a18b97d (patch)
treea1f7bde2b41b86227ef4f8e9b9442ebc7669b490 /net/switchdev
parent982acb97560c8118c2109504a22b0d78a580547d (diff)
mlxsw: spectrum_router: Reflect nexthop status changes
When a packet hits a multipath route in the device's routing table, a hash is computed over its headers, which is then used to select the appropriate nexthop from the device's adjacency table. There are situations in which the kernel removes a nexthop from a multipath route (e.g., no carrier) and the device should do the same. Upon the reception of NH_{ADD,DEL} events, add or remove a nexthop from the device's adjacency table and refresh all the routes using the nexthop group. If all the nexthops of a multipath route are invalid, then any packet hitting the route would be trapped to the CPU for forwarding. If all the nexthops are DEAD, then the kernel would remove the route entirely. On the other hand, if all the nexthops are merely LINKDOWN, then the kernel would keep the route and forward any incoming packet using a different route. While the last case might sound like a problem, it's expected that a routing daemon running in user space would remove such a route from the FIB as it's dumped with the DEAD flag set. Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/switchdev')
0 files changed, 0 insertions, 0 deletions