{
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;
}
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);
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.
*
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,
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
*/
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);
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))