diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2021-10-10 14:22:14 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2021-10-10 14:22:14 +0000 |
commit | e687d254784b0c4ab12636f7a942f447418d5e82 (patch) | |
tree | 31c7aedd5ac817468533e5da3cdf7659988ecf3c /sys/src/9/ip | |
parent | 1a6324970d4cb0f0508caa3a685355d500709f1a (diff) |
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.
Diffstat (limited to 'sys/src/9/ip')
-rw-r--r-- | sys/src/9/ip/iproute.c | 2 |
1 files changed, 1 insertions, 1 deletions
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) |