From 3d1ae061a352ae7a5c215ece62b2bdb9992a2596 Mon Sep 17 00:00:00 2001 From: Ryoga Saito Date: Thu, 16 Dec 2021 23:09:55 +0900 Subject: [PATCH] bgpd: delete NULL assignment in bgp_attr_hash_alloc If soft-reconfiguration is enabled, bgp_adj_in_set will be called from bgp_update and bgp_adj_in_set will call bgp_attr_intern to intern attr pointer. If given attr isn't found in attrhash, hash_get will call bgp_attr_hash_alloc to allocate new attr structure. In bgp_attr_hash_alloc, NULL will be assigned to srv6_vpn field and srv6_l3vpn field in origin attr pointer. attr->srv6_vpn and attr->srv6_l3vpn are interned in bgp_attr_intern, so NULL assignment isn't needed. And, these fields are used later in bgp_update to set SRv6 information to bgp_path_info. If bgp_attr_hash_alloc assign NULL to these fields, SRv6 information will be lost and incorrect routes are inserted into data-plane. Signed-off-by: Ryoga Saito --- bgpd/bgp_attr.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c index 7de7a6628f..e65af838e4 100644 --- a/bgpd/bgp_attr.c +++ b/bgpd/bgp_attr.c @@ -834,10 +834,6 @@ static void *bgp_attr_hash_alloc(void *p) if (vnc_subtlvs) bgp_attr_set_vnc_subtlvs(val, NULL); #endif - if (val->srv6_l3vpn) - val->srv6_l3vpn = NULL; - if (val->srv6_vpn) - val->srv6_vpn = NULL; attr->refcnt = 0; return attr;