Merge pull request #12888 from opensourcerouting/fix/peer_af_flag_check_integer

bgpd: Flags fixes
This commit is contained in:
Donald Sharp 2023-02-24 09:28:41 -05:00 committed by GitHub
commit 68b48017ed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 32 additions and 20 deletions

View File

@ -317,7 +317,7 @@ static unsigned int updgrp_hash_key_make(const void *p)
const struct update_group *updgrp;
const struct peer *peer;
const struct bgp_filter *filter;
uint32_t flags;
uint64_t flags;
uint32_t key;
afi_t afi;
safi_t safi;
@ -501,8 +501,8 @@ static bool updgrp_hash_cmp(const void *p1, const void *p2)
const struct update_group *grp2;
const struct peer *pe1;
const struct peer *pe2;
uint32_t flags1;
uint32_t flags2;
uint64_t flags1;
uint64_t flags2;
const struct bgp_filter *fl1;
const struct bgp_filter *fl2;
afi_t afi;

View File

@ -5671,7 +5671,7 @@ DEFPY(neighbor_capability_software_version,
}
static int peer_af_flag_modify_vty(struct vty *vty, const char *peer_str,
afi_t afi, safi_t safi, uint32_t flag,
afi_t afi, safi_t safi, uint64_t flag,
int set)
{
int ret;
@ -5690,13 +5690,13 @@ static int peer_af_flag_modify_vty(struct vty *vty, const char *peer_str,
}
static int peer_af_flag_set_vty(struct vty *vty, const char *peer_str,
afi_t afi, safi_t safi, uint32_t flag)
afi_t afi, safi_t safi, uint64_t flag)
{
return peer_af_flag_modify_vty(vty, peer_str, afi, safi, flag, 1);
}
static int peer_af_flag_unset_vty(struct vty *vty, const char *peer_str,
afi_t afi, safi_t safi, uint32_t flag)
afi_t afi, safi_t safi, uint64_t flag)
{
return peer_af_flag_modify_vty(vty, peer_str, afi, safi, flag, 0);
}
@ -17154,7 +17154,7 @@ static bool peergroup_af_flag_check(struct peer *peer, afi_t afi, safi_t safi,
if (CHECK_FLAG(peer->af_flags_invert[afi][safi], flag))
return !peer_af_flag_check(peer, afi, safi, flag);
else
return !!peer_af_flag_check(peer, afi, safi, flag);
return peer_af_flag_check(peer, afi, safi, flag);
}
return !!CHECK_FLAG(peer->af_flags_override[afi][safi], flag);

View File

@ -977,9 +977,10 @@ void peer_flag_inherit(struct peer *peer, uint64_t flag)
COND_FLAG(peer->flags, flag, group_val);
}
int peer_af_flag_check(struct peer *peer, afi_t afi, safi_t safi, uint32_t flag)
bool peer_af_flag_check(struct peer *peer, afi_t afi, safi_t safi,
uint64_t flag)
{
return CHECK_FLAG(peer->af_flags[afi][safi], flag);
return !!CHECK_FLAG(peer->af_flags[afi][safi], flag);
}
void peer_af_flag_inherit(struct peer *peer, afi_t afi, safi_t safi,
@ -2725,7 +2726,7 @@ struct peer_group *peer_group_get(struct bgp *bgp, const char *name)
static void peer_group2peer_config_copy(struct peer_group *group,
struct peer *peer)
{
uint32_t flags_tmp;
uint64_t flags_tmp;
struct peer *conf;
bool config_node = !!CHECK_FLAG(peer->flags, PEER_FLAG_CONFIG_NODE);
@ -4517,7 +4518,7 @@ static int peer_flag_action_set(const struct peer_flag_action *action_list,
return found;
}
static void peer_flag_modify_action(struct peer *peer, uint32_t flag)
static void peer_flag_modify_action(struct peer *peer, uint64_t flag)
{
if (flag == PEER_FLAG_SHUTDOWN) {
if (CHECK_FLAG(peer->flags, flag)) {

View File

@ -1441,14 +1441,14 @@ struct peer {
#define PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE (1ULL << 19)
#define PEER_FLAG_AS_OVERRIDE (1ULL << 20)
#define PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE (1ULL << 21)
#define PEER_FLAG_WEIGHT (1ULL << 24)
#define PEER_FLAG_ALLOWAS_IN_ORIGIN (1ULL << 25)
#define PEER_FLAG_SEND_LARGE_COMMUNITY (1ULL << 26)
#define PEER_FLAG_MAX_PREFIX_OUT (1ULL << 27)
#define PEER_FLAG_MAX_PREFIX_FORCE (1ULL << 28)
#define PEER_FLAG_DISABLE_ADDPATH_RX (1ULL << 29)
#define PEER_FLAG_SOO (1ULL << 30)
#define PEER_FLAG_ACCEPT_OWN (1ULL << 31)
#define PEER_FLAG_WEIGHT (1ULL << 22)
#define PEER_FLAG_ALLOWAS_IN_ORIGIN (1ULL << 23)
#define PEER_FLAG_SEND_LARGE_COMMUNITY (1ULL << 24)
#define PEER_FLAG_MAX_PREFIX_OUT (1ULL << 25)
#define PEER_FLAG_MAX_PREFIX_FORCE (1ULL << 26)
#define PEER_FLAG_DISABLE_ADDPATH_RX (1ULL << 27)
#define PEER_FLAG_SOO (1ULL << 28)
#define PEER_FLAG_ACCEPT_OWN (1ULL << 63)
enum bgp_addpath_strat addpath_type[AFI_MAX][SAFI_MAX];
@ -2247,7 +2247,8 @@ extern int peer_af_flag_set(struct peer *peer, afi_t afi, safi_t safi,
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 bool peer_af_flag_check(struct peer *peer, afi_t afi, safi_t safi,
uint64_t flag);
extern void peer_af_flag_inherit(struct peer *peer, afi_t afi, safi_t safi,
uint64_t flag);
extern void peer_change_action(struct peer *peer, afi_t afi, safi_t safi,

View File

@ -639,6 +639,14 @@ static struct test_peer_attr test_peer_attrs[] = {
.u.flag = PEER_FLAG_WEIGHT,
.handlers[0] = TEST_HANDLER(weight),
},
{
.cmd = "accept-own",
.peer_cmd = "accept-own",
.group_cmd = "accept-own",
.families[0] = {.afi = AFI_IP, .safi = SAFI_MPLS_VPN},
.families[1] = {.afi = AFI_IP6, .safi = SAFI_MPLS_VPN},
.u.flag = PEER_FLAG_ACCEPT_OWN,
},
{NULL}
};
/* clang-format on */

View File

@ -196,3 +196,5 @@ TestFlag.okfail("peer\\ipv4-unicast\\weight")
TestFlag.okfail("peer\\ipv4-multicast\\weight")
TestFlag.okfail("peer\\ipv6-unicast\\weight")
TestFlag.okfail("peer\\ipv6-multicast\\weight")
TestFlag.okfail("peer\\ipv4-vpn\\accept-own")
TestFlag.okfail("peer\\ipv6-vpn\\accept-own")