From 312b8c02a68f20df39353e9a52e7b49310dbfee6 Mon Sep 17 00:00:00 2001 From: Donatas Abraitis Date: Thu, 3 Aug 2023 22:52:09 +0300 Subject: [PATCH] bgpd: Handle encap attributes the same way as others using setters/getters To be consistent and error-safe. Signed-off-by: Donatas Abraitis --- bgpd/bgp_attr.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c index cca2ca2b0..ef9bb4f03 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)