diff options
-rw-r--r-- | pbrd/pbr_nht.c | 2 | ||||
-rw-r--r-- | pbrd/pbr_zebra.c | 16 |
2 files changed, 14 insertions, 4 deletions
diff --git a/pbrd/pbr_nht.c b/pbrd/pbr_nht.c index c58902cf5..1ba7d7e0a 100644 --- a/pbrd/pbr_nht.c +++ b/pbrd/pbr_nht.c @@ -410,8 +410,6 @@ static void pbr_nht_install_nexthop_group(struct pbr_nexthop_group_cache *pnhgc, install_afi = pbr_nht_which_afi(nhg, nh_afi); - pnhgc->installed = false; - route_add(pnhgc, nhg, install_afi); } diff --git a/pbrd/pbr_zebra.c b/pbrd/pbr_zebra.c index a1a2d34ac..99caf4cb9 100644 --- a/pbrd/pbr_zebra.c +++ b/pbrd/pbr_zebra.c @@ -500,8 +500,20 @@ void pbr_send_pbr_map(struct pbr_map_sequence *pbrms, struct pbr_map *pbrm = pbrms->parent; struct stream *s; - DEBUGD(&pbr_dbg_zebra, "%s: for %s %d", __PRETTY_FUNCTION__, pbrm->name, - install); + DEBUGD(&pbr_dbg_zebra, "%s: for %s %d(%d)", + __PRETTY_FUNCTION__, pbrm->name, + install, pbrms->installed); + + /* + * If we are installed and asked to do so again + * just return. If we are not installed and asked + * and asked to delete just return; + */ + if (install && pbrms->installed) + return; + + if (!install && !pbrms->installed) + return; s = zclient->obuf; stream_reset(s); |