Merge pull request #11882 from opensourcerouting/fix/increase_peer_af_flags_to_u64

bgpd: Increase peer af_flags to uint64_t
This commit is contained in:
Russ White 2022-09-06 11:24:39 -04:00 committed by GitHub
commit dd57a2c78e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 53 additions and 50 deletions

View File

@ -442,15 +442,16 @@ static unsigned int updgrp_hash_key_make(const void *p)
if (bgp_debug_neighbor_events(peer)) { if (bgp_debug_neighbor_events(peer)) {
zlog_debug( zlog_debug(
"%pBP Update Group Hash: sort: %d UpdGrpFlags: %ju UpdGrpAFFlags: %u", "%pBP Update Group Hash: sort: %d UpdGrpFlags: %ju UpdGrpAFFlags: %ju",
peer, peer->sort, peer, peer->sort,
(intmax_t)(peer->flags & PEER_UPDGRP_FLAGS), (intmax_t)CHECK_FLAG(peer->flags, PEER_UPDGRP_FLAGS),
flags & PEER_UPDGRP_AF_FLAGS); (intmax_t)CHECK_FLAG(flags, PEER_UPDGRP_AF_FLAGS));
zlog_debug( zlog_debug(
"%pBP Update Group Hash: addpath: %u UpdGrpCapFlag: %u UpdGrpCapAFFlag: %u route_adv: %u change local as: %u", "%pBP Update Group Hash: addpath: %u UpdGrpCapFlag: %u UpdGrpCapAFFlag: %u route_adv: %u change local as: %u",
peer, (uint32_t)peer->addpath_type[afi][safi], peer, (uint32_t)peer->addpath_type[afi][safi],
peer->cap & PEER_UPDGRP_CAP_FLAGS, CHECK_FLAG(peer->cap, PEER_UPDGRP_CAP_FLAGS),
peer->af_cap[afi][safi] & PEER_UPDGRP_AF_CAP_FLAGS, CHECK_FLAG(peer->af_cap[afi][safi],
PEER_UPDGRP_AF_CAP_FLAGS),
peer->v_routeadv, peer->change_local_as); peer->v_routeadv, peer->change_local_as);
zlog_debug( zlog_debug(
"%pBP Update Group Hash: max packet size: %u pmax_out: %u Peer Group: %s rmap out: %s", "%pBP Update Group Hash: max packet size: %u pmax_out: %u Peer Group: %s rmap out: %s",
@ -484,14 +485,14 @@ static unsigned int updgrp_hash_key_make(const void *p)
peer->shared_network && peer->shared_network &&
peer_afi_active_nego(peer, AFI_IP6)); peer_afi_active_nego(peer, AFI_IP6));
zlog_debug( zlog_debug(
"%pBP Update Group Hash: Lonesoul: %d ORF prefix: %u ORF old: %u max prefix out: %u", "%pBP Update Group Hash: Lonesoul: %d ORF prefix: %u ORF old: %u max prefix out: %ju",
peer, !!CHECK_FLAG(peer->flags, PEER_FLAG_LONESOUL), peer, !!CHECK_FLAG(peer->flags, PEER_FLAG_LONESOUL),
CHECK_FLAG(peer->af_cap[afi][safi], CHECK_FLAG(peer->af_cap[afi][safi],
PEER_CAP_ORF_PREFIX_SM_RCV), PEER_CAP_ORF_PREFIX_SM_RCV),
CHECK_FLAG(peer->af_cap[afi][safi], CHECK_FLAG(peer->af_cap[afi][safi],
PEER_CAP_ORF_PREFIX_SM_OLD_RCV), PEER_CAP_ORF_PREFIX_SM_OLD_RCV),
CHECK_FLAG(peer->af_flags[afi][safi], (intmax_t)CHECK_FLAG(peer->af_flags[afi][safi],
PEER_FLAG_MAX_PREFIX_OUT)); PEER_FLAG_MAX_PREFIX_OUT));
zlog_debug("%pBP Update Group Hash key: %u", peer, key); zlog_debug("%pBP Update Group Hash key: %u", peer, key);
} }
return key; return key;

View File

