Module Name:    src
Committed By:   rmind
Date:           Fri Nov 22 01:24:21 UTC 2013

Modified Files:
        src/sys/net/npf: npf_impl.h npf_inet.c npf_session.c

Log Message:
npf_addr_mix: use xor rather than sum.


To generate a diff of this commit:
cvs rdiff -u -r1.41 -r1.42 src/sys/net/npf/npf_impl.h
cvs rdiff -u -r1.25 -r1.26 src/sys/net/npf/npf_inet.c
cvs rdiff -u -r1.27 -r1.28 src/sys/net/npf/npf_session.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/net/npf/npf_impl.h
diff -u src/sys/net/npf/npf_impl.h:1.41 src/sys/net/npf/npf_impl.h:1.42
--- src/sys/net/npf/npf_impl.h:1.41	Fri Nov 22 00:25:51 2013
+++ src/sys/net/npf/npf_impl.h	Fri Nov 22 01:24:21 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: npf_impl.h,v 1.41 2013/11/22 00:25:51 rmind Exp $	*/
+/*	$NetBSD: npf_impl.h,v 1.42 2013/11/22 01:24:21 rmind Exp $	*/
 
 /*-
  * Copyright (c) 2009-2013 The NetBSD Foundation, Inc.
@@ -193,7 +193,7 @@ uint16_t	npf_fixup16_cksum(uint16_t, uin
 uint16_t	npf_fixup32_cksum(uint16_t, uint32_t, uint32_t);
 uint16_t	npf_addr_cksum(uint16_t, int, const npf_addr_t *,
 		    const npf_addr_t *);
-uint32_t	npf_addr_sum(const int, const npf_addr_t *, const npf_addr_t *);
+uint32_t	npf_addr_mix(const int, const npf_addr_t *, const npf_addr_t *);
 int		npf_addr_cmp(const npf_addr_t *, const npf_netmask_t,
 		    const npf_addr_t *, const npf_netmask_t, const int);
 void		npf_addr_mask(const npf_addr_t *, const npf_netmask_t,

Index: src/sys/net/npf/npf_inet.c
diff -u src/sys/net/npf/npf_inet.c:1.25 src/sys/net/npf/npf_inet.c:1.26
--- src/sys/net/npf/npf_inet.c:1.25	Wed Oct 30 08:41:38 2013
+++ src/sys/net/npf/npf_inet.c	Fri Nov 22 01:24:21 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: npf_inet.c,v 1.25 2013/10/30 08:41:38 mrg Exp $	*/
+/*	$NetBSD: npf_inet.c,v 1.26 2013/11/22 01:24:21 rmind Exp $	*/
 
 /*-
  * Copyright (c) 2009-2012 The NetBSD Foundation, Inc.
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: npf_inet.c,v 1.25 2013/10/30 08:41:38 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: npf_inet.c,v 1.26 2013/11/22 01:24:21 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -109,20 +109,19 @@ npf_addr_cksum(uint16_t cksum, int sz, c
 }
 
 /*
- * npf_addr_sum: provide IP address as a summed (if needed) 32-bit integer.
+ * npf_addr_sum: provide IP addresses as a XORed 32-bit integer.
  * Note: used for hash function.
  */
 uint32_t
-npf_addr_sum(const int sz, const npf_addr_t *a1, const npf_addr_t *a2)
+npf_addr_mix(const int sz, const npf_addr_t *a1, const npf_addr_t *a2)
 {
 	uint32_t mix = 0;
-	int i;
 
 	KASSERT(sz > 0 && a1 != NULL && a2 != NULL);
 
-	for (i = 0; i < (sz >> 2); i++) {
-		mix += a1->s6_addr32[i];
-		mix += a2->s6_addr32[i];
+	for (int i = 0; i < (sz >> 2); i++) {
+		mix ^= a1->s6_addr32[i];
+		mix ^= a2->s6_addr32[i];
 	}
 	return mix;
 }

Index: src/sys/net/npf/npf_session.c
diff -u src/sys/net/npf/npf_session.c:1.27 src/sys/net/npf/npf_session.c:1.28
--- src/sys/net/npf/npf_session.c:1.27	Fri Nov  8 00:38:26 2013
+++ src/sys/net/npf/npf_session.c	Fri Nov 22 01:24:21 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: npf_session.c,v 1.27 2013/11/08 00:38:26 rmind Exp $	*/
+/*	$NetBSD: npf_session.c,v 1.28 2013/11/22 01:24:21 rmind Exp $	*/
 
 /*-
  * Copyright (c) 2010-2013 The NetBSD Foundation, Inc.
@@ -92,7 +92,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: npf_session.c,v 1.27 2013/11/08 00:38:26 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: npf_session.c,v 1.28 2013/11/22 01:24:21 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -314,7 +314,7 @@ sess_hash_bucket(npf_sehash_t *stbl, con
 
 	mix[0] = (scid->proto ^ scid->ifid) << 16;
 	mix[0] |= sen->se_src_id ^ sen->se_dst_id;
-	mix[1] = npf_addr_sum(sz, &sen->se_src_addr, &sen->se_dst_addr);
+	mix[1] = npf_addr_mix(sz, &sen->se_src_addr, &sen->se_dst_addr);
 	hash = murmurhash2(mix, sizeof(mix), sess_hash_seed);
 
 	return &stbl[hash & SESS_HASH_MASK];

Reply via email to