xref: /dragonfly/sys/net/pf/if_pflog.h (revision a6ccd68b)
170224baaSJan Lentfer /* $OpenBSD: if_pflog.h,v 1.14 2006/10/25 11:27:01 henning Exp $ */
202742ec6SJoerg Sonnenberger /*
302742ec6SJoerg Sonnenberger  * Copyright (c) 2004 The DragonFly Project.  All rights reserved.
402742ec6SJoerg Sonnenberger  *
502742ec6SJoerg Sonnenberger  * Copyright 2001 Niels Provos <provos@citi.umich.edu>
602742ec6SJoerg Sonnenberger  * All rights reserved.
702742ec6SJoerg Sonnenberger  *
802742ec6SJoerg Sonnenberger  * Redistribution and use in source and binary forms, with or without
902742ec6SJoerg Sonnenberger  * modification, are permitted provided that the following conditions
1002742ec6SJoerg Sonnenberger  * are met:
1102742ec6SJoerg Sonnenberger  * 1. Redistributions of source code must retain the above copyright
1202742ec6SJoerg Sonnenberger  *    notice, this list of conditions and the following disclaimer.
1302742ec6SJoerg Sonnenberger  * 2. Redistributions in binary form must reproduce the above copyright
1402742ec6SJoerg Sonnenberger  *    notice, this list of conditions and the following disclaimer in the
1502742ec6SJoerg Sonnenberger  *    documentation and/or other materials provided with the distribution.
1602742ec6SJoerg Sonnenberger  *
1702742ec6SJoerg Sonnenberger  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1802742ec6SJoerg Sonnenberger  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1902742ec6SJoerg Sonnenberger  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
2002742ec6SJoerg Sonnenberger  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
2102742ec6SJoerg Sonnenberger  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2202742ec6SJoerg Sonnenberger  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2302742ec6SJoerg Sonnenberger  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2402742ec6SJoerg Sonnenberger  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2502742ec6SJoerg Sonnenberger  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
2602742ec6SJoerg Sonnenberger  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2702742ec6SJoerg Sonnenberger  */
2802742ec6SJoerg Sonnenberger 
2902742ec6SJoerg Sonnenberger #ifndef _NET_IF_PFLOG_H_
3002742ec6SJoerg Sonnenberger #define _NET_IF_PFLOG_H_
3102742ec6SJoerg Sonnenberger 
3270224baaSJan Lentfer #define	PFLOGIFS_MAX	16
3370224baaSJan Lentfer 
34*1afbcbacSMatthew Dillon #if defined(_KERNEL) || defined(_KERNEL_STRUCTURES)
35*1afbcbacSMatthew Dillon 
3602742ec6SJoerg Sonnenberger struct pflog_softc {
3702742ec6SJoerg Sonnenberger 	struct ifnet		sc_if;  /* the interface */
3870224baaSJan Lentfer 	int			sc_unit;
3970224baaSJan Lentfer 	LIST_ENTRY(pflog_softc) sc_list;
4002742ec6SJoerg Sonnenberger };
4102742ec6SJoerg Sonnenberger 
42*1afbcbacSMatthew Dillon #endif
43*1afbcbacSMatthew Dillon 
4470224baaSJan Lentfer #define PFLOG_RULESET_NAME_SIZE	16
4502742ec6SJoerg Sonnenberger 
4602742ec6SJoerg Sonnenberger struct pfloghdr {
4702742ec6SJoerg Sonnenberger 	u_int8_t	length;
4802742ec6SJoerg Sonnenberger 	sa_family_t	af;
4902742ec6SJoerg Sonnenberger 	u_int8_t	action;
5002742ec6SJoerg Sonnenberger 	u_int8_t	reason;
5102742ec6SJoerg Sonnenberger 	char		ifname[IFNAMSIZ];
5270224baaSJan Lentfer 	char		ruleset[PFLOG_RULESET_NAME_SIZE];
5302742ec6SJoerg Sonnenberger 	u_int32_t	rulenr;
5402742ec6SJoerg Sonnenberger 	u_int32_t	subrulenr;
5570224baaSJan Lentfer 	uid_t		uid;
5670224baaSJan Lentfer 	pid_t		pid;
5770224baaSJan Lentfer 	uid_t		rule_uid;
5870224baaSJan Lentfer 	pid_t		rule_pid;
5902742ec6SJoerg Sonnenberger 	u_int8_t	dir;
6002742ec6SJoerg Sonnenberger 	u_int8_t	pad[3];
6102742ec6SJoerg Sonnenberger };
6202742ec6SJoerg Sonnenberger 
6302742ec6SJoerg Sonnenberger #define PFLOG_HDRLEN		sizeof(struct pfloghdr)
6402742ec6SJoerg Sonnenberger /* minus pad, also used as a signature */
6502742ec6SJoerg Sonnenberger #define PFLOG_REAL_HDRLEN	offsetof(struct pfloghdr, pad)
6602742ec6SJoerg Sonnenberger 
6702742ec6SJoerg Sonnenberger #ifdef _KERNEL
6802742ec6SJoerg Sonnenberger 
6902742ec6SJoerg Sonnenberger #include "use_pflog.h"
7002742ec6SJoerg Sonnenberger 
7102742ec6SJoerg Sonnenberger #if NPFLOG > 0
7270224baaSJan Lentfer #define	PFLOG_PACKET(i,x,a,b,c,d,e,f,g,h) pflog_packet(i,a,b,c,d,e,f,g,h)
7302742ec6SJoerg Sonnenberger #else
7470224baaSJan Lentfer #define	PFLOG_PACKET(i,x,a,b,c,d,e,f,g,h) ((void)0)
7502742ec6SJoerg Sonnenberger #endif /* NPFLOG > 0 */
7602742ec6SJoerg Sonnenberger #endif /* _KERNEL */
7702742ec6SJoerg Sonnenberger #endif /* _NET_IF_PFLOG_H_ */
78