diff options
| author | Donatas Abraitis <donatas@opensourcerouting.org> | 2023-08-03 22:52:09 +0300 | 
|---|---|---|
| committer | Donatas Abraitis <donatas@opensourcerouting.org> | 2023-08-03 22:52:09 +0300 | 
| commit | 312b8c02a68f20df39353e9a52e7b49310dbfee6 (patch) | |
| tree | e952793c83d3ee6ca2e6cab1451dd05e85b19e60 /bgpd/bgp_attr.c | |
| parent | 09b453775541a66439ddb5b0c24c5f8b3a04928c (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.c | 13 | 
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)  | 
