]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/netkey/keydb.c
xnu-792.6.56.tar.gz
[apple/xnu.git] / bsd / netkey / keydb.c
index 9c2bebccf136db7b54301baaceaa0df7945be5eb..8da09b8779cc787e44061d0ee26d9ada58c3c59a 100644 (file)
  * SUCH DAMAGE.
  */
 
  * SUCH DAMAGE.
  */
 
-#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(__NetBSD__)
-#include "opt_inet.h"
-#ifdef __NetBSD__
-#include "opt_ipsec.h"
-#endif
-#endif
-
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <sys/param.h>
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <sys/param.h>
 
 #include <net/net_osdep.h>
 
 
 #include <net/net_osdep.h>
 
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
 MALLOC_DEFINE(M_SECA, "key mgmt", "security associations, key management");
 MALLOC_DEFINE(M_SECA, "key mgmt", "security associations, key management");
-#endif
 
 
-static void keydb_delsecasvar __P((struct secasvar *));
+static void keydb_delsecasvar(struct secasvar *);
 
 /*
  * secpolicy management
 
 /*
  * secpolicy management
@@ -70,7 +61,7 @@ keydb_newsecpolicy()
 {
        struct secpolicy *p;
 
 {
        struct secpolicy *p;
 
-       p = (struct secpolicy *)_MALLOC(sizeof(*p), M_SECA, M_NOWAIT);
+       p = (struct secpolicy *)_MALLOC(sizeof(*p), M_SECA, M_WAITOK);
        if (!p)
                return p;
        bzero(p, sizeof(*p));
        if (!p)
                return p;
        bzero(p, sizeof(*p));
@@ -94,7 +85,7 @@ keydb_newsecashead()
        struct secashead *p;
        int i;
 
        struct secashead *p;
        int i;
 
-       p = (struct secashead *)_MALLOC(sizeof(*p), M_SECA, M_NOWAIT);
+       p = (struct secashead *)_MALLOC(sizeof(*p), M_SECA, M_WAITOK);
        if (!p)
                return p;
        bzero(p, sizeof(*p));
        if (!p)
                return p;
        bzero(p, sizeof(*p));
@@ -119,7 +110,7 @@ keydb_newsecasvar()
 {
        struct secasvar *p;
 
 {
        struct secasvar *p;
 
-       p = (struct secasvar *)_MALLOC(sizeof(*p), M_SECA, M_NOWAIT);
+       p = (struct secasvar *)_MALLOC(sizeof(*p), M_SECA, M_WAITOK);
        if (!p)
                return p;
        bzero(p, sizeof(*p));
        if (!p)
                return p;
        bzero(p, sizeof(*p));
@@ -133,11 +124,7 @@ keydb_refsecasvar(p)
 {
        int s;
 
 {
        int s;
 
-#ifdef __NetBSD__
-       s = splsoftnet();
-#else
        s = splnet();
        s = splnet();
-#endif
        p->refcnt++;
        splx(s);
 }
        p->refcnt++;
        splx(s);
 }
@@ -148,13 +135,10 @@ keydb_freesecasvar(p)
 {
        int s;
 
 {
        int s;
 
-#ifdef __NetBSD__
-       s = splsoftnet();
-#else
        s = splnet();
        s = splnet();
-#endif
        p->refcnt--;
        p->refcnt--;
-       if (p->refcnt == 0)
+       /* negative refcnt will cause panic intentionally */
+       if (p->refcnt <= 0)
                keydb_delsecasvar(p);
        splx(s);
 }
                keydb_delsecasvar(p);
        splx(s);
 }
@@ -179,13 +163,13 @@ keydb_newsecreplay(wsize)
 {
        struct secreplay *p;
 
 {
        struct secreplay *p;
 
-       p = (struct secreplay *)_MALLOC(sizeof(*p), M_SECA, M_NOWAIT);
+       p = (struct secreplay *)_MALLOC(sizeof(*p), M_SECA, M_WAITOK);
        if (!p)
                return p;
 
        bzero(p, sizeof(*p));
        if (wsize != 0) {
        if (!p)
                return p;
 
        bzero(p, sizeof(*p));
        if (wsize != 0) {
-               p->bitmap = (caddr_t)_MALLOC(wsize, M_SECA, M_NOWAIT);
+               p->bitmap = (caddr_t)_MALLOC(wsize, M_SECA, M_WAITOK);
                if (!p->bitmap) {
                        _FREE(p, M_SECA);
                        return NULL;
                if (!p->bitmap) {
                        _FREE(p, M_SECA);
                        return NULL;
@@ -214,7 +198,7 @@ keydb_newsecreg()
 {
        struct secreg *p;
 
 {
        struct secreg *p;
 
-       p = (struct secreg *)_MALLOC(sizeof(*p), M_SECA, M_NOWAIT);
+       p = (struct secreg *)_MALLOC(sizeof(*p), M_SECA, M_WAITOK);
        if (p)
                bzero(p, sizeof(*p));
        return p;
        if (p)
                bzero(p, sizeof(*p));
        return p;