Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Nov 2016 10:42:53 +0000 (UTC)
From:      "Andrey V. Elsukov" <ae@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r308977 - projects/ipsec/sys/netipsec
Message-ID:  <201611221042.uAMAgrhj087985@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ae
Date: Tue Nov 22 10:42:52 2016
New Revision: 308977
URL: https://svnweb.freebsd.org/changeset/base/308977

Log:
  Modify key_getspbyid() to use SPHASH.

Modified:
  projects/ipsec/sys/netipsec/key.c

Modified: projects/ipsec/sys/netipsec/key.c
==============================================================================
--- projects/ipsec/sys/netipsec/key.c	Tue Nov 22 10:39:41 2016	(r308976)
+++ projects/ipsec/sys/netipsec/key.c	Tue Nov 22 10:42:52 2016	(r308977)
@@ -1134,32 +1134,23 @@ key_getsp(struct secpolicyindex *spidx)
 /*
  * get SP by index.
  * OUT:	NULL	: not found
- *	others	: found, pointer to a SP.
+ *	others	: found, pointer to referenced SP.
  */
 static struct secpolicy *
-key_getspbyid(u_int32_t id)
+key_getspbyid(uint32_t id)
 {
 	SPTREE_RLOCK_TRACKER;
 	struct secpolicy *sp;
 
 	SPTREE_RLOCK();
-	TAILQ_FOREACH(sp, &V_sptree[IPSEC_DIR_INBOUND], chain) {
+	LIST_FOREACH(sp, SPHASH_HASH(id), idhash) {
 		if (sp->id == id) {
 			SP_ADDREF(sp);
-			goto done;
-		}
-	}
-
-	TAILQ_FOREACH(sp, &V_sptree[IPSEC_DIR_OUTBOUND], chain) {
-		if (sp->id == id) {
-			SP_ADDREF(sp);
-			goto done;
+			break;
 		}
 	}
-done:
 	SPTREE_RUNLOCK();
-
-	return sp;
+	return (sp);
 }
 
 struct secpolicy *



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201611221042.uAMAgrhj087985>