ref: 94333d83ab5df8bd51b148a69a33aa6b335c6fc6
parent: 90b4fe9cf65bb24b55472ce2e32a7dbc3c5e7f97
author: cinap_lenrek <[email protected]>
date: Tue Jun 9 06:04:04 EDT 2015
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,
--- a/sys/src/9/ip/ip.h
+++ b/sys/src/9/ip/ip.h
@@ -37,7 +37,6 @@
{
Addrlen= 64,
Maxproto= 20,
- Nhash= 64,
Maxincall= 10,
Nchans= 1024,
MAClen= 16, /* longest mac address */
--- a/sys/src/9/ip/ipaux.c
+++ b/sys/src/9/ip/ipaux.c
@@ -238,7 +238,7 @@
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