svn commit: r308974 - projects/ipsec/sys/netipsec
Andrey V. Elsukov
ae at FreeBSD.org
Tue Nov 22 10:28:27 UTC 2016
Author: ae
Date: Tue Nov 22 10:28:25 2016
New Revision: 308974
URL: https://svnweb.freebsd.org/changeset/base/308974
Log:
Update key_freesp() to reflect changes in struct secpolicy and
ipsecrequest.
Modified:
projects/ipsec/sys/netipsec/key.c
Modified: projects/ipsec/sys/netipsec/key.c
==============================================================================
--- projects/ipsec/sys/netipsec/key.c Tue Nov 22 10:24:59 2016 (r308973)
+++ projects/ipsec/sys/netipsec/key.c Tue Nov 22 10:28:25 2016 (r308974)
@@ -972,30 +972,23 @@ key_allocsa_tunnel(union sockaddr_union
/*
* Must be called after calling key_allocsp().
- * For both the packet without socket and key_freeso().
*/
void
-_key_freesp(struct secpolicy **spp, const char* where, int tag)
+key_freesp(struct secpolicy **spp)
{
- struct ipsecrequest *isr, *nextisr;
struct secpolicy *sp = *spp;
IPSEC_ASSERT(sp != NULL, ("null sp"));
- KEYDEBUG(KEYDEBUG_IPSEC_STAMP,
- printf("DP %s SP:%p (ID=%u) from %s:%u; refcnt now %u\n",
- __func__, sp, sp->id, where, tag, sp->refcnt));
-
if (SP_DELREF(sp) == 0)
return;
+
+ KEYDBG(IPSEC_STAMP,
+ printf("%s: last reference to SP(%p)\n", __func__, sp));
+ KEYDBG(IPSEC_DATA, kdebug_secpolicy(sp));
+
*spp = NULL;
- for (isr = sp->req; isr != NULL; isr = nextisr) {
- if (isr->sav != NULL) {
- KEY_FREESAV(&isr->sav);
- isr->sav = NULL;
- }
- nextisr = isr->next;
- ipsec_delisr(isr);
- }
+ while (sp->tcount > 0)
+ ipsec_delisr(sp->req[--sp->tcount]);
free(sp, M_IPSEC_SP);
}
More information about the svn-src-projects
mailing list