shithub: riscv

Download patch

ref: e687d254784b0c4ab12636f7a942f447418d5e82
parent: 1a6324970d4cb0f0508caa3a685355d500709f1a
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sun Oct 10 10:22:14 EDT 2021

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.

--- a/sys/src/9/ip/iproute.c
+++ b/sys/src/9/ip/iproute.c
@@ -383,7 +383,7 @@
 }
 
 #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)