summaryrefslogtreecommitdiffstats
path: root/sys/netinet/igmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netinet/igmp.c')
-rw-r--r--sys/netinet/igmp.c52
1 files changed, 12 insertions, 40 deletions
diff --git a/sys/netinet/igmp.c b/sys/netinet/igmp.c
index 2c7ed2e..44796de 100644
--- a/sys/netinet/igmp.c
+++ b/sys/netinet/igmp.c
@@ -114,7 +114,6 @@ static char * igmp_rec_type_to_str(const int);
#endif
static void igmp_set_version(struct igmp_ifinfo *, const int);
static void igmp_slowtimo_vnet(void);
-static void igmp_sysinit(void);
static int igmp_v1v2_queue_report(struct in_multi *, const int);
static void igmp_v1v2_process_group_timer(struct in_multi *, const int);
static void igmp_v1v2_process_querier_timers(struct igmp_ifinfo *);
@@ -137,9 +136,6 @@ static int sysctl_igmp_default_version(SYSCTL_HANDLER_ARGS);
static int sysctl_igmp_gsr(SYSCTL_HANDLER_ARGS);
static int sysctl_igmp_ifinfo(SYSCTL_HANDLER_ARGS);
-static vnet_attach_fn vnet_igmp_iattach;
-static vnet_detach_fn vnet_igmp_idetach;
-
static const struct netisr_handler igmp_nh = {
.nh_name = "igmp",
.nh_handler = igmp_intr,
@@ -3580,7 +3576,7 @@ igmp_rec_type_to_str(const int type)
#endif
static void
-igmp_sysinit(void)
+igmp_init(void *unused __unused)
{
CTR1(KTR_IGMPV3, "%s: initializing", __func__);
@@ -3591,9 +3587,10 @@ igmp_sysinit(void)
netisr_register(&igmp_nh);
}
+SYSINIT(igmp_init, SI_SUB_PSEUDO, SI_ORDER_MIDDLE, igmp_init, NULL);
static void
-igmp_sysuninit(void)
+igmp_uninit(void *unused __unused)
{
CTR1(KTR_IGMPV3, "%s: tearing down", __func__);
@@ -3605,42 +3602,30 @@ igmp_sysuninit(void)
IGMP_LOCK_DESTROY();
}
+SYSUNINIT(igmp_uninit, SI_SUB_PSEUDO, SI_ORDER_MIDDLE, igmp_uninit, NULL);
-/*
- * Initialize an IGMPv3 instance.
- * VIMAGE: Assumes curvnet set by caller and called per vimage.
- */
-static int
-vnet_igmp_iattach(const void *unused __unused)
+static void
+vnet_igmp_init(const void *unused __unused)
{
CTR1(KTR_IGMPV3, "%s: initializing", __func__);
LIST_INIT(&V_igi_head);
-
- return (0);
}
+VNET_SYSINIT(vnet_igmp_init, SI_SUB_PSEUDO, SI_ORDER_ANY, vnet_igmp_init,
+ NULL);
-static int
-vnet_igmp_idetach(const void *unused __unused)
+static void
+vnet_igmp_uninit(const void *unused __unused)
{
CTR1(KTR_IGMPV3, "%s: tearing down", __func__);
KASSERT(LIST_EMPTY(&V_igi_head),
("%s: igi list not empty; ifnets not detached?", __func__));
-
- return (0);
}
-
-#ifdef VIMAGE
-static vnet_modinfo_t vnet_igmp_modinfo = {
- .vmi_id = VNET_MOD_IGMP,
- .vmi_name = "igmp",
- .vmi_iattach = vnet_igmp_iattach,
- .vmi_idetach = vnet_igmp_idetach
-};
-#endif
+VNET_SYSUNINIT(vnet_igmp_uninit, SI_SUB_PSEUDO, SI_ORDER_ANY,
+ vnet_igmp_uninit, NULL);
static int
igmp_modevent(module_t mod, int type, void *unused __unused)
@@ -3648,20 +3633,7 @@ igmp_modevent(module_t mod, int type, void *unused __unused)
switch (type) {
case MOD_LOAD:
- igmp_sysinit();
-#ifdef VIMAGE
- vnet_mod_register(&vnet_igmp_modinfo);
-#else
- vnet_igmp_iattach(NULL);
-#endif
- break;
case MOD_UNLOAD:
-#ifdef VIMAGE
- vnet_mod_deregister(&vnet_igmp_modinfo);
-#else
- vnet_igmp_idetach(NULL);
-#endif
- igmp_sysuninit();
break;
default:
return (EOPNOTSUPP);
OpenPOWER on IntegriCloud