mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-11 13:17:49 +00:00
Revert "bgpd: Move out ipv6_ecommunity struct from attr to attr_extra"
This reverts commit 2703b7db19
.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
This commit is contained in:
parent
adde1db9f4
commit
a2d3103a01
@ -95,16 +95,6 @@ static const struct message attr_flag_str[] = {
|
|||||||
|
|
||||||
static struct hash *cluster_hash;
|
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)
|
static void *cluster_hash_alloc(void *p)
|
||||||
{
|
{
|
||||||
const struct cluster_list *val = (const struct cluster_list *)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)
|
static void attr_vfree(void *attr)
|
||||||
{
|
{
|
||||||
bgp_attr_extra_free(attr);
|
|
||||||
XFREE(MTYPE_ATTR, attr);
|
XFREE(MTYPE_ATTR, attr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1165,7 +1154,6 @@ void bgp_attr_unintern(struct attr **pattr)
|
|||||||
if (attr->refcnt == 0) {
|
if (attr->refcnt == 0) {
|
||||||
ret = hash_release(attrhash, attr);
|
ret = hash_release(attrhash, attr);
|
||||||
assert(ret != NULL);
|
assert(ret != NULL);
|
||||||
bgp_attr_extra_free(attr);
|
|
||||||
XFREE(MTYPE_ATTR, attr);
|
XFREE(MTYPE_ATTR, attr);
|
||||||
*pattr = NULL;
|
*pattr = NULL;
|
||||||
}
|
}
|
||||||
|
@ -159,11 +159,6 @@ struct bgp_attr_srv6_l3vpn {
|
|||||||
uint8_t transposition_offset;
|
uint8_t transposition_offset;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct attr_extra {
|
|
||||||
/* Extended Communities attribute. */
|
|
||||||
struct ecommunity *ipv6_ecommunity;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* BGP core attribute structure. */
|
/* BGP core attribute structure. */
|
||||||
struct attr {
|
struct attr {
|
||||||
/* AS Path structure */
|
/* AS Path structure */
|
||||||
@ -204,8 +199,8 @@ struct attr {
|
|||||||
/* Extended Communities attribute. */
|
/* Extended Communities attribute. */
|
||||||
struct ecommunity *ecommunity;
|
struct ecommunity *ecommunity;
|
||||||
|
|
||||||
/* Extra attributes, non IPv4/IPv6 AFI related */
|
/* Extended Communities attribute. */
|
||||||
struct attr_extra *extra;
|
struct ecommunity *ipv6_ecommunity;
|
||||||
|
|
||||||
/* Large Communities attribute. */
|
/* Large Communities attribute. */
|
||||||
struct lcommunity *lcommunity;
|
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,
|
extern bgp_attr_parse_ret_t bgp_attr_nexthop_valid(struct peer *peer,
|
||||||
struct attr *attr);
|
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,
|
static inline int bgp_rmap_nhop_changed(uint32_t out_rmap_flags,
|
||||||
uint32_t in_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 *
|
static inline struct ecommunity *
|
||||||
bgp_attr_get_ipv6_ecommunity(const struct attr *attr)
|
bgp_attr_get_ipv6_ecommunity(const struct attr *attr)
|
||||||
{
|
{
|
||||||
if (attr->extra)
|
return attr->ipv6_ecommunity;
|
||||||
return attr->extra->ipv6_ecommunity;
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void bgp_attr_set_ipv6_ecommunity(struct attr *attr,
|
static inline void bgp_attr_set_ipv6_ecommunity(struct attr *attr,
|
||||||
struct ecommunity *ipv6_ecomm)
|
struct ecommunity *ipv6_ecomm)
|
||||||
{
|
{
|
||||||
if (!attr->extra) {
|
attr->ipv6_ecommunity = ipv6_ecomm;
|
||||||
if (!ipv6_ecomm)
|
|
||||||
return;
|
|
||||||
|
|
||||||
attr->extra = bgp_attr_extra_alloc();
|
|
||||||
}
|
|
||||||
|
|
||||||
attr->extra->ipv6_ecommunity = ipv6_ecomm;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct transit *bgp_attr_get_transit(const struct attr *attr)
|
static inline struct transit *bgp_attr_get_transit(const struct attr *attr)
|
||||||
|
@ -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_UPD_SUBGRP, "BGP update subgroup");
|
||||||
DEFINE_MTYPE(BGPD, BGP_PACKET, "BGP packet");
|
DEFINE_MTYPE(BGPD, BGP_PACKET, "BGP packet");
|
||||||
DEFINE_MTYPE(BGPD, ATTR, "BGP attribute");
|
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_PATH, "BGP aspath");
|
||||||
DEFINE_MTYPE(BGPD, AS_SEG, "BGP aspath seg");
|
DEFINE_MTYPE(BGPD, AS_SEG, "BGP aspath seg");
|
||||||
DEFINE_MTYPE(BGPD, AS_SEG_DATA, "BGP aspath segment data");
|
DEFINE_MTYPE(BGPD, AS_SEG_DATA, "BGP aspath segment data");
|
||||||
|
@ -39,7 +39,6 @@ DECLARE_MTYPE(BGP_UPDGRP);
|
|||||||
DECLARE_MTYPE(BGP_UPD_SUBGRP);
|
DECLARE_MTYPE(BGP_UPD_SUBGRP);
|
||||||
DECLARE_MTYPE(BGP_PACKET);
|
DECLARE_MTYPE(BGP_PACKET);
|
||||||
DECLARE_MTYPE(ATTR);
|
DECLARE_MTYPE(ATTR);
|
||||||
DECLARE_MTYPE(ATTR_EXTRA);
|
|
||||||
DECLARE_MTYPE(AS_PATH);
|
DECLARE_MTYPE(AS_PATH);
|
||||||
DECLARE_MTYPE(AS_SEG);
|
DECLARE_MTYPE(AS_SEG);
|
||||||
DECLARE_MTYPE(AS_SEG_DATA);
|
DECLARE_MTYPE(AS_SEG_DATA);
|
||||||
|
Loading…
Reference in New Issue
Block a user