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
This commit is contained in:
Gleb Smirnoff 2022-01-03 10:15:21 -08:00
parent 340c7343f4
commit 9880323a99
3 changed files with 26 additions and 29 deletions

View File

@ -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

View File

@ -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);

View File

@ -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);