From 5bba2114d0aeb3adc36f08ea8c5a0712f29c2e76 Mon Sep 17 00:00:00 2001 From: Max Laier Date: Sun, 5 Feb 2006 17:17:32 +0000 Subject: [PATCH] Make pflog a seperate module. As a result pflog_packet() becomes a function pointer that is declared in pf_ioctl.c Requested by: yar (as part of the module build reorg) MFC after: 1 week X-MFC with: yar's module reorg --- sys/contrib/pf/net/if_pflog.c | 7 +++++++ sys/contrib/pf/net/if_pflog.h | 14 ++++++++++++++ sys/contrib/pf/net/pf_ioctl.c | 5 +++++ sys/modules/Makefile | 2 ++ sys/modules/pf/Makefile | 3 --- sys/modules/pflog/Makefile | 27 +++++++++++++++++++++++++++ 6 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 sys/modules/pflog/Makefile diff --git a/sys/contrib/pf/net/if_pflog.c b/sys/contrib/pf/net/if_pflog.c index 671ea2684f4..54f7129bc19 100644 --- a/sys/contrib/pf/net/if_pflog.c +++ b/sys/contrib/pf/net/if_pflog.c @@ -376,9 +376,15 @@ pflog_modevent(module_t mod, int type, void *data) case MOD_LOAD: LIST_INIT(&pflog_list); if_clone_attach(&pflog_cloner); + PF_LOCK(); + pflog_packet_ptr = pflog_packet; + PF_UNLOCK(); break; case MOD_UNLOAD: + PF_LOCK(); + pflog_packet_ptr = NULL; + PF_UNLOCK(); if_clone_detach(&pflog_cloner); break; @@ -400,4 +406,5 @@ static moduledata_t pflog_mod = { DECLARE_MODULE(pflog, pflog_mod, SI_SUB_PROTO_IFATTACHDOMAIN, SI_ORDER_ANY); MODULE_VERSION(pflog, PFLOG_MODVER); +MODULE_DEPEND(pflog, pf, PF_MODVER, PF_MODVER, PF_MODVER); #endif /* __FreeBSD__ */ diff --git a/sys/contrib/pf/net/if_pflog.h b/sys/contrib/pf/net/if_pflog.h index 68560e4b563..93cb884e1e7 100644 --- a/sys/contrib/pf/net/if_pflog.h +++ b/sys/contrib/pf/net/if_pflog.h @@ -70,10 +70,24 @@ struct old_pfloghdr { #ifdef _KERNEL +#ifdef __FreeBSD__ +/* XXX */ +#include + +typedef int pflog_packet_t(struct pfi_kif *, struct mbuf *, sa_family_t, + u_int8_t, u_int8_t, struct pf_rule *, struct pf_rule *, + struct pf_ruleset *); +extern pflog_packet_t *pflog_packet_ptr; +#define PFLOG_PACKET(i,x,a,b,c,d,e,f,g) do { \ + if (pflog_packet_ptr != NULL) \ + pflog_packet_ptr(i,a,b,c,d,e,f,g); \ +} while (0) +#else #if NPFLOG > 0 #define PFLOG_PACKET(i,x,a,b,c,d,e,f,g) pflog_packet(i,a,b,c,d,e,f,g) #else #define PFLOG_PACKET(i,x,a,b,c,d,e,f,g) ((void)0) #endif /* NPFLOG > 0 */ +#endif /* __FreeBSD__ */ #endif /* _KERNEL */ #endif /* _NET_IF_PFLOG_H_ */ diff --git a/sys/contrib/pf/net/pf_ioctl.c b/sys/contrib/pf/net/pf_ioctl.c index 1141b2f85ff..fdc3b18f3b5 100644 --- a/sys/contrib/pf/net/pf_ioctl.c +++ b/sys/contrib/pf/net/pf_ioctl.c @@ -108,6 +108,10 @@ #include #endif /* NPFSYNC > 0 */ +#ifdef __FreeBSD__ +#include +#endif + #ifdef INET6 #include #include @@ -230,6 +234,7 @@ static struct cdevsw pf_cdevsw = { static volatile int pf_pfil_hooked = 0; struct mtx pf_task_mtx; +pflog_packet_t *pflog_packet_ptr = NULL; void init_pf_mutex(void) diff --git a/sys/modules/Makefile b/sys/modules/Makefile index db3d879f660..f8cc7c05839 100644 --- a/sys/modules/Makefile +++ b/sys/modules/Makefile @@ -180,6 +180,7 @@ SUBDIR= ${_3dfx} \ pcn \ ${_pecoff} \ ${_pf} \ + ${_pflog} \ plip \ ${_pmc} \ portalfs \ @@ -307,6 +308,7 @@ _ipfilter= ipfilter .if !defined(NO_PF) || defined(ALL_MODULES) _pf= pf +_pflog= pflog .endif .if ${MACHINE_ARCH} == "i386" diff --git a/sys/modules/pf/Makefile b/sys/modules/pf/Makefile index 9a73c41923d..bcdbb96461d 100644 --- a/sys/modules/pf/Makefile +++ b/sys/modules/pf/Makefile @@ -2,11 +2,9 @@ .PATH: ${.CURDIR}/../../contrib/pf/net .PATH: ${.CURDIR}/../../contrib/pf/netinet -.PATH: ${.CURDIR}/../../netinet KMOD= pf SRCS = pf.c pf_if.c pf_subr.c pf_osfp.c pf_ioctl.c pf_norm.c pf_table.c \ - if_pflog.c \ in4_cksum.c \ opt_pf.h opt_inet.h opt_inet6.h opt_bpf.h @@ -15,7 +13,6 @@ CFLAGS+= -I${.CURDIR}/../../contrib/pf .if !defined(KERNBUILDDIR) opt_pf.h: echo "#define DEV_PF 1" > opt_pf.h - echo "#define DEV_PFLOG 1" >> opt_pf.h opt_inet.h: echo "#define INET 1" > opt_inet.h diff --git a/sys/modules/pflog/Makefile b/sys/modules/pflog/Makefile new file mode 100644 index 00000000000..a2ce41140ff --- /dev/null +++ b/sys/modules/pflog/Makefile @@ -0,0 +1,27 @@ +# $FreeBSD$ + +.PATH: ${.CURDIR}/../../contrib/pf/net + +KMOD= pflog +SRCS = if_pflog.c \ + opt_pf.h opt_inet.h opt_inet6.h opt_bpf.h + +CFLAGS+= -I${.CURDIR}/../../contrib/pf + +.if !defined(KERNBUILDDIR) +opt_pf.h: + echo "#define DEV_PFLOG 1" > opt_pf.h + +opt_inet.h: + echo "#define INET 1" > opt_inet.h + +.if !defined(NO_INET6) +opt_inet6.h: + echo "#define INET6 1" > opt_inet6.h +.endif + +opt_bpf.h: + echo "#define DEV_BPF 1" > opt_bpf.h +.endif + +.include