diff options
| -rw-r--r-- | bgpd/bgp_attr.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c index cca2ca2b0f..ef9bb4f032 100644 --- a/bgpd/bgp_attr.c +++ b/bgpd/bgp_attr.c @@ -333,6 +333,10 @@ static void encap_unintern(struct bgp_attr_encap_subtlv **encapp, encap_subtlv_type type) { struct bgp_attr_encap_subtlv *encap = *encapp; + + if (!*encapp) + return; + if (encap->refcnt) encap->refcnt--; @@ -1219,17 +1223,14 @@ void bgp_attr_unintern_sub(struct attr *attr) transit_unintern(&transit); bgp_attr_set_transit(attr, NULL); - if (attr->encap_subtlvs) - encap_unintern(&attr->encap_subtlvs, ENCAP_SUBTLV_TYPE); + encap_unintern(&attr->encap_subtlvs, ENCAP_SUBTLV_TYPE); #ifdef ENABLE_BGP_VNC struct bgp_attr_encap_subtlv *vnc_subtlvs = bgp_attr_get_vnc_subtlvs(attr); - if (vnc_subtlvs) { - encap_unintern(&vnc_subtlvs, VNC_SUBTLV_TYPE); - bgp_attr_set_vnc_subtlvs(attr, vnc_subtlvs); - } + encap_unintern(&vnc_subtlvs, VNC_SUBTLV_TYPE); + bgp_attr_set_vnc_subtlvs(attr, NULL); #endif if (attr->srv6_l3vpn) |
