Merge pull request #16931 from sri-mohan1/srib-24-frr-a

bgpd: changes for code maintainability
This commit is contained in:
Donald Sharp 2024-09-26 08:11:32 -04:00 committed by GitHub
commit f32e8ec202
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -305,14 +305,14 @@ int bgp_flowspec_op_decode(enum bgp_flowspec_util_nlri_t type,
break; break;
mval->value = value; mval->value = value;
if (op[5] == 1) if (op[5] == 1)
mval->compare_operator |= SET_FLAG(mval->compare_operator,
OPERATOR_COMPARE_LESS_THAN; OPERATOR_COMPARE_LESS_THAN);
if (op[6] == 1) if (op[6] == 1)
mval->compare_operator |= SET_FLAG(mval->compare_operator,
OPERATOR_COMPARE_GREATER_THAN; OPERATOR_COMPARE_GREATER_THAN);
if (op[7] == 1) if (op[7] == 1)
mval->compare_operator |= SET_FLAG(mval->compare_operator,
OPERATOR_COMPARE_EQUAL_TO; OPERATOR_COMPARE_EQUAL_TO);
if (op[1] == 1) if (op[1] == 1)
mval->unary_operator = OPERATOR_UNARY_AND; mval->unary_operator = OPERATOR_UNARY_AND;
else else
@ -413,16 +413,16 @@ int bgp_flowspec_bitmask_decode(enum bgp_flowspec_util_nlri_t type,
mval->value = value; mval->value = value;
if (op[6] == 1) { if (op[6] == 1) {
/* different from */ /* different from */
mval->compare_operator |= SET_FLAG(mval->compare_operator,
OPERATOR_COMPARE_LESS_THAN; OPERATOR_COMPARE_LESS_THAN);
mval->compare_operator |= SET_FLAG(mval->compare_operator,
OPERATOR_COMPARE_GREATER_THAN; OPERATOR_COMPARE_GREATER_THAN);
} else } else
mval->compare_operator |= SET_FLAG(mval->compare_operator,
OPERATOR_COMPARE_EQUAL_TO; OPERATOR_COMPARE_EQUAL_TO);
if (op[7] == 1) if (op[7] == 1)
mval->compare_operator |= SET_FLAG(mval->compare_operator,
OPERATOR_COMPARE_EXACT_MATCH; OPERATOR_COMPARE_EXACT_MATCH);
if (op[1] == 1) if (op[1] == 1)
mval->unary_operator = mval->unary_operator =
OPERATOR_UNARY_AND; OPERATOR_UNARY_AND;
@ -467,11 +467,11 @@ int bgp_flowspec_match_rules_fill(uint8_t *nlri_content, int len,
case FLOWSPEC_SRC_PREFIX: case FLOWSPEC_SRC_PREFIX:
bitmask = 0; bitmask = 0;
if (type == FLOWSPEC_DEST_PREFIX) { if (type == FLOWSPEC_DEST_PREFIX) {
bitmask |= PREFIX_DST_PRESENT; SET_FLAG(bitmask, PREFIX_DST_PRESENT);
prefix = &bpem->dst_prefix; prefix = &bpem->dst_prefix;
prefix_offset = &bpem->dst_prefix_offset; prefix_offset = &bpem->dst_prefix_offset;
} else { } else {
bitmask |= PREFIX_SRC_PRESENT; SET_FLAG(bitmask, PREFIX_SRC_PRESENT);
prefix = &bpem->src_prefix; prefix = &bpem->src_prefix;
prefix_offset = &bpem->src_prefix_offset; prefix_offset = &bpem->src_prefix_offset;
} }
@ -491,14 +491,16 @@ int bgp_flowspec_match_rules_fill(uint8_t *nlri_content, int len,
*/ */
if (prefix->family == AF_INET if (prefix->family == AF_INET
&& prefix->u.prefix4.s_addr == INADDR_ANY) && prefix->u.prefix4.s_addr == INADDR_ANY)
bpem->match_bitmask_iprule |= bitmask; SET_FLAG(bpem->match_bitmask_iprule,
bitmask);
else if (prefix->family == AF_INET6 else if (prefix->family == AF_INET6
&& !memcmp(&prefix->u.prefix6, && !memcmp(&prefix->u.prefix6,
&in6addr_any, &in6addr_any,
sizeof(struct in6_addr))) sizeof(struct in6_addr)))
bpem->match_bitmask_iprule |= bitmask; SET_FLAG(bpem->match_bitmask_iprule,
bitmask);
else else
bpem->match_bitmask |= bitmask; SET_FLAG(bpem->match_bitmask, bitmask);
} }
offset += ret; offset += ret;
break; break;
@ -640,8 +642,8 @@ int bgp_flowspec_match_rules_fill(uint8_t *nlri_content, int len,
|| bpem->match_dst_port_num || bpem->match_protocol_num || bpem->match_dst_port_num || bpem->match_protocol_num
|| bpem->match_bitmask || bpem->match_flowlabel_num) || bpem->match_bitmask || bpem->match_flowlabel_num)
bpem->type = BGP_PBR_IPSET; bpem->type = BGP_PBR_IPSET;
else if ((bpem->match_bitmask_iprule & PREFIX_SRC_PRESENT) || else if (CHECK_FLAG(bpem->match_bitmask_iprule, PREFIX_SRC_PRESENT) ||
(bpem->match_bitmask_iprule & PREFIX_DST_PRESENT)) CHECK_FLAG(bpem->match_bitmask_iprule, PREFIX_DST_PRESENT))
/* the extracted policy rule may not need an /* the extracted policy rule may not need an
* iptables/ipset filtering. check this may not be * iptables/ipset filtering. check this may not be
* a standard ip rule : permit any to any ( eg) * a standard ip rule : permit any to any ( eg)