]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: Handle srv6 attributes the same way as others using setters/getters
authorDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 3 Aug 2023 19:53:21 +0000 (22:53 +0300)
committerDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 3 Aug 2023 19:53:21 +0000 (22:53 +0300)
To be consistent and error-safe.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
bgpd/bgp_attr.c

index ef9bb4f032c52e69e65b2a55bf2b9b4910a4808c..d31e266c95d053b7a09a38c11cad8a5f5b4b1646 100644 (file)
@@ -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. */