Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Nov 2016 18:33:34 +0000 (UTC)
From:      "Andrey V. Elsukov" <ae@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r308932 - projects/ipsec/sys/netipsec
Message-ID:  <201611211833.uALIXYXH094232@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ae
Date: Mon Nov 21 18:33:33 2016
New Revision: 308932
URL: https://svnweb.freebsd.org/changeset/base/308932

Log:
  Add some macros to do reference counting.

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

Modified: projects/ipsec/sys/netipsec/key.c
==============================================================================
--- projects/ipsec/sys/netipsec/key.c	Mon Nov 21 18:24:05 2016	(r308931)
+++ projects/ipsec/sys/netipsec/key.c	Mon Nov 21 18:33:33 2016	(r308932)
@@ -584,31 +584,41 @@ static struct mbuf *key_setkey(struct se
 static const char *key_getfqdn(void);
 static const char *key_getuserfqdn(void);
 #endif
-static void key_sa_chgstate(struct secasvar *, u_int8_t);
 
-static __inline void
-sa_initref(struct secasvar *sav)
-{
-
-	refcount_init(&sav->refcnt, 1);
-}
-static __inline void
-sa_addref(struct secasvar *sav)
-{
-
-	refcount_acquire(&sav->refcnt);
-	IPSEC_ASSERT(sav->refcnt != 0, ("SA refcnt overflow"));
-}
-static __inline int
-sa_delref(struct secasvar *sav)
-{
-
-	IPSEC_ASSERT(sav->refcnt > 0, ("SA refcnt underflow"));
-	return (refcount_release(&sav->refcnt));
-}
-
-#define	SP_ADDREF(p)	refcount_acquire(&(p)->refcnt)
-#define	SP_DELREF(p)	refcount_release(&(p)->refcnt)
+#define	DBG_IPSEC_INITREF(t, p)	do {				\
+	refcount_init(&(p)->refcnt, 1);				\
+	KEYDBG(KEY_STAMP,					\
+	    printf("%s: Initialize refcnt %s(%p) = %u\n",	\
+	    __func__, #t, (p), (p)->refcnt));			\
+} while (0)
+#define	DBG_IPSEC_ADDREF(t, p)	do {				\
+	refcount_acquire(&(p)->refcnt);				\
+	KEYDBG(KEY_STAMP,					\
+	    printf("%s: Acquire refcnt %s(%p) -> %u\n",		\
+	    __func__, #t, (p), (p)->refcnt));			\
+} while (0)
+#define	DBG_IPSEC_DELREF(t, p)	do {				\
+	KEYDBG(KEY_STAMP,					\
+	    printf("%s: Release refcnt %s(%p) -> %u\n",		\
+	    __func__, #t, (p), (p)->refcnt - 1));		\
+	refcount_release(&(p)->refcnt);				\
+} while (0)
+
+#define	IPSEC_INITREF(t, p)	refcount_init(&(p)->refcnt, 1)
+#define	IPSEC_ADDREF(t, p)	refcount_acquire(&(p)->refcnt)
+#define	IPSEC_DELREF(t, p)	refcount_release(&(p)->refcnt)
+
+#define	SP_INITREF(p)	IPSEC_INITREF(SP, p)
+#define	SP_ADDREF(p)	IPSEC_ADDREF(SP, p)
+#define	SP_DELREF(p)	IPSEC_DELREF(SP, p)
+
+#define	SAH_INITREF(p)	IPSEC_INITREF(SAH, p)
+#define	SAH_ADDREF(p)	IPSEC_ADDREF(SAH, p)
+#define	SAH_DELREF(p)	IPSEC_DELREF(SAH, p)
+
+#define	SAV_INITREF(p)	IPSEC_INITREF(SAV, p)
+#define	SAV_ADDREF(p)	IPSEC_ADDREF(SAV, p)
+#define	SAV_DELREF(p)	IPSEC_DELREF(SAV, p)
 
 /*
  * Update the refcnt while holding the SPTREE lock.



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