Date: Sat, 10 Oct 2009 19:54:45 +0000 (UTC) From: Ermal Luçi <eri@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r197939 - in user/eri/pf45/head/sys: contrib/pf/net modules/pflow net Message-ID: <200910101954.n9AJsjmA090800@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: eri Date: Sat Oct 10 19:54:45 2009 New Revision: 197939 URL: http://svn.freebsd.org/changeset/base/197939 Log: * Make pflow(4) compile. TODO: Add locking to it. Added: user/eri/pf45/head/sys/modules/pflow/ user/eri/pf45/head/sys/modules/pflow/Makefile (contents, props changed) Modified: user/eri/pf45/head/sys/contrib/pf/net/if_pflow.c user/eri/pf45/head/sys/contrib/pf/net/if_pflow.h user/eri/pf45/head/sys/contrib/pf/net/if_pfsync.c user/eri/pf45/head/sys/contrib/pf/net/pf.c user/eri/pf45/head/sys/contrib/pf/net/pf_ioctl.c user/eri/pf45/head/sys/contrib/pf/net/pfvar.h user/eri/pf45/head/sys/net/if_types.h Modified: user/eri/pf45/head/sys/contrib/pf/net/if_pflow.c ============================================================================== --- user/eri/pf45/head/sys/contrib/pf/net/if_pflow.c Sat Oct 10 18:24:54 2009 (r197938) +++ user/eri/pf45/head/sys/contrib/pf/net/if_pflow.c Sat Oct 10 19:54:45 2009 (r197939) @@ -17,17 +17,50 @@ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef __FreeBSD__ +#include "opt_inet.h" +#include "opt_inet6.h" +#include "opt_bpf.h" +#include "opt_pf.h" + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#ifdef DEV_BPF +#define NBPFILTER DEV_BPF +#else +#define NBPFILTER 0 +#endif + +#endif /* __FreeBSD__ */ + #include <sys/types.h> +#ifdef __FreeBSD__ +#include <sys/priv.h> +#endif #include <sys/malloc.h> #include <sys/param.h> #include <sys/mbuf.h> #include <sys/socket.h> +#ifdef __FreeBSD__ +#include <sys/module.h> +#include <sys/sockio.h> +#include <sys/taskqueue.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#else #include <sys/ioctl.h> +#endif #include <sys/kernel.h> #include <sys/sysctl.h> +#ifndef __FreeBSD__ #include <dev/rndvar.h> +#endif #include <net/if.h> +#ifdef __FreeBSD__ +#include <net/if_clone.h> +#endif #include <net/if_types.h> #include <net/bpf.h> #include <net/route.h> @@ -49,9 +82,14 @@ #include <net/pfvar.h> #include <net/if_pflow.h> +#ifndef __FreeBSD__ #include "bpfilter.h" #include "pflow.h" +#endif +#ifdef __FreeBSD__ +#include <machine/in_cksum.h> +#endif #define PFLOW_MINMTU \ (sizeof(struct pflow_header) + sizeof(struct pflow_flow)) @@ -65,11 +103,20 @@ SLIST_HEAD(, pflow_softc) pflowif_list; struct pflowstats pflowstats; void pflowattach(int); +#ifdef __FreeBSD__ +int pflow_clone_create(struct if_clone *, int, caddr_t); +void pflow_clone_destroy(struct ifnet *); +#else int pflow_clone_create(struct if_clone *, int); int pflow_clone_destroy(struct ifnet *); +#endif void pflow_setmtu(struct pflow_softc *, int); int pflowoutput(struct ifnet *, struct mbuf *, struct sockaddr *, +#ifdef __FreeBSD__ + struct route *); +#else struct rtentry *); +#endif int pflowioctl(struct ifnet *, u_long, caddr_t); void pflowstart(struct ifnet *); @@ -84,16 +131,22 @@ int pflow_get_dynport(void); int export_pflow_if(struct pf_state*, struct pflow_softc *); int copy_flow_to_m(struct pflow_flow *flow, struct pflow_softc *sc); +#ifdef __FreeBSD__ +IFC_SIMPLE_DECLARE(pflow, 1); +#else struct if_clone pflow_cloner = IF_CLONE_INITIALIZER("pflow", pflow_clone_create, pflow_clone_destroy); +#endif +#ifndef __FreeBSD__ /* from in_pcb.c */ extern int ipport_hifirstauto; extern int ipport_hilastauto; /* from kern/kern_clock.c; incremented each clock tick. */ extern int ticks; +#endif void pflowattach(int npflow) @@ -103,7 +156,11 @@ pflowattach(int npflow) } int +#ifdef __FreeBSD__ +pflow_clone_create(struct if_clone *ifc, int unit, caddr_t param) +#else pflow_clone_create(struct if_clone *ifc, int unit) +#endif { struct ifnet *ifp; struct pflow_softc *pflowif; @@ -115,16 +172,33 @@ pflow_clone_create(struct if_clone *ifc, pflowif->sc_sender_ip.s_addr = INADDR_ANY; pflowif->sc_sender_port = pflow_get_dynport(); +#ifdef __FreeBSD__ + pflowif->sc_imo.imo_membership = (struct in_multi **)malloc( + (sizeof(struct in_multi *) * IP_MIN_MEMBERSHIPS), M_DEVBUF, + M_NOWAIT | M_ZERO); + pflowif->sc_imo.imo_multicast_vif = -1; +#else pflowif->sc_imo.imo_membership = malloc( (sizeof(struct in_multi *) * IP_MIN_MEMBERSHIPS), M_IPMOPTS, M_WAITOK|M_ZERO); +#endif pflowif->sc_imo.imo_max_memberships = IP_MIN_MEMBERSHIPS; pflowif->sc_receiver_ip.s_addr = 0; pflowif->sc_receiver_port = 0; pflowif->sc_sender_ip.s_addr = INADDR_ANY; pflowif->sc_sender_port = pflow_get_dynport(); +#ifdef __FreeBSD__ + ifp = pflowif->sc_ifp = if_alloc(IFT_PFLOW); + if (ifp == NULL) { + free(pflowif->sc_imo.imo_membership, M_DEVBUF); + free(pflowif, M_DEVBUF); + return (ENOSPC); + } + if_initname(ifp, ifc->ifc_name, unit); +#else ifp = &pflowif->sc_if; snprintf(ifp->if_xname, sizeof ifp->if_xname, "pflow%d", unit); +#endif ifp->if_softc = pflowif; ifp->if_ioctl = pflowioctl; ifp->if_output = pflowoutput; @@ -133,22 +207,39 @@ pflow_clone_create(struct if_clone *ifc, ifp->if_snd.ifq_maxlen = ifqmaxlen; ifp->if_hdrlen = PFLOW_HDRLEN; ifp->if_flags = IFF_UP; +#ifdef __FreeBSD__ + ifp->if_flags &= ~IFF_DRV_RUNNING; +#else ifp->if_flags &= ~IFF_RUNNING; /* not running, need receiver */ +#endif pflow_setmtu(pflowif, ETHERMTU); +#ifdef __FreeBSD__ + callout_init(&pflowif->sc_tmo, CALLOUT_MPSAFE); +#else timeout_set(&pflowif->sc_tmo, pflow_timeout, pflowif); +#endif if_attach(ifp); +#ifndef __FreeBSD__ if_alloc_sadl(ifp); +#endif #if NBPFILTER > 0 +#ifdef __FreeBSD__ + bpfattach(ifp, DLT_RAW, 0); +#else bpfattach(&pflowif->sc_if.if_bpf, ifp, DLT_RAW, 0); #endif - +#endif /* Insert into list of pflows */ SLIST_INSERT_HEAD(&pflowif_list, pflowif, sc_next); return (0); } +#ifdef __FreeBSD__ +void +#else int +#endif pflow_clone_destroy(struct ifnet *ifp) { struct pflow_softc *sc = ifp->if_softc; @@ -161,10 +252,16 @@ pflow_clone_destroy(struct ifnet *ifp) #endif if_detach(ifp); SLIST_REMOVE(&pflowif_list, sc, pflow_softc, sc_next); +#ifdef __FreeBSD__ + free(sc->sc_imo.imo_membership, M_DEVBUF); +#else free(sc->sc_imo.imo_membership, M_IPMOPTS); +#endif free(sc, M_DEVBUF); splx(s); +#ifndef __FreeBSD__ return (0); +#endif } /* @@ -178,8 +275,17 @@ pflowstart(struct ifnet *ifp) for (;;) { s = splnet(); +#ifdef __FreeBSD__ + IF_LOCK(&ifp->if_snd); + _IF_DROP(&ifp->if_snd); + _IF_DEQUEUE(&ifp->if_snd, m); +#else IF_DROP(&ifp->if_snd); IF_DEQUEUE(&ifp->if_snd, m); +#endif +#ifdef __FreeBSD__ + IF_UNLOCK(&ifp->if_snd); +#endif splx(s); if (m == NULL) @@ -190,7 +296,11 @@ pflowstart(struct ifnet *ifp) int pflowoutput(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst, +#ifdef __FreeBSD__ + struct route *rt) +#else struct rtentry *rt) +#endif { m_freem(m); return (0); @@ -200,7 +310,9 @@ pflowoutput(struct ifnet *ifp, struct mb int pflowioctl(struct ifnet *ifp, u_long cmd, caddr_t data) { +#ifndef __FreeBSD__ struct proc *p = curproc; +#endif struct pflow_softc *sc = ifp->if_softc; struct ifreq *ifr = (struct ifreq *)data; struct pflowreq pflowr; @@ -214,10 +326,18 @@ pflowioctl(struct ifnet *ifp, u_long cmd if ((ifp->if_flags & IFF_UP) && sc->sc_receiver_ip.s_addr != 0 && sc->sc_receiver_port != 0) { +#ifdef __FreeBSD__ + ifp->if_drv_flags |= IFF_DRV_RUNNING; +#else ifp->if_flags |= IFF_RUNNING; +#endif sc->sc_gcounter=pflowstats.pflow_flows; } else +#ifdef __FreeBSD__ + ifp->if_drv_flags &= ~IFF_DRV_RUNNING; +#else ifp->if_flags &= ~IFF_RUNNING; +#endif break; case SIOCSIFMTU: if (ifr->ifr_mtu < PFLOW_MINMTU) @@ -244,7 +364,11 @@ pflowioctl(struct ifnet *ifp, u_long cmd break; case SIOCSETPFLOW: +#ifdef __FreeBSD__ + if ((error = priv_check(curthread, PRIV_NETINET_PF)) != 0) +#else if ((error = suser(p, p->p_acflag)) != 0) +#endif return (error); if ((error = copyin(ifr->ifr_data, &pflowr, sizeof(pflowr)))) @@ -264,10 +388,18 @@ pflowioctl(struct ifnet *ifp, u_long cmd if ((ifp->if_flags & IFF_UP) && sc->sc_receiver_ip.s_addr != 0 && sc->sc_receiver_port != 0) { +#ifdef __FreeBSD__ + ifp->if_drv_flags |= IFF_DRV_RUNNING; +#else ifp->if_flags |= IFF_RUNNING; +#endif sc->sc_gcounter=pflowstats.pflow_flows; } else +#ifdef __FreeBSD__ + ifp->if_drv_flags &= ~IFF_DRV_RUNNING; +#else ifp->if_flags &= ~IFF_RUNNING; +#endif break; @@ -291,7 +423,11 @@ pflow_setmtu(struct pflow_softc *sc, int sizeof (struct udpiphdr)) / sizeof(struct pflow_flow); if (sc->sc_maxcount > PFLOW_MAXFLOWS) sc->sc_maxcount = PFLOW_MAXFLOWS; +#ifdef __FreeBSD__ + sc->sc_ifp->if_mtu = sizeof(struct pflow_header) + +#else sc->sc_if.if_mtu = sizeof(struct pflow_header) + +#endif sizeof (struct udpiphdr) + sc->sc_maxcount * sizeof(struct pflow_flow); } @@ -326,10 +462,19 @@ pflow_get_mbuf(struct pflow_softc *sc) h.flow_sequence = htonl(sc->sc_gcounter); h.engine_type = PFLOW_ENGINE_TYPE; h.engine_id = PFLOW_ENGINE_ID; +#ifdef __FreeBSD__ + m_copyback(m, 0, PFLOW_HDRLEN, (caddr_t)&h); +#else m_copyback(m, 0, PFLOW_HDRLEN, &h); +#endif sc->sc_count = 0; +#ifdef __FreeBSD__ + callout_reset(&sc->sc_tmo, PFLOW_TIMEOUT * hz, + pflow_timeout, sc); +#else timeout_add_sec(&sc->sc_tmo, PFLOW_TIMEOUT); +#endif return (m); } @@ -383,11 +528,19 @@ int export_pflow_if(struct pf_state *st, struct pflow_softc *sc) { struct pf_state pfs_copy; +#ifdef __FreeBSD__ + struct ifnet *ifp = sc->sc_ifp; +#else struct ifnet *ifp = &sc->sc_if; +#endif u_int64_t bytes[2]; int ret = 0; +#ifdef __FreeBSD__ + if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) +#else if (!(ifp->if_flags & IFF_RUNNING)) +#endif return (0); if ((st->bytes[0] < (u_int64_t)PFLOW_MAXBYTES) @@ -439,7 +592,11 @@ copy_flow_to_m(struct pflow_flow *flow, } m_copyback(sc->sc_mbuf, PFLOW_HDRLEN + (sc->sc_count * sizeof (struct pflow_flow)), +#ifdef __FreeBSD__ + sizeof (struct pflow_flow), (caddr_t)flow); +#else sizeof (struct pflow_flow), flow); +#endif if (pflowstats.pflow_flows == sc->sc_gcounter) pflowstats.pflow_flows++; @@ -494,15 +651,27 @@ pflow_sendout(struct pflow_softc *sc) { struct mbuf *m = sc->sc_mbuf; struct pflow_header *h; +#ifdef __FreeBSD__ + struct ifnet *ifp = sc->sc_ifp; +#else struct ifnet *ifp = &sc->sc_if; +#endif +#ifdef __FreeBSD__ + callout_stop(&sc->sc_tmo); +#else timeout_del(&sc->sc_tmo); +#endif if (m == NULL) return (0); sc->sc_mbuf = NULL; +#ifdef __FreeBSD__ + if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) { +#else if (!(ifp->if_flags & IFF_RUNNING)) { +#endif m_freem(m); return (0); } @@ -524,7 +693,11 @@ pflow_sendout_mbuf(struct pflow_softc *s { struct udpiphdr *ui; u_int16_t len = m->m_pkthdr.len; +#ifdef __FreeBSD__ + struct ifnet *ifp = sc->sc_ifp; +#else struct ifnet *ifp = &sc->sc_if; +#endif struct ip *ip; int err; @@ -556,24 +729,40 @@ pflow_sendout_mbuf(struct pflow_softc *s * Compute the pseudo-header checksum; defer further checksumming * until ip_output() or hardware (if it exists). */ +#ifndef __FreeBSD__ + /* XXX */ m->m_pkthdr.csum_flags |= M_UDPV4_CSUM_OUT; ui->ui_sum = in_cksum_phdr(ui->ui_src.s_addr, ui->ui_dst.s_addr, htons(len + sizeof(struct udphdr) + IPPROTO_UDP)); +#endif #if NBPFILTER > 0 if (ifp->if_bpf) { ip->ip_sum = in_cksum(m, ip->ip_hl << 2); +#ifdef __FreeBSD__ + BPF_MTAP(ifp, m); +#else bpf_mtap(ifp->if_bpf, m, BPF_DIRECTION_OUT); +#endif } #endif +#ifdef __FreeBSD__ + sc->sc_ifp->if_opackets++; + sc->sc_ifp->if_obytes += m->m_pkthdr.len; +#else sc->sc_if.if_opackets++; sc->sc_if.if_obytes += m->m_pkthdr.len; +#endif if ((err = ip_output(m, NULL, NULL, IP_RAWOUTPUT, &sc->sc_imo, NULL))) { pflowstats.pflow_oerrors++; +#ifdef __FreeBSD__ + sc->sc_ifp->if_oerrors++; +#else sc->sc_if.if_oerrors++; +#endif } return (err); } @@ -581,13 +770,29 @@ pflow_sendout_mbuf(struct pflow_softc *s int pflow_get_dynport(void) { +#ifdef __FreeBSD__ + u_int16_t low, high, cut; +#else u_int16_t tmp, low, high, cut; +#endif +#ifdef __FreeBSD__ + low = V_ipport_firstauto; /* sysctl */ + high = V_ipport_lastauto; +#else low = ipport_hifirstauto; /* sysctl */ high = ipport_hilastauto; +#endif +#ifdef __FreeBSD__ + cut = low + (arc4random() % (1 + high - low)); +#else cut = arc4random_uniform(1 + high - low) + low; +#endif +#ifdef __FreeBSD__ + return (cut); +#else for (tmp = cut; tmp <= high; ++(tmp)) { if (!in_baddynamic(tmp, IPPROTO_UDP)) return (htons(tmp)); @@ -599,8 +804,10 @@ pflow_get_dynport(void) } return (htons(ipport_hilastauto)); /* XXX */ +#endif } +#ifdef notyet int pflow_sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) @@ -619,3 +826,40 @@ pflow_sysctl(int *name, u_int namelen, v } return (0); } +#endif + +#ifdef __FreeBSD__ +static int +pflow_modevent(module_t mod, int type, void *data) +{ + int error = 0; + + switch (type) { + case MOD_LOAD: + pflowattach(0); + export_pflow_ptr = export_pflow; + break; + case MOD_UNLOAD: + if_clone_detach(&pflow_cloner); + export_pflow_ptr = NULL; + break; + default: + error = EINVAL; + break; + } + + return error; +} + +static moduledata_t pflow_mod = { + "pflow", + pflow_modevent, + 0 +}; + +#define PFLOW_MODVER 1 + +DECLARE_MODULE(pflow, pflow_mod, SI_SUB_PROTO_IFATTACHDOMAIN, SI_ORDER_ANY); +MODULE_VERSION(pflow, PFLOW_MODVER); +MODULE_DEPEND(pflow, pf, PF_MODVER, PF_MODVER, PF_MODVER); +#endif /* __FreeBSD__ */ Modified: user/eri/pf45/head/sys/contrib/pf/net/if_pflow.h ============================================================================== --- user/eri/pf45/head/sys/contrib/pf/net/if_pflow.h Sat Oct 10 18:24:54 2009 (r197938) +++ user/eri/pf45/head/sys/contrib/pf/net/if_pflow.h Sat Oct 10 19:54:45 2009 (r197939) @@ -57,14 +57,22 @@ struct pflow_flow { extern int pflow_ok; struct pflow_softc { +#ifdef __FreeBSD__ + struct ifnet *sc_ifp; +#else struct ifnet sc_if; +#endif struct ifnet *sc_pflow_ifp; unsigned int sc_count; unsigned int sc_maxcount; u_int64_t sc_gcounter; struct ip_moptions sc_imo; +#ifdef __FreeBSD__ + struct callout sc_tmo; +#else struct timeout sc_tmo; +#endif struct in_addr sc_sender_ip; u_int16_t sc_sender_port; struct in_addr sc_receiver_ip; @@ -74,7 +82,6 @@ struct pflow_softc { }; extern struct pflow_softc *pflowif; - #endif /* _KERNEL */ struct pflow_header { @@ -113,6 +120,11 @@ struct pflowreq { }; #ifdef _KERNEL +#ifdef __FreeBSD__ +#define SIOCSETPFLOW _IOW('i', 249, struct ifreq) +#define SIOCGETPFLOW _IOWR('i', 250, struct ifreq) +#endif + int export_pflow(struct pf_state *); int pflow_sysctl(int *, u_int, void *, size_t *, void *, size_t); #endif /* _KERNEL */ Modified: user/eri/pf45/head/sys/contrib/pf/net/if_pfsync.c ============================================================================== --- user/eri/pf45/head/sys/contrib/pf/net/if_pfsync.c Sat Oct 10 18:24:54 2009 (r197938) +++ user/eri/pf45/head/sys/contrib/pf/net/if_pfsync.c Sat Oct 10 19:54:45 2009 (r197939) @@ -104,9 +104,6 @@ __FBSDID("$FreeBSD$"); #include <net/if_clone.h> #endif #include <net/if_types.h> -#ifdef __FreeBSD__ -#include <net/netisr.h> -#endif #include <net/route.h> #include <net/bpf.h> #include <net/netisr.h> @@ -3082,5 +3079,5 @@ static moduledata_t pfsync_mod = { DECLARE_MODULE(pfsync, pfsync_mod, SI_SUB_PROTO_IFATTACHDOMAIN, SI_ORDER_ANY); MODULE_VERSION(pfsync, PFSYNC_MODVER); -MODULE_DEPEND(pflog, pf, PF_MODVER, PF_MODVER, PF_MODVER); +MODULE_DEPEND(pfsync, pf, PF_MODVER, PF_MODVER, PF_MODVER); #endif /* __FreeBSD__ */ Modified: user/eri/pf45/head/sys/contrib/pf/net/pf.c ============================================================================== --- user/eri/pf45/head/sys/contrib/pf/net/pf.c Sat Oct 10 18:24:54 2009 (r197938) +++ user/eri/pf45/head/sys/contrib/pf/net/pf.c Sat Oct 10 19:54:45 2009 (r197939) @@ -1338,8 +1338,13 @@ pf_unlink_state(struct pf_state *cur) RB_REMOVE(pf_state_tree_id, &tree_id, cur); #if NPFLOW > 0 if (cur->state_flags & PFSTATE_PFLOW) +#ifdef __FreeBSD__ + if (export_pflow_ptr != NULL) + export_pflow_ptr(cur); +#else export_pflow(cur); #endif +#endif #if NPFSYNC > 0 #ifdef __FreeBSD__ if (pfsync_delete_state_ptr != NULL) Modified: user/eri/pf45/head/sys/contrib/pf/net/pf_ioctl.c ============================================================================== --- user/eri/pf45/head/sys/contrib/pf/net/pf_ioctl.c Sat Oct 10 18:24:54 2009 (r197938) +++ user/eri/pf45/head/sys/contrib/pf/net/pf_ioctl.c Sat Oct 10 19:54:45 2009 (r197939) @@ -246,6 +246,7 @@ static struct cdevsw pf_cdevsw = { int pf_end_threads = 0; struct mtx pf_task_mtx; #ifdef __FreeBSD__ + /* pfsync */ pfsync_state_import_t *pfsync_state_import_ptr = NULL; pfsync_up_t *pfsync_up_ptr = NULL; pfsync_insert_state_t *pfsync_insert_state_ptr = NULL; @@ -253,6 +254,8 @@ static struct cdevsw pf_cdevsw = { pfsync_delete_state_t *pfsync_delete_state_ptr = NULL; pfsync_clear_states_t *pfsync_clear_states_ptr = NULL; pfsync_defer_t *pfsync_defer_ptr = NULL; + /* pflow */ + export_pflow_t *export_pflow_ptr = NULL; #if NPFLOG >0 pflog_packet_t *pflog_packet_ptr = NULL; #endif Modified: user/eri/pf45/head/sys/contrib/pf/net/pfvar.h ============================================================================== --- user/eri/pf45/head/sys/contrib/pf/net/pfvar.h Sat Oct 10 18:24:54 2009 (r197938) +++ user/eri/pf45/head/sys/contrib/pf/net/pfvar.h Sat Oct 10 19:54:45 2009 (r197939) @@ -929,6 +929,7 @@ struct pfsync_state { } __packed; #ifdef __FreeBSD__ +/* pfsync */ typedef int pfsync_state_import_t(struct pfsync_state *, u_int8_t); typedef int pfsync_up_t(void); typedef void pfsync_insert_state_t(struct pf_state *); @@ -948,6 +949,11 @@ extern pfsync_defer_t *pfsync_defer_ptr void pfsync_state_export(struct pfsync_state *, struct pf_state *); +/* pflow */ +typedef int export_pflow_t(struct pf_state *); + +extern export_pflow_t *export_pflow_ptr; + /* Macros to set/clear/test flags. */ #ifdef _KERNEL #define SET(t, f) ((t) |= (f)) Added: user/eri/pf45/head/sys/modules/pflow/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/eri/pf45/head/sys/modules/pflow/Makefile Sat Oct 10 19:54:45 2009 (r197939) @@ -0,0 +1,25 @@ + +.include <bsd.own.mk> + +.PATH: ${.CURDIR}/../../contrib/pf/net + +KMOD= pflow +SRCS = if_pflow.c \ + opt_pf.h opt_inet.h opt_inet6.h opt_bpf.h + +CFLAGS+= -I${.CURDIR}/../../contrib/pf + +.if !defined(KERNBUILDDIR) +opt_inet.h: + echo "#define INET 1" > ${.TARGET} + +.if ${MK_INET6_SUPPORT} != "no" +opt_inet6.h: + echo "#define INET6 1" > ${.TARGET} +.endif + +opt_bpf.h: + echo "#define DEV_BPF 1" > ${.TARGET} +.endif + +.include <bsd.kmod.mk> Modified: user/eri/pf45/head/sys/net/if_types.h ============================================================================== --- user/eri/pf45/head/sys/net/if_types.h Sat Oct 10 18:24:54 2009 (r197938) +++ user/eri/pf45/head/sys/net/if_types.h Sat Oct 10 19:54:45 2009 (r197939) @@ -251,4 +251,5 @@ #define IFT_PFSYNC 0xf7 #define IFT_CARP 0xf8 /* Common Address Redundancy Protocol */ #define IFT_IPXIP 0xf9 /* IPX over IP tunneling; no longer used. */ +#define IFT_PFLOW 0xfa /* pflow */ #endif /* !_NET_IF_TYPES_H_ */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200910101954.n9AJsjmA090800>