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.
This commit is contained in:
cinap_lenrek 2021-10-10 14:22:14 +00:00
parent 1a6324970d
commit e687d25478

View file

@ -383,7 +383,7 @@ looknodetag(Route *r, char *tag)
} }
#define V4H(a) ((a&0x07ffffff)>>(32-Lroot-5)) #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 static void
routeadd(Fs *f, Route *r) routeadd(Fs *f, Route *r)