diff options
author | zec <zec@FreeBSD.org> | 2009-04-26 22:06:42 +0000 |
---|---|---|
committer | zec <zec@FreeBSD.org> | 2009-04-26 22:06:42 +0000 |
commit | 8d976eab5c2cbc080800be588a8572ebec4a7795 (patch) | |
tree | 1c2ccb403d29ceb85ca7992b6b96623f561c79db /sys/netinet/igmp.c | |
parent | 1e44d091e1be67e4c879788035a2a9161eace942 (diff) | |
download | FreeBSD-src-8d976eab5c2cbc080800be588a8572ebec4a7795.zip FreeBSD-src-8d976eab5c2cbc080800be588a8572ebec4a7795.tar.gz |
In preparation for turning on options VIMAGE in next commits,
rearrange / replace / adjust several INIT_VNET_* initializer
macros, all of which currently resolve to whitespace.
Reviewed by: bz (an older version of the patch)
Approved by: julian (mentor)
Diffstat (limited to 'sys/netinet/igmp.c')
-rw-r--r-- | sys/netinet/igmp.c | 82 |
1 files changed, 42 insertions, 40 deletions
diff --git a/sys/netinet/igmp.c b/sys/netinet/igmp.c index f8301ee..f206249 100644 --- a/sys/netinet/igmp.c +++ b/sys/netinet/igmp.c @@ -141,13 +141,8 @@ 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); -#ifdef VIMAGE static vnet_attach_fn vnet_igmp_iattach; static vnet_detach_fn vnet_igmp_idetach; -#else -static int vnet_igmp_iattach(const void *); -static int vnet_igmp_idetach(const void *); -#endif /* VIMAGE */ /* * System-wide globals. @@ -333,6 +328,7 @@ igmp_restore_context(struct mbuf *m) static int sysctl_igmp_default_version(SYSCTL_HANDLER_ARGS) { + INIT_VNET_INET(curvnet); int error; int new; @@ -372,6 +368,7 @@ out_locked: static int sysctl_igmp_gsr(SYSCTL_HANDLER_ARGS) { + INIT_VNET_INET(curvnet); int error; int i; @@ -413,6 +410,7 @@ static int sysctl_igmp_ifinfo(SYSCTL_HANDLER_ARGS) { INIT_VNET_NET(curvnet); + INIT_VNET_INET(curvnet); int *name; int error; u_int namelen; @@ -498,6 +496,7 @@ igmp_dispatch_queue(struct ifqueue *ifq, int limit, const int loop) static __inline int igmp_isgroupreported(const struct in_addr addr) { + INIT_VNET_INET(curvnet); if (in_allhosts(addr) || ((!V_igmp_sendlocal && IN_LOCAL_GROUP(ntohl(addr.s_addr))))) @@ -560,6 +559,7 @@ igmp_domifattach(struct ifnet *ifp) static struct igmp_ifinfo * igi_alloc_locked(/*const*/ struct ifnet *ifp) { + INIT_VNET_INET(ifp->if_vnet); struct igmp_ifinfo *igi; IGMP_LOCK_ASSERT(); @@ -679,6 +679,7 @@ igmp_domifdetach(struct ifnet *ifp) static void igi_delete_locked(const struct ifnet *ifp) { + INIT_VNET_INET(ifp->if_vnet); struct igmp_ifinfo *igi, *tigi; CTR3(KTR_IGMPV3, "%s: freeing igmp_ifinfo for ifp %p(%s)", @@ -803,6 +804,7 @@ static int igmp_input_v2_query(struct ifnet *ifp, const struct ip *ip, const struct igmp *igmp) { + INIT_VNET_INET(ifp->if_vnet); struct ifmultiaddr *ifma; struct igmp_ifinfo *igi; struct in_multi *inm; @@ -895,6 +897,7 @@ out_locked: static void igmp_v2_update_group(struct in_multi *inm, const int timer) { + INIT_VNET_INET(curvnet); CTR4(KTR_IGMPV3, "%s: %s/%s timer=%d", __func__, inet_ntoa(inm->inm_addr), inm->inm_ifp->if_xname, timer); @@ -942,6 +945,7 @@ static int igmp_input_v3_query(struct ifnet *ifp, const struct ip *ip, /*const*/ struct igmpv3 *igmpv3) { + INIT_VNET_INET(ifp->if_vnet); struct igmp_ifinfo *igi; struct in_multi *inm; uint32_t maxresp, nsrc, qqi; @@ -1086,6 +1090,7 @@ static int igmp_input_v3_group_query(struct in_multi *inm, struct igmp_ifinfo *igi, int timer, /*const*/ struct igmpv3 *igmpv3) { + INIT_VNET_INET(curvnet); int retval; uint16_t nsrc; @@ -1188,6 +1193,7 @@ static int igmp_input_v1_report(struct ifnet *ifp, /*const*/ struct ip *ip, /*const*/ struct igmp *igmp) { + INIT_VNET_INET(ifp->if_vnet); struct in_ifaddr *ia; struct in_multi *inm; @@ -1294,6 +1300,7 @@ static int igmp_input_v2_report(struct ifnet *ifp, /*const*/ struct ip *ip, /*const*/ struct igmp *igmp) { + INIT_VNET_INET(ifp->if_vnet); struct in_ifaddr *ia; struct in_multi *inm; @@ -1579,21 +1586,15 @@ igmp_input(struct mbuf *m, int off) void igmp_fasttimo(void) { -#ifdef VIMAGE VNET_ITERATOR_DECL(vnet_iter); VNET_LIST_RLOCK(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); - INIT_VNET_INET(vnet_iter); igmp_fasttimo_vnet(); CURVNET_RESTORE(); } VNET_LIST_RUNLOCK(); -#else /* !VIMAGE */ - - igmp_fasttimo_vnet(); -#endif /* VIMAGE */ } /* @@ -1605,6 +1606,7 @@ igmp_fasttimo(void) static void igmp_fasttimo_vnet(void) { + INIT_VNET_INET(curvnet); struct ifqueue scq; /* State-change packets */ struct ifqueue qrq; /* Query response packets */ struct ifnet *ifp; @@ -1727,6 +1729,7 @@ out_locked: static void igmp_v1v2_process_group_timer(struct in_multi *inm, const int version) { + INIT_VNET_INET(curvnet); int report_timer_expired; IN_MULTI_LOCK_ASSERT(); @@ -1775,6 +1778,7 @@ igmp_v3_process_group_timers(struct igmp_ifinfo *igi, struct ifqueue *qrq, struct ifqueue *scq, struct in_multi *inm, const int uri_fasthz) { + INIT_VNET_INET(curvnet); int query_response_timer_expired; int state_change_retransmit_timer_expired; @@ -1964,6 +1968,7 @@ igmp_set_version(struct igmp_ifinfo *igi, const int version) static void igmp_v3_cancel_link_timers(struct igmp_ifinfo *igi) { + INIT_VNET_INET(curvnet); struct ifmultiaddr *ifma; struct ifnet *ifp; struct in_multi *inm; @@ -2039,6 +2044,7 @@ igmp_v3_cancel_link_timers(struct igmp_ifinfo *igi) static void igmp_v1v2_process_querier_timers(struct igmp_ifinfo *igi) { + INIT_VNET_INET(curvnet); IGMP_LOCK_ASSERT(); @@ -2115,20 +2121,15 @@ igmp_v1v2_process_querier_timers(struct igmp_ifinfo *igi) void igmp_slowtimo(void) { -#ifdef VIMAGE VNET_ITERATOR_DECL(vnet_iter); VNET_LIST_RLOCK(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); - INIT_VNET_INET(vnet_iter); igmp_slowtimo_vnet(); CURVNET_RESTORE(); } VNET_LIST_RUNLOCK(); -#else /* !VIMAGE */ - igmp_slowtimo_vnet(); -#endif /* VIMAGE */ } /* @@ -2137,6 +2138,7 @@ igmp_slowtimo(void) static void igmp_slowtimo_vnet(void) { + INIT_VNET_INET(curvnet); struct igmp_ifinfo *igi; IGMP_LOCK(); @@ -2164,9 +2166,6 @@ igmp_v1v2_queue_report(struct in_multi *inm, const int type) IGMP_LOCK_ASSERT(); ifp = inm->inm_ifp; - /* XXX are these needed ? */ - INIT_VNET_NET(ifp->if_vnet); - INIT_VNET_INET(ifp->if_vnet); MGETHDR(m, M_DONTWAIT, MT_DATA); if (m == NULL) @@ -2304,6 +2303,7 @@ out_locked: static int igmp_initial_join(struct in_multi *inm, struct igmp_ifinfo *igi) { + INIT_VNET_INET(curvnet); struct ifnet *ifp; struct ifqueue *ifq; int error, retval, syncstates; @@ -2432,6 +2432,7 @@ igmp_initial_join(struct in_multi *inm, struct igmp_ifinfo *igi) static int igmp_handle_state_change(struct in_multi *inm, struct igmp_ifinfo *igi) { + INIT_VNET_INET(curvnet); struct ifnet *ifp; int retval; @@ -2491,6 +2492,7 @@ igmp_handle_state_change(struct in_multi *inm, struct igmp_ifinfo *igi) static void igmp_final_leave(struct in_multi *inm, struct igmp_ifinfo *igi) { + INIT_VNET_INET(curvnet); int syncstates; syncstates = 1; @@ -3276,6 +3278,7 @@ igmp_v3_merge_state_changes(struct in_multi *inm, struct ifqueue *ifscq) static void igmp_v3_dispatch_general_query(struct igmp_ifinfo *igi) { + INIT_VNET_INET(curvnet); struct ifmultiaddr *ifma, *tifma; struct ifnet *ifp; struct in_multi *inm; @@ -3357,12 +3360,14 @@ igmp_intr(struct mbuf *m) CTR2(KTR_IGMPV3, "%s: transmit %p", __func__, m); /* - * Restore VNET image pointer from enqueued mbuf chain + * Set VNET image pointer from enqueued mbuf chain * before doing anything else. Whilst we use interface * indexes to guard against interface detach, they are * unique to each VIMAGE and must be retrieved. */ CURVNET_SET(m->m_pkthdr.header); + INIT_VNET_NET(curvnet); + INIT_VNET_INET(curvnet); ifindex = igmp_restore_context(m); /* @@ -3444,7 +3449,6 @@ out: static struct mbuf * igmp_v3_encap_report(struct ifnet *ifp, struct mbuf *m) { - INIT_VNET_NET(curvnet); INIT_VNET_INET(curvnet); struct igmp_report *igmp; struct ip *ip; @@ -3616,15 +3620,15 @@ vnet_igmp_idetach(const void *unused __unused) return (0); } -#ifdef VIMAGE -static struct vnet_symmap vnet_igmp_symmap[] = { - VNET_SYMMAP(igmp, igi_head), - VNET_SYMMAP(igmp, igmpstat), - VNET_SYMMAP_END +#ifndef VIMAGE_GLOBALS +static vnet_modinfo_t vnet_igmp_modinfo = { + .vmi_id = VNET_MOD_IGMP, + .vmi_name = "igmp", + .vmi_dependson = VNET_MOD_INET, + .vmi_iattach = vnet_igmp_iattach, + .vmi_idetach = vnet_igmp_idetach }; -VNET_MOD_DECLARE(IGMP, igmp, vnet_igmp_iattach, vnet_igmp_idetach, - vnet_igmp_symmap); -#endif /* VIMAGE */ +#endif static int igmp_modevent(module_t mod, int type, void *unused __unused) @@ -3633,22 +3637,20 @@ igmp_modevent(module_t mod, int type, void *unused __unused) switch (type) { case MOD_LOAD: igmp_sysinit(); -#ifdef VIMAGE +#ifndef VIMAGE_GLOBALS vnet_mod_register(&vnet_igmp_modinfo); #else - (void)vnet_igmp_iattach(NULL); -#endif /* VIMAGE */ + vnet_igmp_iattach(NULL); +#endif break; case MOD_UNLOAD: -#ifdef VIMAGE - /* - * TODO: Allow module unload if any VIMAGE instances - * are using this module. - */ - return (EBUSY); +#ifndef VIMAGE_GLOBALS +#ifdef NOTYET + vnet_mod_deregister(&vnet_igmp_modinfo); +#endif #else - (void)vnet_igmp_idetach(NULL); -#endif /* VIMAGE */ + vnet_igmp_idetach(NULL); +#endif igmp_sysuninit(); break; default: |