aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGleb Smirnoff <glebius@FreeBSD.org>2022-01-03 18:15:21 +0000
committerGleb Smirnoff <glebius@FreeBSD.org>2022-01-03 18:15:21 +0000
commit9880323a99de1e39a82b75cd91d64f35d36c8559 (patch)
tree6dc28b65ddcb0fb4e72366bdb1af39be0955a653
parent340c7343f4e02fa7d7b36cbefa0d9856d1811eea (diff)
downloadsrc-9880323a99de1e39a82b75cd91d64f35d36c8559.tar.gz
src-9880323a99de1e39a82b75cd91d64f35d36c8559.zip
netipsec: use SYSINIT(9) instead of dom_init/dom_destroy
While here, use just static initializer for key_cb. Differential revision: https://reviews.freebsd.org/D33539
-rw-r--r--sys/netipsec/key.c34
-rw-r--r--sys/netipsec/key.h4
-rw-r--r--sys/netipsec/keysock.c17
3 files changed, 26 insertions, 29 deletions
diff --git a/sys/netipsec/key.c b/sys/netipsec/key.c
index 168ec3441faf..480879a58aa4 100644
--- a/sys/netipsec/key.c
+++ b/sys/netipsec/key.c
@@ -8300,8 +8300,9 @@ spdcache_destroy(void)
}
}
#endif
-void
-key_init(void)
+
+static void
+key_vnet_init(void *arg __unused)
{
int i;
@@ -8327,9 +8328,13 @@ key_init(void)
LIST_INIT(&V_acqtree);
LIST_INIT(&V_spacqtree);
+}
+VNET_SYSINIT(key_vnet_init, SI_SUB_PROTO_DOMAIN, SI_ORDER_SECOND,
+ key_vnet_init, NULL);
- if (!IS_DEFAULT_VNET(curvnet))
- return;
+static void
+key_init(void *arg __unused)
+{
ipsec_key_lft_zone = uma_zcreate("IPsec SA lft_c",
sizeof(uint64_t) * 2, NULL, NULL, NULL, NULL,
@@ -8353,10 +8358,11 @@ key_init(void)
if (bootverbose)
printf("IPsec: Initialized Security Association Processing.\n");
}
+SYSINIT(key_init, SI_SUB_PROTO_DOMAIN, SI_ORDER_FIRST, key_init, NULL);
#ifdef VIMAGE
-void
-key_destroy(void)
+static void
+key_vnet_destroy(void *arg __unused)
{
struct secashead_queue sahdrainq;
struct secpolicy_queue drainq;
@@ -8451,10 +8457,18 @@ key_destroy(void)
SPACQ_UNLOCK();
hashdestroy(V_acqaddrhashtbl, M_IPSEC_SAQ, V_acqaddrhash_mask);
hashdestroy(V_acqseqhashtbl, M_IPSEC_SAQ, V_acqseqhash_mask);
+}
+VNET_SYSUNINIT(key_vnet_destroy, SI_SUB_PROTO_DOMAIN, SI_ORDER_SECOND,
+ key_vnet_destroy, NULL);
+#endif
- if (!IS_DEFAULT_VNET(curvnet))
- return;
-
+/*
+ * XXX: as long as domains are not unloadable, this function is never called,
+ * provided for consistensy and future unload support.
+ */
+static void
+key_destroy(void *arg __unused)
+{
uma_zdestroy(ipsec_key_lft_zone);
#ifndef IPSEC_DEBUG2
@@ -8467,7 +8481,7 @@ key_destroy(void)
SPACQ_LOCK_DESTROY();
SPI_ALLOC_LOCK_DESTROY();
}
-#endif
+SYSUNINIT(key_destroy, SI_SUB_PROTO_DOMAIN, SI_ORDER_FIRST, key_destroy, NULL);
/* record data transfer on SA, and update timestamps */
void
diff --git a/sys/netipsec/key.h b/sys/netipsec/key.h
index 2ee7c208f195..4d0f4b1ea512 100644
--- a/sys/netipsec/key.h
+++ b/sys/netipsec/key.h
@@ -80,10 +80,6 @@ void key_delete_xform(const struct xformsw *);
extern u_long key_random(void);
extern void key_freereg(struct socket *);
extern int key_parse(struct mbuf *, struct socket *);
-extern void key_init(void);
-#ifdef VIMAGE
-extern void key_destroy(void);
-#endif
extern void key_sa_recordxfer(struct secasvar *, struct mbuf *);
uint16_t key_portfromsaddr(struct sockaddr *);
void key_porttosaddr(struct sockaddr *, uint16_t port);
diff --git a/sys/netipsec/keysock.c b/sys/netipsec/keysock.c
index 83ed2bca2f47..1ee1f619b860 100644
--- a/sys/netipsec/keysock.c
+++ b/sys/netipsec/keysock.c
@@ -71,7 +71,7 @@ struct key_cb {
int key_count;
int any_count;
};
-VNET_DEFINE_STATIC(struct key_cb, key_cb);
+VNET_DEFINE_STATIC(struct key_cb, key_cb) = {};
#define V_key_cb VNET(key_cb)
static struct sockaddr key_src = { 2, PF_KEY, };
@@ -452,23 +452,10 @@ struct protosw keysw[] = {
}
};
-static void
-key_init0(void)
-{
-
- bzero((caddr_t)&V_key_cb, sizeof(V_key_cb));
- key_init();
-}
-
struct domain keydomain = {
.dom_family = PF_KEY,
.dom_name = "key",
- .dom_init = key_init0,
-#ifdef VIMAGE
- .dom_destroy = key_destroy,
-#endif
.dom_protosw = keysw,
.dom_protoswNPROTOSW = &keysw[nitems(keysw)]
};
-
-VNET_DOMAIN_SET(key);
+DOMAIN_SET(key);