diff options
| -rw-r--r-- | bgpd/bgp_attr.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c index ef9bb4f032..d31e266c95 100644 --- a/bgpd/bgp_attr.c +++ b/bgpd/bgp_attr.c @@ -568,6 +568,9 @@ static void srv6_l3vpn_unintern(struct bgp_attr_srv6_l3vpn **l3vpnp) { struct bgp_attr_srv6_l3vpn *l3vpn = *l3vpnp; + if (!*l3vpnp) + return; + if (l3vpn->refcnt) l3vpn->refcnt--; @@ -603,6 +606,9 @@ static void srv6_vpn_unintern(struct bgp_attr_srv6_vpn **vpnp) { struct bgp_attr_srv6_vpn *vpn = *vpnp; + if (!*vpnp) + return; + if (vpn->refcnt) vpn->refcnt--; @@ -1233,11 +1239,8 @@ void bgp_attr_unintern_sub(struct attr *attr) bgp_attr_set_vnc_subtlvs(attr, NULL); #endif - if (attr->srv6_l3vpn) - srv6_l3vpn_unintern(&attr->srv6_l3vpn); - - if (attr->srv6_vpn) - srv6_vpn_unintern(&attr->srv6_vpn); + srv6_l3vpn_unintern(&attr->srv6_l3vpn); + srv6_vpn_unintern(&attr->srv6_vpn); } /* Free bgp attribute and aspath. */ |
