diff options
author | Mark Stapp <mjs@voltanet.io> | 2019-04-26 20:33:19 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-26 20:33:19 +0200 |
commit | 86336f620f6e175e5552085877fa02ffaf9591b1 (patch) | |
tree | 4ef65850bf4371d9b89c19f4ae2ed7f413670813 | |
parent | Merge pull request #4201 from Orange-OpenSource/SR-isis (diff) | |
parent | zebra: resolve issue with protocol route-map not applied properly (diff) | |
download | frr-86336f620f6e175e5552085877fa02ffaf9591b1.tar.xz frr-86336f620f6e175e5552085877fa02ffaf9591b1.zip |
Merge pull request #4209 from dslicenc/zebra-nexthop-update-flag
zebra: resolve issue with protocol route-map not applied properly
-rw-r--r-- | zebra/zebra_rib.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c index 0e1df1cc3..4cf4c2406 100644 --- a/zebra/zebra_rib.c +++ b/zebra/zebra_rib.c @@ -2655,7 +2655,6 @@ void rib_lookup_and_pushup(struct prefix_ipv4 *p, vrf_id_t vrf_id) { struct route_table *table; struct route_node *rn; - unsigned changed = 0; rib_dest_t *dest; if (NULL == (table = zebra_vrf_table(AFI_IP, SAFI_UNICAST, vrf_id))) { @@ -2682,7 +2681,6 @@ void rib_lookup_and_pushup(struct prefix_ipv4 *p, vrf_id_t vrf_id) * of the rest of the RE. */ if (dest->selected_fib) { - changed = 1; if (IS_ZEBRA_DEBUG_RIB) { char buf[PREFIX_STRLEN]; @@ -2692,9 +2690,8 @@ void rib_lookup_and_pushup(struct prefix_ipv4 *p, vrf_id_t vrf_id) route_entry_dump(&rn->p, NULL, dest->selected_fib); } rib_uninstall(rn, dest->selected_fib); - } - if (changed) rib_queue_add(rn); + } } int rib_add_multipath(afi_t afi, safi_t safi, struct prefix *p, @@ -3069,6 +3066,8 @@ void rib_update_table(struct route_table *table, rib_update_event_t event) continue; if (re->type != ZEBRA_ROUTE_STATIC) { + SET_FLAG(re->status, + ROUTE_ENTRY_CHANGED); rib_queue_add(rn); continue; } @@ -3082,8 +3081,11 @@ void rib_update_table(struct route_table *table, rib_update_event_t event) * gateway, NHT will * take care. */ - if (nh) + if (nh) { + SET_FLAG(re->status, + ROUTE_ENTRY_CHANGED); rib_queue_add(rn); + } } break; @@ -3093,8 +3095,12 @@ void rib_update_table(struct route_table *table, rib_update_event_t event) * protocol in * some cases (TODO). */ - if (rnode_to_ribs(rn)) + if (rnode_to_ribs(rn)) { + RNODE_FOREACH_RE_SAFE (rn, re, next) + SET_FLAG(re->status, + ROUTE_ENTRY_CHANGED); rib_queue_add(rn); + } break; default: |