summaryrefslogtreecommitdiff
path: root/nest
diff options
context:
space:
mode:
authorOndrej Zajicek <santiago@crfreenet.org>2023-10-02 15:09:30 +0200
committerOndrej Zajicek <santiago@crfreenet.org>2023-10-02 15:09:30 +0200
commit21213be523baa7f2cbf0feaa617f265c55e9b17a (patch)
tree97d0374225e267fe6b3c0cc64eacbe5395ba00b6 /nest
parent8ad9c4bb339172d445d1346876b2c9f3c27199c1 (diff)
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.
Diffstat (limited to 'nest')
-rw-r--r--nest/route.h2
-rw-r--r--nest/rt-attr.c2
-rw-r--r--nest/rt-table.c2
3 files changed, 3 insertions, 3 deletions
diff --git a/nest/route.h b/nest/route.h
index feb1fa60..4fe43e6f 100644
--- a/nest/route.h
+++ b/nest/route.h
@@ -439,7 +439,7 @@ struct nexthop {
struct rte_src {
struct rte_src *next; /* Hash chain */
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 */
unsigned uc; /* Use count */
};
diff --git a/nest/rt-attr.c b/nest/rt-attr.c
index b341ff46..9e29abc8 100644
--- a/nest/rt-attr.c
+++ b/nest/rt-attr.c
@@ -101,7 +101,7 @@ static struct idm src_ids;
#define RSH_KEY(n) n->proto, n->private_id
#define RSH_NEXT(n) n->next
#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_PARAMS /2, *2, 1, 1, 8, 20
diff --git a/nest/rt-table.c b/nest/rt-table.c
index 8b41ffee..5e677465 100644
--- a/nest/rt-table.c
+++ b/nest/rt-table.c
@@ -675,7 +675,7 @@ rte_mergable(rte *pri, rte *sec)
static void
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,
rta_dest_name(e->attrs->dest));
}