if_pflog.c (241394) | if_pflog.c (241610) |
---|---|
1/* $OpenBSD: if_pflog.c,v 1.26 2007/10/18 21:58:18 mpf Exp $ */ 2/* 3 * The authors of this code are John Ioannidis (ji@tla.org), 4 * Angelos D. Keromytis (kermit@csd.uch.gr) and 5 * Niels Provos (provos@physnet.uni-hamburg.de). 6 * 7 * This code was written by John Ioannidis for BSD/OS in Athens, Greece, 8 * in November 1995. --- 20 unchanged lines hidden (view full) --- 29 * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR 30 * IMPLIED WARRANTY. IN PARTICULAR, NONE OF THE AUTHORS MAKES ANY 31 * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE 32 * MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR 33 * PURPOSE. 34 */ 35 36#include <sys/cdefs.h> | 1/* $OpenBSD: if_pflog.c,v 1.26 2007/10/18 21:58:18 mpf Exp $ */ 2/* 3 * The authors of this code are John Ioannidis (ji@tla.org), 4 * Angelos D. Keromytis (kermit@csd.uch.gr) and 5 * Niels Provos (provos@physnet.uni-hamburg.de). 6 * 7 * This code was written by John Ioannidis for BSD/OS in Athens, Greece, 8 * in November 1995. --- 20 unchanged lines hidden (view full) --- 29 * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR 30 * IMPLIED WARRANTY. IN PARTICULAR, NONE OF THE AUTHORS MAKES ANY 31 * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE 32 * MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR 33 * PURPOSE. 34 */ 35 36#include <sys/cdefs.h> |
37__FBSDID("$FreeBSD: head/sys/netpfil/pf/if_pflog.c 241394 2012-10-10 08:36:38Z kevlo $"); | 37__FBSDID("$FreeBSD: head/sys/netpfil/pf/if_pflog.c 241610 2012-10-16 13:37:54Z glebius $"); |
38 39#include "opt_inet.h" 40#include "opt_inet6.h" 41#include "opt_bpf.h" 42#include "opt_pf.h" 43 44#include <sys/param.h> 45#include <sys/kernel.h> --- 37 unchanged lines hidden (view full) --- 83 84static int pflogoutput(struct ifnet *, struct mbuf *, struct sockaddr *, 85 struct route *); 86static void pflogattach(int); 87static int pflogioctl(struct ifnet *, u_long, caddr_t); 88static void pflogstart(struct ifnet *); 89static int pflog_clone_create(struct if_clone *, int, caddr_t); 90static void pflog_clone_destroy(struct ifnet *); | 38 39#include "opt_inet.h" 40#include "opt_inet6.h" 41#include "opt_bpf.h" 42#include "opt_pf.h" 43 44#include <sys/param.h> 45#include <sys/kernel.h> --- 37 unchanged lines hidden (view full) --- 83 84static int pflogoutput(struct ifnet *, struct mbuf *, struct sockaddr *, 85 struct route *); 86static void pflogattach(int); 87static int pflogioctl(struct ifnet *, u_long, caddr_t); 88static void pflogstart(struct ifnet *); 89static int pflog_clone_create(struct if_clone *, int, caddr_t); 90static void pflog_clone_destroy(struct ifnet *); |
91static struct if_clone *pflog_cloner; |
|
91 | 92 |
92IFC_SIMPLE_DECLARE(pflog, 1); | 93static const char pflogname[] = "pflog"; |
93 94struct ifnet *pflogifs[PFLOGIFS_MAX]; /* for fast access */ 95 96static void 97pflogattach(int npflog) 98{ 99 int i; 100 for (i = 0; i < PFLOGIFS_MAX; i++) 101 pflogifs[i] = NULL; | 94 95struct ifnet *pflogifs[PFLOGIFS_MAX]; /* for fast access */ 96 97static void 98pflogattach(int npflog) 99{ 100 int i; 101 for (i = 0; i < PFLOGIFS_MAX; i++) 102 pflogifs[i] = NULL; |
102 if_clone_attach(&pflog_cloner); | 103 pflog_cloner = if_clone_simple(pflogname, pflog_clone_create, 104 pflog_clone_destroy, 1); |
103} 104 105static int 106pflog_clone_create(struct if_clone *ifc, int unit, caddr_t param) 107{ 108 struct ifnet *ifp; 109 110 if (unit >= PFLOGIFS_MAX) 111 return (EINVAL); 112 113 ifp = if_alloc(IFT_PFLOG); 114 if (ifp == NULL) { 115 return (ENOSPC); 116 } | 105} 106 107static int 108pflog_clone_create(struct if_clone *ifc, int unit, caddr_t param) 109{ 110 struct ifnet *ifp; 111 112 if (unit >= PFLOGIFS_MAX) 113 return (EINVAL); 114 115 ifp = if_alloc(IFT_PFLOG); 116 if (ifp == NULL) { 117 return (ENOSPC); 118 } |
117 if_initname(ifp, ifc->ifc_name, unit); | 119 if_initname(ifp, pflogname, unit); |
118 ifp->if_mtu = PFLOGMTU; 119 ifp->if_ioctl = pflogioctl; 120 ifp->if_output = pflogoutput; 121 ifp->if_start = pflogstart; 122 ifp->if_snd.ifq_maxlen = ifqmaxlen; 123 ifp->if_hdrlen = PFLOG_HDRLEN; 124 if_attach(ifp); 125 --- 140 unchanged lines hidden (view full) --- 266 PF_RULES_WLOCK(); 267 pflog_packet_ptr = pflog_packet; 268 PF_RULES_WUNLOCK(); 269 break; 270 case MOD_UNLOAD: 271 PF_RULES_WLOCK(); 272 pflog_packet_ptr = NULL; 273 PF_RULES_WUNLOCK(); | 120 ifp->if_mtu = PFLOGMTU; 121 ifp->if_ioctl = pflogioctl; 122 ifp->if_output = pflogoutput; 123 ifp->if_start = pflogstart; 124 ifp->if_snd.ifq_maxlen = ifqmaxlen; 125 ifp->if_hdrlen = PFLOG_HDRLEN; 126 if_attach(ifp); 127 --- 140 unchanged lines hidden (view full) --- 268 PF_RULES_WLOCK(); 269 pflog_packet_ptr = pflog_packet; 270 PF_RULES_WUNLOCK(); 271 break; 272 case MOD_UNLOAD: 273 PF_RULES_WLOCK(); 274 pflog_packet_ptr = NULL; 275 PF_RULES_WUNLOCK(); |
274 if_clone_detach(&pflog_cloner); | 276 if_clone_detach(pflog_cloner); |
275 break; 276 default: 277 error = EINVAL; 278 break; 279 } 280 281 return error; 282} 283 | 277 break; 278 default: 279 error = EINVAL; 280 break; 281 } 282 283 return error; 284} 285 |
284static moduledata_t pflog_mod = { "pflog", pflog_modevent, 0 }; | 286static moduledata_t pflog_mod = { pflogname, pflog_modevent, 0 }; |
285 286#define PFLOG_MODVER 1 287 288DECLARE_MODULE(pflog, pflog_mod, SI_SUB_PSEUDO, SI_ORDER_ANY); 289MODULE_VERSION(pflog, PFLOG_MODVER); 290MODULE_DEPEND(pflog, pf, PF_MODVER, PF_MODVER, PF_MODVER); | 287 288#define PFLOG_MODVER 1 289 290DECLARE_MODULE(pflog, pflog_mod, SI_SUB_PSEUDO, SI_ORDER_ANY); 291MODULE_VERSION(pflog, PFLOG_MODVER); 292MODULE_DEPEND(pflog, pf, PF_MODVER, PF_MODVER, PF_MODVER); |