Date: Tue, 22 Nov 2016 13:56:22 +0000 (UTC) From: "Andrey V. Elsukov" <ae@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r308999 - projects/ipsec/sys/netipsec Message-ID: <201611221356.uAMDuMgQ065162@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: ae Date: Tue Nov 22 13:56:22 2016 New Revision: 308999 URL: https://svnweb.freebsd.org/changeset/base/308999 Log: Update key_getsah() to use SAHADDRHASH and return referenced value. Modified: projects/ipsec/sys/netipsec/key.c Modified: projects/ipsec/sys/netipsec/key.c ============================================================================== --- projects/ipsec/sys/netipsec/key.c Tue Nov 22 13:53:37 2016 (r308998) +++ projects/ipsec/sys/netipsec/key.c Tue Nov 22 13:56:22 2016 (r308999) @@ -2755,27 +2755,28 @@ key_delsav(struct secasvar *sav) uma_zfree(V_key_lft_zone, sav->lft_c); free(sav, M_IPSEC_SA); } + /* - * search SAD. + * search SAH. * OUT: * NULL : not found - * others : found, pointer to a SA. + * others : found, referenced pointer to a SAH. */ static struct secashead * key_getsah(struct secasindex *saidx) { + SAHTREE_RLOCK_TRACKER; struct secashead *sah; - SAHTREE_LOCK(); - LIST_FOREACH(sah, &V_sahtree, chain) { - if (sah->state == SADB_SASTATE_DEAD) - continue; - if (key_cmpsaidx(&sah->saidx, saidx, CMP_REQID)) - break; + SAHTREE_RLOCK(); + LIST_FOREACH(sah, SAHADDRHASH_HASH(saidx), addrhash) { + if (key_cmpsaidx(&sah->saidx, saidx, CMP_MODE_REQID) != 0) { + SAH_ADDREF(sah); + break; + } } - SAHTREE_UNLOCK(); - - return sah; + SAHTREE_RUNLOCK(); + return (sah); } /*
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201611221356.uAMDuMgQ065162>