From e687d254784b0c4ab12636f7a942f447418d5e82 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sun, 10 Oct 2021 14:22:14 +0000 Subject: [PATCH] devip: use top bit (type) | subnet-id for V6H() route hash macro theres no structure in the lower 32 bits of an ipv6 address. use the top bit to distinguish special stuff like multicast and link-local addresses, and use the 16-bit subnet-id bits for the rest. --- sys/src/9/ip/iproute.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/src/9/ip/iproute.c b/sys/src/9/ip/iproute.c index e90f61d44..edf78cfd3 100644 --- a/sys/src/9/ip/iproute.c +++ b/sys/src/9/ip/iproute.c @@ -383,7 +383,7 @@ looknodetag(Route *r, char *tag) } #define V4H(a) ((a&0x07ffffff)>>(32-Lroot-5)) -#define V6H(a) (((a)[IPllen-1]&0x07ffffff)>>(32-Lroot-5)) +#define V6H(a) (((a)[0]&0x80000000)>>(32-Lroot) | ((a)[(IPllen/2)-1]&(0xffff>>(16-Lroot)))) static void routeadd(Fs *f, Route *r)