forked from Mirror/frr
zebra: NHG ID bounds macros
Determine the NHG ID spacing and lower bound with ZEBRA_ROUTE_MAX in macros. Directly set the upperbound to be the lower 28bits of the uint32_t ID space (the top 4 are reserved for l2-NHGs). Round that number down a bit to make it more even. Convert all former lower_bound calls to just use the macro. Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
This commit is contained in:
parent
16b20ad062
commit
54c89c9377
|
@ -4081,13 +4081,5 @@ uint32_t zclient_get_nhg_start(uint32_t proto)
|
|||
{
|
||||
assert(proto < ZEBRA_ROUTE_MAX);
|
||||
|
||||
return ZEBRA_NHG_SPACING * proto;
|
||||
}
|
||||
|
||||
/*
|
||||
* Where do routing protocols IDs start overall (first ID after zebra)
|
||||
*/
|
||||
uint32_t zclient_get_nhg_lower_bound()
|
||||
{
|
||||
return ZEBRA_NHG_SPACING * (ZEBRA_ROUTE_CONNECT + 1);
|
||||
return ZEBRA_NHG_PROTO_SPACING * proto;
|
||||
}
|
||||
|
|
|
@ -686,13 +686,20 @@ struct zclient_options {
|
|||
extern struct zclient_options zclient_options_default;
|
||||
|
||||
/*
|
||||
* We reserve the top 4 bits for l2-NHG, everything else
|
||||
* is for zebra/proto l3-NHG.
|
||||
*
|
||||
* Each client is going to get it's own nexthop group space
|
||||
* and we'll separate them by 50 million, we'll figure out where
|
||||
* to start based upon the route_types.h
|
||||
* and we'll separate them, we'll figure out where to start based upon
|
||||
* the route_types.h
|
||||
*/
|
||||
#define ZEBRA_NHG_SPACING 50000000
|
||||
#define ZEBRA_NHG_PROTO_UPPER \
|
||||
((uint32_t)250000000) /* Bottom 28 bits then rounded down */
|
||||
#define ZEBRA_NHG_PROTO_SPACING (ZEBRA_NHG_PROTO_UPPER / ZEBRA_ROUTE_MAX)
|
||||
#define ZEBRA_NHG_PROTO_LOWER \
|
||||
(ZEBRA_NHG_PROTO_SPACING * (ZEBRA_ROUTE_CONNECT + 1))
|
||||
|
||||
extern uint32_t zclient_get_nhg_start(uint32_t proto);
|
||||
extern uint32_t zclient_get_nhg_lower_bound(void);
|
||||
|
||||
extern struct zclient *zclient_new(struct thread_master *m,
|
||||
struct zclient_options *opt);
|
||||
|
|
|
@ -144,7 +144,7 @@ static bool is_proto_nhg(uint32_t id, int type)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (id >= zclient_get_nhg_lower_bound())
|
||||
if (id >= ZEBRA_NHG_PROTO_LOWER)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
|
|
|
@ -676,7 +676,7 @@ static bool zebra_nhe_find(struct nhg_hash_entry **nhe, /* return value */
|
|||
if (lookup->id == 0)
|
||||
lookup->id = ++id_counter;
|
||||
|
||||
if (lookup->id < zclient_get_nhg_lower_bound()) {
|
||||
if (lookup->id < ZEBRA_NHG_PROTO_LOWER) {
|
||||
/*
|
||||
* This is a zebra hashed/owned NHG.
|
||||
*
|
||||
|
@ -730,7 +730,7 @@ static bool zebra_nhe_find(struct nhg_hash_entry **nhe, /* return value */
|
|||
if (CHECK_FLAG(nh->flags, NEXTHOP_FLAG_ACTIVE))
|
||||
SET_FLAG(newnhe->flags, NEXTHOP_GROUP_VALID);
|
||||
|
||||
if (nh->next == NULL && newnhe->id < zclient_get_nhg_lower_bound()) {
|
||||
if (nh->next == NULL && newnhe->id < ZEBRA_NHG_PROTO_LOWER) {
|
||||
if (CHECK_FLAG(nh->flags, NEXTHOP_FLAG_RECURSIVE)) {
|
||||
/* Single recursive nexthop */
|
||||
handle_recursive_depend(&newnhe->nhg_depends,
|
||||
|
@ -1246,7 +1246,7 @@ int zebra_nhg_kernel_find(uint32_t id, struct nexthop *nh, struct nh_grp *grp,
|
|||
zlog_debug("%s: nh %pNHv, id %u, count %d",
|
||||
__func__, nh, id, (int)count);
|
||||
|
||||
if (id > id_counter && id < zclient_get_nhg_lower_bound())
|
||||
if (id > id_counter && id < ZEBRA_NHG_PROTO_LOWER)
|
||||
/* Increase our counter so we don't try to create
|
||||
* an ID that already exists
|
||||
*/
|
||||
|
@ -2319,7 +2319,7 @@ int nexthop_active_update(struct route_node *rn, struct route_entry *re)
|
|||
struct nhg_hash_entry *curr_nhe;
|
||||
uint32_t curr_active = 0, backup_active = 0;
|
||||
|
||||
if (re->nhe->id >= zclient_get_nhg_lower_bound())
|
||||
if (re->nhe->id >= ZEBRA_NHG_PROTO_LOWER)
|
||||
return proto_nhg_nexthop_active_update(&re->nhe->nhg);
|
||||
|
||||
afi_t rt_afi = family2afi(rn->p.family);
|
||||
|
@ -2525,7 +2525,7 @@ void zebra_nhg_install_kernel(struct nhg_hash_entry *nhe)
|
|||
|
||||
if (CHECK_FLAG(nhe->flags, NEXTHOP_GROUP_VALID)
|
||||
&& (!CHECK_FLAG(nhe->flags, NEXTHOP_GROUP_INSTALLED)
|
||||
|| nhe->id >= zclient_get_nhg_lower_bound())
|
||||
|| nhe->id >= ZEBRA_NHG_PROTO_LOWER)
|
||||
&& !CHECK_FLAG(nhe->flags, NEXTHOP_GROUP_QUEUED)) {
|
||||
/* Change its type to us since we are installing it */
|
||||
if (!ZEBRA_NHG_CREATED(nhe))
|
||||
|
|
Loading…
Reference in a new issue