@ -16507,7 +16507,7 @@ static bool peergroup_flag_check(struct peer *peer, uint64_t flag)
} }
static bool peergroup_af_flag_check(struct peer *peer, afi_t afi, safi_t safi, static bool peergroup_af_flag_check(struct peer *peer, afi_t afi, safi_t safi,
uint32_t flag) uint64_t flag)
{ {
if (!peer_group_active(peer)) { if (!peer_group_active(peer)) {
if (CHECK_FLAG(peer->af_flags_invert[afi][safi], flag)) if (CHECK_FLAG(peer->af_flags_invert[afi][safi], flag))

View File

@ -969,7 +969,7 @@ int peer_af_flag_check(struct peer *peer, afi_t afi, safi_t safi, uint32_t flag)
} }
void peer_af_flag_inherit(struct peer *peer, afi_t afi, safi_t safi, void peer_af_flag_inherit(struct peer *peer, afi_t afi, safi_t safi,
uint32_t flag) uint64_t flag)
{ {
bool group_val; bool group_val;
@ -2002,8 +2002,8 @@ static void peer_group2peer_config_copy_af(struct peer_group *group,
{ {
int in = FILTER_IN; int in = FILTER_IN;
int out = FILTER_OUT; int out = FILTER_OUT;
uint32_t flags_tmp; uint64_t flags_tmp;
uint32_t pflags_ovrd; uint64_t pflags_ovrd;
uint8_t *pfilter_ovrd; uint8_t *pfilter_ovrd;
struct peer *conf; struct peer *conf;
@ -4579,7 +4579,7 @@ int peer_flag_unset(struct peer *peer, uint64_t flag)
} }
static int peer_af_flag_modify(struct peer *peer, afi_t afi, safi_t safi, static int peer_af_flag_modify(struct peer *peer, afi_t afi, safi_t safi,
uint32_t flag, bool set) uint64_t flag, bool set)
{ {
int found; int found;
int size; int size;
@ -4762,12 +4762,12 @@ static int peer_af_flag_modify(struct peer *peer, afi_t afi, safi_t safi,
return 0; return 0;
} }
int peer_af_flag_set(struct peer *peer, afi_t afi, safi_t safi, uint32_t flag) int peer_af_flag_set(struct peer *peer, afi_t afi, safi_t safi, uint64_t flag)
{ {
return peer_af_flag_modify(peer, afi, safi, flag, 1); return peer_af_flag_modify(peer, afi, safi, flag, 1);
} }
int peer_af_flag_unset(struct peer *peer, afi_t afi, safi_t safi, uint32_t flag) int peer_af_flag_unset(struct peer *peer, afi_t afi, safi_t safi, uint64_t flag)
{ {
return peer_af_flag_modify(peer, afi, safi, flag, 0); return peer_af_flag_modify(peer, afi, safi, flag, 0);
} }

View File

@ -1380,38 +1380,38 @@ struct peer {
* specific attributes are being treated the exact same way as global * specific attributes are being treated the exact same way as global
* peer attributes. * peer attributes.
*/ */
uint32_t af_flags_override[AFI_MAX][SAFI_MAX]; uint64_t af_flags_override[AFI_MAX][SAFI_MAX];
uint32_t af_flags_invert[AFI_MAX][SAFI_MAX]; uint64_t af_flags_invert[AFI_MAX][SAFI_MAX];
uint32_t af_flags[AFI_MAX][SAFI_MAX]; uint64_t af_flags[AFI_MAX][SAFI_MAX];
#define PEER_FLAG_SEND_COMMUNITY (1U << 0) /* send-community */ #define PEER_FLAG_SEND_COMMUNITY (1ULL << 0)
#define PEER_FLAG_SEND_EXT_COMMUNITY (1U << 1) /* send-community ext. */ #define PEER_FLAG_SEND_EXT_COMMUNITY (1ULL << 1)
#define PEER_FLAG_NEXTHOP_SELF (1U << 2) /* next-hop-self */ #define PEER_FLAG_NEXTHOP_SELF (1ULL << 2)
#define PEER_FLAG_REFLECTOR_CLIENT (1U << 3) /* reflector-client */ #define PEER_FLAG_REFLECTOR_CLIENT (1ULL << 3)
#define PEER_FLAG_RSERVER_CLIENT (1U << 4) /* route-server-client */ #define PEER_FLAG_RSERVER_CLIENT (1ULL << 4)
#define PEER_FLAG_SOFT_RECONFIG (1U << 5) /* soft-reconfiguration */ #define PEER_FLAG_SOFT_RECONFIG (1ULL << 5)
#define PEER_FLAG_AS_PATH_UNCHANGED (1U << 6) /* transparent-as */ #define PEER_FLAG_AS_PATH_UNCHANGED (1ULL << 6)
#define PEER_FLAG_NEXTHOP_UNCHANGED (1U << 7) /* transparent-next-hop */ #define PEER_FLAG_NEXTHOP_UNCHANGED (1ULL << 7)
#define PEER_FLAG_MED_UNCHANGED (1U << 8) /* transparent-next-hop */ #define PEER_FLAG_MED_UNCHANGED (1ULL << 8)
#define PEER_FLAG_DEFAULT_ORIGINATE (1U << 9) /* default-originate */ #define PEER_FLAG_DEFAULT_ORIGINATE (1ULL << 9)
#define PEER_FLAG_REMOVE_PRIVATE_AS (1U << 10) /* remove-private-as */ #define PEER_FLAG_REMOVE_PRIVATE_AS (1ULL << 10)
#define PEER_FLAG_ALLOWAS_IN (1U << 11) /* set allowas-in */ #define PEER_FLAG_ALLOWAS_IN (1ULL << 11)
#define PEER_FLAG_ORF_PREFIX_SM (1U << 12) /* orf capability send-mode */ #define PEER_FLAG_ORF_PREFIX_SM (1ULL << 12)
#define PEER_FLAG_ORF_PREFIX_RM (1U << 13) /* orf capability receive-mode */ #define PEER_FLAG_ORF_PREFIX_RM (1ULL << 13)
#define PEER_FLAG_MAX_PREFIX (1U << 14) /* maximum prefix */ #define PEER_FLAG_MAX_PREFIX (1ULL << 14)
#define PEER_FLAG_MAX_PREFIX_WARNING (1U << 15) /* maximum prefix warning-only */ #define PEER_FLAG_MAX_PREFIX_WARNING (1ULL << 15)
#define PEER_FLAG_NEXTHOP_LOCAL_UNCHANGED (1U << 16) /* leave link-local nexthop unchanged */ #define PEER_FLAG_NEXTHOP_LOCAL_UNCHANGED (1ULL << 16)
#define PEER_FLAG_FORCE_NEXTHOP_SELF (1U << 17) /* next-hop-self force */ #define PEER_FLAG_FORCE_NEXTHOP_SELF (1ULL << 17)
#define PEER_FLAG_REMOVE_PRIVATE_AS_ALL (1U << 18) /* remove-private-as all */ #define PEER_FLAG_REMOVE_PRIVATE_AS_ALL (1ULL << 18)
#define PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE (1U << 19) /* remove-private-as replace-as */ #define PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE (1ULL << 19)
#define PEER_FLAG_AS_OVERRIDE (1U << 20) /* as-override */ #define PEER_FLAG_AS_OVERRIDE (1ULL << 20)
#define PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE (1U << 21) /* remove-private-as all replace-as */ #define PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE (1ULL << 21)
#define PEER_FLAG_WEIGHT (1U << 24) /* weight */ #define PEER_FLAG_WEIGHT (1ULL << 24)
#define PEER_FLAG_ALLOWAS_IN_ORIGIN (1U << 25) /* allowas-in origin */ #define PEER_FLAG_ALLOWAS_IN_ORIGIN (1ULL << 25)
#define PEER_FLAG_SEND_LARGE_COMMUNITY (1U << 26) /* Send large Communities */ #define PEER_FLAG_SEND_LARGE_COMMUNITY (1ULL << 26)
#define PEER_FLAG_MAX_PREFIX_OUT (1U << 27) /* outgoing maximum prefix */ #define PEER_FLAG_MAX_PREFIX_OUT (1ULL << 27)
#define PEER_FLAG_MAX_PREFIX_FORCE (1U << 28) /* maximum-prefix <num> force */ #define PEER_FLAG_MAX_PREFIX_FORCE (1ULL << 28)
#define PEER_FLAG_DISABLE_ADDPATH_RX (1U << 29) /* disable-addpath-rx */ #define PEER_FLAG_DISABLE_ADDPATH_RX (1ULL << 29)
#define PEER_FLAG_SOO (1U << 30) /* soo */ #define PEER_FLAG_SOO (1ULL << 30)
enum bgp_addpath_strat addpath_type[AFI_MAX][SAFI_MAX]; enum bgp_addpath_strat addpath_type[AFI_MAX][SAFI_MAX];
@ -2180,11 +2180,13 @@ extern int peer_flag_set(struct peer *peer, uint64_t flag);
extern int peer_flag_unset(struct peer *peer, uint64_t flag); extern int peer_flag_unset(struct peer *peer, uint64_t flag);
extern void peer_flag_inherit(struct peer *peer, uint64_t flag); extern void peer_flag_inherit(struct peer *peer, uint64_t flag);
extern int peer_af_flag_set(struct peer *, afi_t, safi_t, uint32_t); extern int peer_af_flag_set(struct peer *peer, afi_t afi, safi_t safi,
extern int peer_af_flag_unset(struct peer *, afi_t, safi_t, uint32_t); uint64_t flag);
extern int peer_af_flag_unset(struct peer *peer, afi_t afi, safi_t safi,
uint64_t flag);
extern int peer_af_flag_check(struct peer *, afi_t, safi_t, uint32_t); extern int peer_af_flag_check(struct peer *, afi_t, safi_t, uint32_t);
extern void peer_af_flag_inherit(struct peer *peer, afi_t afi, safi_t safi, extern void peer_af_flag_inherit(struct peer *peer, afi_t afi, safi_t safi,
uint32_t flag); uint64_t flag);
extern void peer_change_action(struct peer *peer, afi_t afi, safi_t safi, extern void peer_change_action(struct peer *peer, afi_t afi, safi_t safi,
enum peer_change_type type); enum peer_change_type type);