diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-06-09 10:04:04 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-06-09 10:04:04 +0200 |
commit | 94333d83ab5df8bd51b148a69a33aa6b335c6fc6 (patch) | |
tree | 0903426babb1f1f43bd590c95d18839e1ec825a4 /sys/src/9/ip | |
parent | 90b4fe9cf65bb24b55472ce2e32a7dbc3c5e7f97 (diff) |
ip: fix wrong radix for iphash() (thanks yoann padioleau)
yoann padioleaus report on 9fans:
> I think I’ve found a bug in the network stack.
> in 9/ip/ip.h there is
> struct Ipht
> {
> Lock;
> Iphash *tab[Nipht];
> };
>
> where Night is 521,
>
> but then in 9/ip/ipaux.c there is
>
> ulong
> iphash(uchar *sa, ushort sp, uchar *da, ushort dp)
> {
> return ((sa[IPaddrlen-1]<<24) ^ (sp << 16) ^ (da[IPaddrlen-1]<<8) ^ dp ) % Nhash;
> }
>
> where Nhash is just 64,
Diffstat (limited to 'sys/src/9/ip')
-rw-r--r-- | sys/src/9/ip/ip.h | 1 | ||||
-rw-r--r-- | sys/src/9/ip/ipaux.c | 2 |
2 files changed, 1 insertions, 2 deletions
diff --git a/sys/src/9/ip/ip.h b/sys/src/9/ip/ip.h index 94ea003ce..4052f5f8a 100644 --- a/sys/src/9/ip/ip.h +++ b/sys/src/9/ip/ip.h @@ -37,7 +37,6 @@ enum { Addrlen= 64, Maxproto= 20, - Nhash= 64, Maxincall= 10, Nchans= 1024, MAClen= 16, /* longest mac address */ diff --git a/sys/src/9/ip/ipaux.c b/sys/src/9/ip/ipaux.c index 75a4fd4f2..fd253dafe 100644 --- a/sys/src/9/ip/ipaux.c +++ b/sys/src/9/ip/ipaux.c @@ -238,7 +238,7 @@ parsemac(uchar *to, char *from, int len) ulong iphash(uchar *sa, ushort sp, uchar *da, ushort dp) { - return ((sa[IPaddrlen-1]<<24) ^ (sp << 16) ^ (da[IPaddrlen-1]<<8) ^ dp ) % Nhash; + return ((sa[IPaddrlen-1]<<24) ^ (sp << 16) ^ (da[IPaddrlen-1]<<8) ^ dp ) % Nipht; } void |