summaryrefslogtreecommitdiff
path: root/sys/src/9/ip
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-06-09 10:04:04 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2015-06-09 10:04:04 +0200
commit94333d83ab5df8bd51b148a69a33aa6b335c6fc6 (patch)
tree0903426babb1f1f43bd590c95d18839e1ec825a4 /sys/src/9/ip
parent90b4fe9cf65bb24b55472ce2e32a7dbc3c5e7f97 (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.h1
-rw-r--r--sys/src/9/ip/ipaux.c2
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