mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-11-09 12:48:43 +00:00
Nest: Expand rte_src.private_id to u64
In general, private_id is sparse and protocols may want to map some internal values directly into it. For example, L3VPN needs to map VPN route discriminators to private_id. OTOH, u32 is enough for global_id, as these identifiers are dense.
This commit is contained in:
parent
8ad9c4bb33
commit
21213be523
@ -439,7 +439,7 @@ struct nexthop {
|
|||||||
struct rte_src {
|
struct rte_src {
|
||||||
struct rte_src *next; /* Hash chain */
|
struct rte_src *next; /* Hash chain */
|
||||||
struct proto *proto; /* Protocol the source is based on */
|
struct proto *proto; /* Protocol the source is based on */
|
||||||
u32 private_id; /* Private ID, assigned by the protocol */
|
u64 private_id; /* Private ID, assigned by the protocol */
|
||||||
u32 global_id; /* Globally unique ID of the source */
|
u32 global_id; /* Globally unique ID of the source */
|
||||||
unsigned uc; /* Use count */
|
unsigned uc; /* Use count */
|
||||||
};
|
};
|
||||||
|
@ -101,7 +101,7 @@ static struct idm src_ids;
|
|||||||
#define RSH_KEY(n) n->proto, n->private_id
|
#define RSH_KEY(n) n->proto, n->private_id
|
||||||
#define RSH_NEXT(n) n->next
|
#define RSH_NEXT(n) n->next
|
||||||
#define RSH_EQ(p1,n1,p2,n2) p1 == p2 && n1 == n2
|
#define RSH_EQ(p1,n1,p2,n2) p1 == p2 && n1 == n2
|
||||||
#define RSH_FN(p,n) p->hash_key ^ u32_hash(n)
|
#define RSH_FN(p,n) p->hash_key ^ u64_hash(n)
|
||||||
|
|
||||||
#define RSH_REHASH rte_src_rehash
|
#define RSH_REHASH rte_src_rehash
|
||||||
#define RSH_PARAMS /2, *2, 1, 1, 8, 20
|
#define RSH_PARAMS /2, *2, 1, 1, 8, 20
|
||||||
|
@ -675,7 +675,7 @@ rte_mergable(rte *pri, rte *sec)
|
|||||||
static void
|
static void
|
||||||
rte_trace(struct channel *c, rte *e, int dir, char *msg)
|
rte_trace(struct channel *c, rte *e, int dir, char *msg)
|
||||||
{
|
{
|
||||||
log(L_TRACE "%s.%s %c %s %N %uL %uG %s",
|
log(L_TRACE "%s.%s %c %s %N %luL %uG %s",
|
||||||
c->proto->name, c->name ?: "?", dir, msg, e->net->n.addr, e->src->private_id, e->src->global_id,
|
c->proto->name, c->name ?: "?", dir, msg, e->net->n.addr, e->src->private_id, e->src->global_id,
|
||||||
rta_dest_name(e->attrs->dest));
|
rta_dest_name(e->attrs->dest));
|
||||||
}
|
}
|
||||||
|
@ -2499,7 +2499,7 @@ bgp_bmp_encode_rte(struct bgp_channel *c, byte *buf, const net_addr *n,
|
|||||||
/* Sham prefix */
|
/* Sham prefix */
|
||||||
struct bgp_prefix *px = alloca(prefix_size);
|
struct bgp_prefix *px = alloca(prefix_size);
|
||||||
*px = (struct bgp_prefix) { };
|
*px = (struct bgp_prefix) { };
|
||||||
px->path_id = src->private_id;
|
px->path_id = (u32) src->private_id;
|
||||||
net_copy(px->net, n);
|
net_copy(px->net, n);
|
||||||
add_tail(&b->prefixes, &px->buck_node);
|
add_tail(&b->prefixes, &px->buck_node);
|
||||||
|
|
||||||
|
@ -488,7 +488,7 @@ mrt_rib_table_entry(struct mrt_table_dump_state *s, rte *r)
|
|||||||
|
|
||||||
/* Path Identifier */
|
/* Path Identifier */
|
||||||
if (s->add_path)
|
if (s->add_path)
|
||||||
mrt_put_u32(b, r->src->private_id);
|
mrt_put_u32(b, (u32) r->src->private_id);
|
||||||
|
|
||||||
/* Route Attributes */
|
/* Route Attributes */
|
||||||
mrt_put_u16(b, 0);
|
mrt_put_u16(b, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user