summaryrefslogtreecommitdiff
path: root/bgpd/bgp_attr.c
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas@opensourcerouting.org>2023-08-03 22:52:09 +0300
committerDonatas Abraitis <donatas@opensourcerouting.org>2023-08-03 22:52:09 +0300
commit312b8c02a68f20df39353e9a52e7b49310dbfee6 (patch)
treee952793c83d3ee6ca2e6cab1451dd05e85b19e60 /bgpd/bgp_attr.c
parent09b453775541a66439ddb5b0c24c5f8b3a04928c (diff)
bgpd: Handle encap attributes the same way as others using setters/getters
To be consistent and error-safe. Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
Diffstat (limited to 'bgpd/bgp_attr.c')
-rw-r--r--bgpd/bgp_attr.c13
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)