From: Philippe Guibert Date: Fri, 18 May 2018 14:14:46 +0000 (+0200) Subject: bgpd: do not account twice references to rule context X-Git-Tag: frr-6.1-dev~395^2~18 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=b5c4010508e224f63a6d72853e663f85b8c009e7;p=matthieu%2Ffrr.git bgpd: do not account twice references to rule context When rule add transaction is sent from bgpd to zebra, the reference context must not be incremented while the confirmation message of install has not been sent back; unless if the transaction failed to be sent. Signed-off-by: Philippe Guibert --- diff --git a/bgpd/bgp_zebra.c b/bgpd/bgp_zebra.c index fccdd8f12b..360a496e49 100644 --- a/bgpd/bgp_zebra.c +++ b/bgpd/bgp_zebra.c @@ -2564,6 +2564,7 @@ void bgp_send_pbr_iptable(struct bgp_pbr_action *pba, bool install) { struct stream *s; + int ret = 0; if (pbm->install_iptable_in_progress) return; @@ -2580,9 +2581,12 @@ void bgp_send_pbr_iptable(struct bgp_pbr_action *pba, bgp_encode_pbr_iptable_match(s, pba, pbm); stream_putw_at(s, 0, stream_get_endp(s)); - if (!zclient_send_message(zclient) && install) { - pbm->install_iptable_in_progress = true; - pba->refcnt++; + ret = zclient_send_message(zclient); + if (install) { + if (ret) + pba->refcnt++; + else + pbm->install_iptable_in_progress = true; } }