From f3634202613ce5d492582567a505ee494e6dacb6 Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Wed, 9 Feb 2022 13:02:02 +0300 Subject: Revert "bgpd: Free only subattributes, not the whole attr_extra pointer" This reverts commit 0911206097dc04315bcd6b3accd6236a047a1e06. Signed-off-by: Igor Ryzhov --- bgpd/bgp_attr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bgpd/bgp_attr.c') diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c index 97ff4caca..b7113757b 100644 --- a/bgpd/bgp_attr.c +++ b/bgpd/bgp_attr.c @@ -1165,6 +1165,7 @@ void bgp_attr_unintern(struct attr **pattr) if (attr->refcnt == 0) { ret = hash_release(attrhash, attr); assert(ret != NULL); + bgp_attr_extra_free(attr); XFREE(MTYPE_ATTR, attr); *pattr = NULL; } @@ -1228,7 +1229,6 @@ void bgp_attr_flush(struct attr *attr) bgp_attr_set_vnc_subtlvs(attr, NULL); } #endif - bgp_attr_extra_free(attr); } /* Implement draft-scudder-idr-optional-transitive behaviour and -- cgit v1.2.3 From a2d3103a01c41d8befa385e1844cba2d9a90399a Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Wed, 9 Feb 2022 13:06:51 +0300 Subject: Revert "bgpd: Move out ipv6_ecommunity struct from attr to attr_extra" This reverts commit 2703b7db19cebad82772d5210132dab412b855c3. Signed-off-by: Igor Ryzhov --- bgpd/bgp_attr.c | 12 ------------ bgpd/bgp_attr.h | 25 ++++--------------------- bgpd/bgp_memory.c | 1 - bgpd/bgp_memory.h | 1 - 4 files changed, 4 insertions(+), 35 deletions(-) (limited to 'bgpd/bgp_attr.c') diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c index b7113757b..0b32ac913 100644 --- a/bgpd/bgp_attr.c +++ b/bgpd/bgp_attr.c @@ -95,16 +95,6 @@ static const struct message attr_flag_str[] = { static struct hash *cluster_hash; -struct attr_extra *bgp_attr_extra_alloc(void) -{ - return XCALLOC(MTYPE_ATTR_EXTRA, sizeof(struct attr_extra)); -} - -void bgp_attr_extra_free(struct attr *attr) -{ - XFREE(MTYPE_ATTR_EXTRA, attr->extra); -} - static void *cluster_hash_alloc(void *p) { const struct cluster_list *val = (const struct cluster_list *)p; @@ -788,7 +778,6 @@ static void attrhash_init(void) */ static void attr_vfree(void *attr) { - bgp_attr_extra_free(attr); XFREE(MTYPE_ATTR, attr); } @@ -1165,7 +1154,6 @@ void bgp_attr_unintern(struct attr **pattr) if (attr->refcnt == 0) { ret = hash_release(attrhash, attr); assert(ret != NULL); - bgp_attr_extra_free(attr); XFREE(MTYPE_ATTR, attr); *pattr = NULL; } diff --git a/bgpd/bgp_attr.h b/bgpd/bgp_attr.h index f88af4f43..7a33ed3da 100644 --- a/bgpd/bgp_attr.h +++ b/bgpd/bgp_attr.h @@ -159,11 +159,6 @@ struct bgp_attr_srv6_l3vpn { uint8_t transposition_offset; }; -struct attr_extra { - /* Extended Communities attribute. */ - struct ecommunity *ipv6_ecommunity; -}; - /* BGP core attribute structure. */ struct attr { /* AS Path structure */ @@ -204,8 +199,8 @@ struct attr { /* Extended Communities attribute. */ struct ecommunity *ecommunity; - /* Extra attributes, non IPv4/IPv6 AFI related */ - struct attr_extra *extra; + /* Extended Communities attribute. */ + struct ecommunity *ipv6_ecommunity; /* Large Communities attribute. */ struct lcommunity *lcommunity; @@ -478,8 +473,6 @@ extern void bgp_packet_mpunreach_end(struct stream *s, size_t attrlen_pnt); extern bgp_attr_parse_ret_t bgp_attr_nexthop_valid(struct peer *peer, struct attr *attr); -extern struct attr_extra *bgp_attr_extra_alloc(void); -extern void bgp_attr_extra_free(struct attr *attr); static inline int bgp_rmap_nhop_changed(uint32_t out_rmap_flags, uint32_t in_rmap_flags) @@ -528,23 +521,13 @@ static inline void bgp_attr_set_ecommunity(struct attr *attr, static inline struct ecommunity * bgp_attr_get_ipv6_ecommunity(const struct attr *attr) { - if (attr->extra) - return attr->extra->ipv6_ecommunity; - - return NULL; + return attr->ipv6_ecommunity; } static inline void bgp_attr_set_ipv6_ecommunity(struct attr *attr, struct ecommunity *ipv6_ecomm) { - if (!attr->extra) { - if (!ipv6_ecomm) - return; - - attr->extra = bgp_attr_extra_alloc(); - } - - attr->extra->ipv6_ecommunity = ipv6_ecomm; + attr->ipv6_ecommunity = ipv6_ecomm; } static inline struct transit *bgp_attr_get_transit(const struct attr *attr) diff --git a/bgpd/bgp_memory.c b/bgpd/bgp_memory.c index 7fbadab69..ffb1ec162 100644 --- a/bgpd/bgp_memory.c +++ b/bgpd/bgp_memory.c @@ -43,7 +43,6 @@ DEFINE_MTYPE(BGPD, BGP_UPDGRP, "BGP update group"); DEFINE_MTYPE(BGPD, BGP_UPD_SUBGRP, "BGP update subgroup"); DEFINE_MTYPE(BGPD, BGP_PACKET, "BGP packet"); DEFINE_MTYPE(BGPD, ATTR, "BGP attribute"); -DEFINE_MTYPE(BGPD, ATTR_EXTRA, "BGP extra attribute"); DEFINE_MTYPE(BGPD, AS_PATH, "BGP aspath"); DEFINE_MTYPE(BGPD, AS_SEG, "BGP aspath seg"); DEFINE_MTYPE(BGPD, AS_SEG_DATA, "BGP aspath segment data"); diff --git a/bgpd/bgp_memory.h b/bgpd/bgp_memory.h index ffab8a1bc..63e7b40ef 100644 --- a/bgpd/bgp_memory.h +++ b/bgpd/bgp_memory.h @@ -39,7 +39,6 @@ DECLARE_MTYPE(BGP_UPDGRP); DECLARE_MTYPE(BGP_UPD_SUBGRP); DECLARE_MTYPE(BGP_PACKET); DECLARE_MTYPE(ATTR); -DECLARE_MTYPE(ATTR_EXTRA); DECLARE_MTYPE(AS_PATH); DECLARE_MTYPE(AS_SEG); DECLARE_MTYPE(AS_SEG_DATA); -- cgit v1.2.3