Date: Fri, 13 Jan 2012 23:34:15 +0100 From: =?ISO-8859-1?Q?Ermal_Lu=E7i?= <eri@freebsd.org> To: Gleb Smirnoff <glebius@freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r229850 - in head: etc/rc.d sys/contrib/pf/net sys/netinet Message-ID: <CAPBZQG36GvQ9Tt31oh2PMjDcgmYGi0qpohex_Dds4AcU640WAw@mail.gmail.com> In-Reply-To: <201201090850.q098oNme031479@svn.freebsd.org> References: <201201090850.q098oNme031479@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
You ARE testing this right? Since you removed code that you do not actually mention at all in the commit message!!! On Mon, Jan 9, 2012 at 9:50 AM, Gleb Smirnoff <glebius@freebsd.org> wrote: > Author: glebius > Date: Mon Jan 9 08:50:22 2012 > New Revision: 229850 > URL: http://svn.freebsd.org/changeset/base/229850 > > Log: > Bunch of fixes to pfsync(4) module load/unload: > > o Make the pfsync.ko actually usable. Before this change loading it > didn't register protosw, so was a nop. However, a module /boot/kernel > did confused users. > o Rewrite the way we are joining multicast group: > - Move multicast initialization/destruction to separate functions. > - Don't allocate memory if we aren't going to join a multicast group. > - Use modern API for joining/leaving multicast group. > - Now the utterly wrong pfsync_ifdetach() isn't needed. > o Move module initialization from SYSINIT(9) to moduledata_t method. > o Refuse to unload module, unless asked forcibly. > o Improve a bit some FreeBSD porting code: > - Use separate malloc type. > - Simplify swi sheduling. > > This change is probably wrong from VIMAGE viewpoint, however pfsync > wasn't VIMAGE-correct before this change, too. > > Glanced at by: bz > > Modified: > head/etc/rc.d/pfsync > head/sys/contrib/pf/net/if_pfsync.c > head/sys/netinet/in_proto.c > > Modified: head/etc/rc.d/pfsync > > ============================================================================== > --- head/etc/rc.d/pfsync Mon Jan 9 08:36:12 2012 (r229849) > +++ head/etc/rc.d/pfsync Mon Jan 9 08:50:22 2012 (r229850) > @@ -18,13 +18,6 @@ required_modules="pf" > > pfsync_prestart() > { > - # XXX Currently pfsync cannot be a module as it must register > - # a network protocol in a static kernel table. > - if ! kldstat -q -m pfsync; then > - warn "pfsync(4) must be statically compiled in the kernel." > - return 1 > - fi > - > case "$pfsync_syncdev" in > '') > warn "pfsync_syncdev is not set." > > Modified: head/sys/contrib/pf/net/if_pfsync.c > > ============================================================================== > --- head/sys/contrib/pf/net/if_pfsync.c Mon Jan 9 08:36:12 2012 > (r229849) > +++ head/sys/contrib/pf/net/if_pfsync.c Mon Jan 9 08:50:22 2012 > (r229850) > @@ -87,6 +87,7 @@ __FBSDID("$FreeBSD$"); > #include <sys/taskqueue.h> > #include <sys/lock.h> > #include <sys/mutex.h> > +#include <sys/protosw.h> > #else > #include <sys/ioctl.h> > #include <sys/timeout.h> > @@ -295,21 +296,25 @@ struct pfsync_softc { > #else > struct timeout sc_tmo; > #endif > -#ifdef __FreeBSD__ > - eventhandler_tag sc_detachtag; > -#endif > - > }; > > #ifdef __FreeBSD__ > +static MALLOC_DEFINE(M_PFSYNC, "pfsync", "pfsync data"); > static VNET_DEFINE(struct pfsync_softc *, pfsyncif) = NULL; > #define V_pfsyncif VNET(pfsyncif) > - > +static VNET_DEFINE(void *, pfsync_swi_cookie) = NULL; > +#define V_pfsync_swi_cookie VNET(pfsync_swi_cookie) > static VNET_DEFINE(struct pfsyncstats, pfsyncstats); > #define V_pfsyncstats VNET(pfsyncstats) > static VNET_DEFINE(int, pfsync_carp_adj) = CARP_MAXSKEW; > #define V_pfsync_carp_adj VNET(pfsync_carp_adj) > > +static void pfsyncintr(void *); > +static int pfsync_multicast_setup(struct pfsync_softc *); > +static void pfsync_multicast_cleanup(struct pfsync_softc *); > +static int pfsync_init(void); > +static void pfsync_uninit(void); > + > SYSCTL_NODE(_net, OID_AUTO, pfsync, CTLFLAG_RW, 0, "PFSYNC"); > SYSCTL_VNET_STRUCT(_net_pfsync, OID_AUTO, stats, CTLFLAG_RW, > &VNET_NAME(pfsyncstats), pfsyncstats, > @@ -322,16 +327,6 @@ struct pfsyncstats pfsyncstats; > #define V_pfsyncstats pfsyncstats > #endif > > -#ifdef __FreeBSD__ > -static void pfsyncintr(void *); > -struct pfsync_swi { > - void * pfsync_swi_cookie; > -}; > -static struct pfsync_swi pfsync_swi; > -#define schednetisr(p) swi_sched(pfsync_swi.pfsync_swi_cookie, 0) > -#define NETISR_PFSYNC > -#endif > - > void pfsyncattach(int); > #ifdef __FreeBSD__ > int pfsync_clone_create(struct if_clone *, int, caddr_t); > @@ -377,8 +372,6 @@ void pfsync_bulk_update(void *); > void pfsync_bulk_fail(void *); > > #ifdef __FreeBSD__ > -void pfsync_ifdetach(void *, struct ifnet *); > - > /* XXX: ugly */ > #define betoh64 (unsigned long long)be64toh > #define timeout_del callout_stop > @@ -390,6 +383,10 @@ int pfsync_sync_ok; > #endif > > #ifdef __FreeBSD__ > +VNET_DEFINE(struct ifc_simple_data, pfsync_cloner_data); > +VNET_DEFINE(struct if_clone, pfsync_cloner); > +#define V_pfsync_cloner_data VNET(pfsync_cloner_data) > +#define V_pfsync_cloner VNET(pfsync_cloner) > IFC_SIMPLE_DECLARE(pfsync, 1); > #else > struct if_clone pfsync_cloner = > @@ -415,25 +412,20 @@ pfsync_clone_create(struct if_clone *ifc > if (unit != 0) > return (EINVAL); > > -#ifndef __FreeBSD__ > +#ifdef __FreeBSD__ > + sc = malloc(sizeof(struct pfsync_softc), M_PFSYNC, M_WAITOK | > M_ZERO); > + sc->pfsync_sync_ok = 1; > +#else > pfsync_sync_ok = 1; > + sc = malloc(sizeof(*pfsyncif), M_DEVBUF, M_NOWAIT | M_ZERO); > #endif > > - sc = malloc(sizeof(struct pfsync_softc), M_DEVBUF, M_NOWAIT | > M_ZERO); > - if (sc == NULL) > - return (ENOMEM); > - > for (q = 0; q < PFSYNC_S_COUNT; q++) > TAILQ_INIT(&sc->sc_qs[q]); > > #ifdef __FreeBSD__ > - sc->pfsync_sync_ok = 1; > - sc->sc_pool = uma_zcreate("pfsync", PFSYNC_PLSIZE, > - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); > - if (sc->sc_pool == NULL) { > - free(sc, M_DEVBUF); > - return (ENOMEM); > - } > + sc->sc_pool = uma_zcreate("pfsync", PFSYNC_PLSIZE, NULL, NULL, > NULL, > + NULL, UMA_ALIGN_PTR, 0); > #else > pool_init(&sc->sc_pool, PFSYNC_PLSIZE, 0, 0, 0, "pfsync", NULL); > #endif > @@ -446,13 +438,7 @@ pfsync_clone_create(struct if_clone *ifc > sc->sc_len = PFSYNC_MINPKT; > sc->sc_maxupdates = 128; > > -#ifdef __FreeBSD__ > - sc->sc_imo.imo_membership = (struct in_multi **)malloc( > - (sizeof(struct in_multi *) * IP_MIN_MEMBERSHIPS), M_DEVBUF, > - M_NOWAIT | M_ZERO); > - sc->sc_imo.imo_max_memberships = IP_MIN_MEMBERSHIPS; > - sc->sc_imo.imo_multicast_vif = -1; > -#else > +#ifndef __FreeBSD__ > sc->sc_imo.imo_membership = (struct in_multi **)malloc( > (sizeof(struct in_multi *) * IP_MIN_MEMBERSHIPS), M_IPMOPTS, > M_WAITOK | M_ZERO); > @@ -462,26 +448,11 @@ pfsync_clone_create(struct if_clone *ifc > #ifdef __FreeBSD__ > ifp = sc->sc_ifp = if_alloc(IFT_PFSYNC); > if (ifp == NULL) { > - free(sc->sc_imo.imo_membership, M_DEVBUF); > uma_zdestroy(sc->sc_pool); > - free(sc, M_DEVBUF); > + free(sc, M_PFSYNC); > return (ENOSPC); > } > if_initname(ifp, ifc->ifc_name, unit); > - > - sc->sc_detachtag = EVENTHANDLER_REGISTER(ifnet_departure_event, > -#ifdef __FreeBSD__ > - pfsync_ifdetach, V_pfsyncif, EVENTHANDLER_PRI_ANY); > -#else > - pfsync_ifdetach, pfsyncif, EVENTHANDLER_PRI_ANY); > -#endif > - if (sc->sc_detachtag == NULL) { > - if_free(ifp); > - free(sc->sc_imo.imo_membership, M_DEVBUF); > - uma_zdestroy(sc->sc_pool); > - free(sc, M_DEVBUF); > - return (ENOSPC); > - } > #else > ifp = &sc->sc_if; > snprintf(ifp->if_xname, sizeof ifp->if_xname, "pfsync%d", unit); > @@ -540,7 +511,6 @@ pfsync_clone_destroy(struct ifnet *ifp) > struct pfsync_softc *sc = ifp->if_softc; > > #ifdef __FreeBSD__ > - EVENTHANDLER_DEREGISTER(ifnet_departure_event, sc->sc_detachtag); > PF_LOCK(); > #endif > timeout_del(&sc->sc_bulkfail_tmo); > @@ -573,11 +543,13 @@ pfsync_clone_destroy(struct ifnet *ifp) > #endif > #ifdef __FreeBSD__ > if_free(ifp); > - free(sc->sc_imo.imo_membership, M_DEVBUF); > + if (sc->sc_imo.imo_membership) > + pfsync_multicast_cleanup(sc); > + free(sc, M_PFSYNC); > #else > free(sc->sc_imo.imo_membership, M_IPMOPTS); > -#endif > free(sc, M_DEVBUF); > +#endif > > #ifdef __FreeBSD__ > V_pfsyncif = NULL; > @@ -1886,12 +1858,15 @@ pfsyncioctl(struct ifnet *ifp, u_long cm > sc->sc_sync_if = NULL; > #ifdef __FreeBSD__ > PF_UNLOCK(); > -#endif > + if (imo->imo_membership) > + pfsync_multicast_cleanup(sc); > +#else > if (imo->imo_num_memberships > 0) { > in_delmulti(imo->imo_membership[ > --imo->imo_num_memberships]); > imo->imo_multicast_ifp = NULL; > } > +#endif > break; > } > > @@ -1916,57 +1891,53 @@ pfsyncioctl(struct ifnet *ifp, u_long cm > pfsync_sendout(); > sc->sc_sync_if = sifp; > > - if (imo->imo_num_memberships > 0) { > #ifdef __FreeBSD__ > + if (imo->imo_membership) { > PF_UNLOCK(); > -#endif > - > in_delmulti(imo->imo_membership[--imo->imo_num_memberships]); > -#ifdef __FreeBSD__ > + pfsync_multicast_cleanup(sc); > PF_LOCK(); > -#endif > + } > +#else > + if (imo->imo_num_memberships > 0) { > + > in_delmulti(imo->imo_membership[--imo->imo_num_memberships]); > imo->imo_multicast_ifp = NULL; > } > +#endif > > - if (sc->sc_sync_if && > #ifdef __FreeBSD__ > + if (sc->sc_sync_if && > sc->sc_sync_peer.s_addr == htonl(INADDR_PFSYNC_GROUP)) { > + PF_UNLOCK(); > + error = pfsync_multicast_setup(sc); > + if (error) > + return (error); > + PF_LOCK(); > + } > #else > + if (sc->sc_sync_if && > sc->sc_sync_peer.s_addr == INADDR_PFSYNC_GROUP) { > -#endif > struct in_addr addr; > > if (!(sc->sc_sync_if->if_flags & IFF_MULTICAST)) { > sc->sc_sync_if = NULL; > -#ifdef __FreeBSD__ > - PF_UNLOCK(); > -#endif > splx(s); > return (EADDRNOTAVAIL); > } > > -#ifdef __FreeBSD__ > - addr.s_addr = htonl(INADDR_PFSYNC_GROUP); > -#else > addr.s_addr = INADDR_PFSYNC_GROUP; > -#endif > > -#ifdef __FreeBSD__ > - PF_UNLOCK(); > -#endif > if ((imo->imo_membership[0] = > in_addmulti(&addr, sc->sc_sync_if)) == NULL) { > sc->sc_sync_if = NULL; > splx(s); > return (ENOBUFS); > } > -#ifdef __FreeBSD__ > - PF_LOCK(); > -#endif > imo->imo_num_memberships++; > imo->imo_multicast_ifp = sc->sc_sync_if; > imo->imo_multicast_ttl = PFSYNC_DFLTTL; > imo->imo_multicast_loop = 0; > } > +#endif /* !__FreeBSD__ */ > > ip = &sc->sc_template; > bzero(ip, sizeof(*ip)); > @@ -2365,7 +2336,7 @@ pfsync_sendout(void) > sc->sc_len = PFSYNC_MINPKT; > > IFQ_ENQUEUE(&sc->sc_ifp->if_snd, m, dummy_error); > - schednetisr(NETISR_PFSYNC); > + swi_sched(V_pfsync_swi_cookie, 0); > #else > sc->sc_if.if_opackets++; > sc->sc_if.if_obytes += m->m_pkthdr.len; > @@ -3342,54 +3313,91 @@ pfsync_sysctl(int *name, u_int namelen, > } > > #ifdef __FreeBSD__ > -void > -pfsync_ifdetach(void *arg, struct ifnet *ifp) > +static int > +pfsync_multicast_setup(struct pfsync_softc *sc) > { > - struct pfsync_softc *sc = (struct pfsync_softc *)arg; > - struct ip_moptions *imo; > - > - if (sc == NULL || sc->sc_sync_if != ifp) > - return; /* not for us; unlocked read */ > + struct ip_moptions *imo = &sc->sc_imo; > + int error; > > - CURVNET_SET(sc->sc_ifp->if_vnet); > + if (!(sc->sc_sync_if->if_flags & IFF_MULTICAST)) { > + sc->sc_sync_if = NULL; > + return (EADDRNOTAVAIL); > + } > > - PF_LOCK(); > + imo->imo_membership = (struct in_multi **)malloc( > + (sizeof(struct in_multi *) * IP_MIN_MEMBERSHIPS), M_PFSYNC, > + M_WAITOK | M_ZERO); > + imo->imo_max_memberships = IP_MIN_MEMBERSHIPS; > + imo->imo_multicast_vif = -1; > > - /* Deal with a member interface going away from under us. */ > - sc->sc_sync_if = NULL; > - imo = &sc->sc_imo; > - if (imo->imo_num_memberships > 0) { > - KASSERT(imo->imo_num_memberships == 1, > - ("%s: imo_num_memberships != 1", __func__)); > - /* > - * Our event handler is always called after protocol > - * domains have been detached from the underlying ifnet. > - * Do not call in_delmulti(); we held a single reference > - * which the protocol domain has purged in > in_purgemaddrs(). > - */ > - PF_UNLOCK(); > - imo->imo_membership[--imo->imo_num_memberships] = NULL; > - PF_LOCK(); > - imo->imo_multicast_ifp = NULL; > - } > + if ((error = in_joingroup(sc->sc_sync_if, &sc->sc_sync_peer, NULL, > + &imo->imo_membership[0])) != 0) { > + free(imo->imo_membership, M_PFSYNC); > + return (error); > + } > + imo->imo_num_memberships++; > + imo->imo_multicast_ifp = sc->sc_sync_if; > + imo->imo_multicast_ttl = PFSYNC_DFLTTL; > + imo->imo_multicast_loop = 0; > > - PF_UNLOCK(); > - > - CURVNET_RESTORE(); > + return (0); > } > > +static void > +pfsync_multicast_cleanup(struct pfsync_softc *sc) > +{ > + struct ip_moptions *imo = &sc->sc_imo; > + > + in_leavegroup(imo->imo_membership[0], NULL); > + free(imo->imo_membership, M_PFSYNC); > + imo->imo_membership = NULL; > + imo->imo_multicast_ifp = NULL; > +} > + > +#ifdef INET > +extern struct domain inetdomain; > +static struct protosw in_pfsync_protosw = { > + .pr_type = SOCK_RAW, > + .pr_domain = &inetdomain, > + .pr_protocol = IPPROTO_PFSYNC, > + .pr_flags = PR_ATOMIC|PR_ADDR, > + .pr_input = pfsync_input, > + .pr_output = (pr_output_t *)rip_output, > + .pr_ctloutput = rip_ctloutput, > + .pr_usrreqs = &rip_usrreqs > +}; > +#endif > + > static int > -vnet_pfsync_init(const void *unused) > +pfsync_init() > { > + VNET_ITERATOR_DECL(vnet_iter); > int error = 0; > > - pfsyncattach(0); > - > - error = swi_add(NULL, "pfsync", pfsyncintr, V_pfsyncif, > - SWI_NET, INTR_MPSAFE, &pfsync_swi.pfsync_swi_cookie); > + VNET_LIST_RLOCK(); > + VNET_FOREACH(vnet_iter) { > + CURVNET_SET(vnet_iter); > + V_pfsync_cloner = pfsync_cloner; > + V_pfsync_cloner_data = pfsync_cloner_data; > + V_pfsync_cloner.ifc_data = &V_pfsync_cloner_data; > + if_clone_attach(&V_pfsync_cloner); > + error = swi_add(NULL, "pfsync", pfsyncintr, V_pfsyncif, > + SWI_NET, INTR_MPSAFE, &V_pfsync_swi_cookie); > + CURVNET_RESTORE(); > + if (error) > + goto fail_locked; > + } > + VNET_LIST_RUNLOCK(); > +#ifdef INET > + error = pf_proto_register(PF_INET, &in_pfsync_protosw); > if (error) > - panic("%s: swi_add %d", __func__, error); > - > + goto fail; > + error = ipproto_register(IPPROTO_PFSYNC); > + if (error) { > + pf_proto_unregister(PF_INET, IPPROTO_PFSYNC, SOCK_RAW); > + goto fail; > + } > +#endif > PF_LOCK(); > pfsync_state_import_ptr = pfsync_state_import; > pfsync_up_ptr = pfsync_up; > @@ -3402,13 +3410,27 @@ vnet_pfsync_init(const void *unused) > PF_UNLOCK(); > > return (0); > + > +fail: > + VNET_LIST_RLOCK(); > +fail_locked: > + VNET_FOREACH(vnet_iter) { > + CURVNET_SET(vnet_iter); > + if (V_pfsync_swi_cookie) { > + swi_remove(V_pfsync_swi_cookie); > + if_clone_detach(&V_pfsync_cloner); > + } > + CURVNET_RESTORE(); > + } > + VNET_LIST_RUNLOCK(); > + > + return (error); > } > > -static int > -vnet_pfsync_uninit(const void *unused) > +static void > +pfsync_uninit() > { > - > - swi_remove(pfsync_swi.pfsync_swi_cookie); > + VNET_ITERATOR_DECL(vnet_iter); > > PF_LOCK(); > pfsync_state_import_ptr = NULL; > @@ -3421,30 +3443,18 @@ vnet_pfsync_uninit(const void *unused) > pfsync_defer_ptr = NULL; > PF_UNLOCK(); > > - if_clone_detach(&pfsync_cloner); > - > - return (0); > + ipproto_unregister(IPPROTO_PFSYNC); > + pf_proto_unregister(PF_INET, IPPROTO_PFSYNC, SOCK_RAW); > + VNET_LIST_RLOCK(); > + VNET_FOREACH(vnet_iter) { > + CURVNET_SET(vnet_iter); > + swi_remove(V_pfsync_swi_cookie); > + if_clone_detach(&V_pfsync_cloner); > + CURVNET_RESTORE(); > + } > + VNET_LIST_RUNLOCK(); > } > > -/* Define startup order. */ > -#define PFSYNC_SYSINIT_ORDER SI_SUB_PROTO_IF > -#define PFSYNC_MODEVENT_ORDER (SI_ORDER_FIRST) /* On boot slot > in here. */ > -#define PFSYNC_VNET_ORDER (PFSYNC_MODEVENT_ORDER + 2) /* > Later still. */ > - > -/* > - * Starting up. > - * VNET_SYSINIT is called for each existing vnet and each new vnet. > - */ > -VNET_SYSINIT(vnet_pfsync_init, PFSYNC_SYSINIT_ORDER, PFSYNC_VNET_ORDER, > - vnet_pfsync_init, NULL); > - > -/* > - * Closing up shop. These are done in REVERSE ORDER, > - * Not called on reboot. > - * VNET_SYSUNINIT is called for each exiting vnet as it exits. > - */ > -VNET_SYSUNINIT(vnet_pfsync_uninit, PFSYNC_SYSINIT_ORDER, > PFSYNC_VNET_ORDER, > - vnet_pfsync_uninit, NULL); > static int > pfsync_modevent(module_t mod, int type, void *data) > { > @@ -3452,21 +3462,23 @@ pfsync_modevent(module_t mod, int type, > > switch (type) { > case MOD_LOAD: > -#ifndef __FreeBSD__ > - pfsyncattach(0); > -#endif > + error = pfsync_init(); > + break; > + case MOD_QUIESCE: > + /* > + * Module should not be unloaded due to race conditions. > + */ > + error = EPERM; > break; > case MOD_UNLOAD: > -#ifndef __FreeBSD__ > - if_clone_detach(&pfsync_cloner); > -#endif > + pfsync_uninit(); > break; > default: > error = EINVAL; > break; > } > > - return error; > + return (error); > } > > static moduledata_t pfsync_mod = { > @@ -3477,7 +3489,7 @@ static moduledata_t pfsync_mod = { > > #define PFSYNC_MODVER 1 > > -DECLARE_MODULE(pfsync, pfsync_mod, SI_SUB_PSEUDO, SI_ORDER_ANY); > +DECLARE_MODULE(pfsync, pfsync_mod, SI_SUB_PROTO_DOMAIN, SI_ORDER_ANY); > MODULE_VERSION(pfsync, PFSYNC_MODVER); > MODULE_DEPEND(pfsync, pf, PF_MODVER, PF_MODVER, PF_MODVER); > #endif /* __FreeBSD__ */ > > Modified: head/sys/netinet/in_proto.c > > ============================================================================== > --- head/sys/netinet/in_proto.c Mon Jan 9 08:36:12 2012 (r229849) > +++ head/sys/netinet/in_proto.c Mon Jan 9 08:50:22 2012 (r229850) > @@ -37,7 +37,6 @@ __FBSDID("$FreeBSD$"); > #include "opt_ipsec.h" > #include "opt_inet.h" > #include "opt_inet6.h" > -#include "opt_pf.h" > #include "opt_sctp.h" > #include "opt_mpath.h" > > @@ -101,11 +100,6 @@ static struct pr_usrreqs nousrreqs; > #include <netinet/sctp_var.h> > #endif /* SCTP */ > > -#ifdef DEV_PFSYNC > -#include <net/pfvar.h> > -#include <net/if_pfsync.h> > -#endif > - > FEATURE(inet, "Internet Protocol version 4"); > > extern struct domain inetdomain; > @@ -317,17 +311,6 @@ struct protosw inetsw[] = { > .pr_ctloutput = rip_ctloutput, > .pr_usrreqs = &rip_usrreqs > }, > -#ifdef DEV_PFSYNC > -{ > - .pr_type = SOCK_RAW, > - .pr_domain = &inetdomain, > - .pr_protocol = IPPROTO_PFSYNC, > - .pr_flags = PR_ATOMIC|PR_ADDR, > - .pr_input = pfsync_input, > - .pr_ctloutput = rip_ctloutput, > - .pr_usrreqs = &rip_usrreqs > -}, > -#endif /* DEV_PFSYNC */ > /* Spacer n-times for loadable protocols. */ > IPPROTOSPACER, > IPPROTOSPACER, > @@ -397,6 +380,3 @@ SYSCTL_NODE(_net_inet, IPPROTO_IPCOMP, i > SYSCTL_NODE(_net_inet, IPPROTO_IPIP, ipip, CTLFLAG_RW, 0, "IPIP"); > #endif /* IPSEC */ > SYSCTL_NODE(_net_inet, IPPROTO_RAW, raw, CTLFLAG_RW, 0, "RAW"); > -#ifdef DEV_PFSYNC > -SYSCTL_NODE(_net_inet, IPPROTO_PFSYNC, pfsync, CTLFLAG_RW, 0, "PFSYNC"); > -#endif > -- Ermal
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPBZQG36GvQ9Tt31oh2PMjDcgmYGi0qpohex_Dds4AcU640WAw>