diff options
author | Gleb Smirnoff <glebius@FreeBSD.org> | 2022-01-03 18:15:21 +0000 |
---|---|---|
committer | Gleb Smirnoff <glebius@FreeBSD.org> | 2022-01-03 18:15:21 +0000 |
commit | 9880323a99de1e39a82b75cd91d64f35d36c8559 (patch) | |
tree | 6dc28b65ddcb0fb4e72366bdb1af39be0955a653 | |
parent | 340c7343f4e02fa7d7b36cbefa0d9856d1811eea (diff) | |
download | src-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.c | 34 | ||||
-rw-r--r-- | sys/netipsec/key.h | 4 | ||||
-rw-r--r-- | sys/netipsec/keysock.c | 17 |
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); |