diff options
| author | Mark Stapp <mjs@voltanet.io> | 2019-12-12 09:53:55 -0500 |
|---|---|---|
| committer | Mark Stapp <mjs@voltanet.io> | 2019-12-12 12:55:51 -0500 |
| commit | 1f6a5aca264d5cc78aa4fd16bbad31d91a80f01a (patch) | |
| tree | 8210b722844de3c3929f536c73c9465d03eda1bd /zebra/zebra_rib.c | |
| parent | 4c0b5436f949001056486c4bf53f1c7038cb81f1 (diff) | |
zebra: handle route notification with no nexthops
Handle the special case where a route update contains
no installed nexthops - that means the route is not
installed.
Signed-off-by: Mark Stapp <mjs@voltanet.io>
Diffstat (limited to 'zebra/zebra_rib.c')
| -rw-r--r-- | zebra/zebra_rib.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c index fb5dadd2d6..f375036db2 100644 --- a/zebra/zebra_rib.c +++ b/zebra/zebra_rib.c @@ -1369,6 +1369,14 @@ static bool rib_update_re_from_ctx(struct route_entry *re, ctx_nexthop = dplane_ctx_get_ng(ctx)->nexthop; + /* Nothing installed - we can skip some of the checking/comparison + * of nexthops. + */ + if (ctx_nexthop == NULL) { + changed_p = true; + goto no_nexthops; + } + /* Get the first `installed` one to check against. * If the dataplane doesn't set these to be what was actually installed, * it will just be whatever was in re->nhe->nhg? @@ -1431,6 +1439,8 @@ static bool rib_update_re_from_ctx(struct route_entry *re, goto done; } +no_nexthops: + /* FIB nexthop set differs from the RIB set: * create a fib-specific nexthop-group */ |
