From 94333d83ab5df8bd51b148a69a33aa6b335c6fc6 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Tue, 9 Jun 2015 10:04:04 +0200 Subject: ip: fix wrong radix for iphash() (thanks yoann padioleau) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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, --- sys/src/9/ip/ip.h | 1 - sys/src/9/ip/ipaux.c | 2 +- 2 files changed, 1 insertion(+), 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 -- cgit v1.2.3