summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_attr.c13
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. */