xref: /aosp_15_r20/external/libpcap/pflog.h (revision 8b26181f966a6af5cf6981a6f474313de533bb28)
1*8b26181fSAndroid Build Coastguard Worker /*
2*8b26181fSAndroid Build Coastguard Worker  * Copyright (c) 1982, 1986, 1993
3*8b26181fSAndroid Build Coastguard Worker  *	The Regents of the University of California.  All rights reserved.
4*8b26181fSAndroid Build Coastguard Worker  *
5*8b26181fSAndroid Build Coastguard Worker  * Redistribution and use in source and binary forms, with or without
6*8b26181fSAndroid Build Coastguard Worker  * modification, are permitted provided that the following conditions
7*8b26181fSAndroid Build Coastguard Worker  * are met:
8*8b26181fSAndroid Build Coastguard Worker  * 1. Redistributions of source code must retain the above copyright
9*8b26181fSAndroid Build Coastguard Worker  *    notice, this list of conditions and the following disclaimer.
10*8b26181fSAndroid Build Coastguard Worker  * 2. Redistributions in binary form must reproduce the above copyright
11*8b26181fSAndroid Build Coastguard Worker  *    notice, this list of conditions and the following disclaimer in the
12*8b26181fSAndroid Build Coastguard Worker  *    documentation and/or other materials provided with the distribution.
13*8b26181fSAndroid Build Coastguard Worker  * 3. All advertising materials mentioning features or use of this software
14*8b26181fSAndroid Build Coastguard Worker  *    must display the following acknowledgement:
15*8b26181fSAndroid Build Coastguard Worker  *	This product includes software developed by the University of
16*8b26181fSAndroid Build Coastguard Worker  *	California, Berkeley and its contributors.
17*8b26181fSAndroid Build Coastguard Worker  * 4. Neither the name of the University nor the names of its contributors
18*8b26181fSAndroid Build Coastguard Worker  *    may be used to endorse or promote products derived from this software
19*8b26181fSAndroid Build Coastguard Worker  *    without specific prior written permission.
20*8b26181fSAndroid Build Coastguard Worker  *
21*8b26181fSAndroid Build Coastguard Worker  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22*8b26181fSAndroid Build Coastguard Worker  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23*8b26181fSAndroid Build Coastguard Worker  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24*8b26181fSAndroid Build Coastguard Worker  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25*8b26181fSAndroid Build Coastguard Worker  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26*8b26181fSAndroid Build Coastguard Worker  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27*8b26181fSAndroid Build Coastguard Worker  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28*8b26181fSAndroid Build Coastguard Worker  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29*8b26181fSAndroid Build Coastguard Worker  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30*8b26181fSAndroid Build Coastguard Worker  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31*8b26181fSAndroid Build Coastguard Worker  * SUCH DAMAGE.
32*8b26181fSAndroid Build Coastguard Worker  */
33*8b26181fSAndroid Build Coastguard Worker 
34*8b26181fSAndroid Build Coastguard Worker /*
35*8b26181fSAndroid Build Coastguard Worker  * pflog headers, at least as they exist now.
36*8b26181fSAndroid Build Coastguard Worker  */
37*8b26181fSAndroid Build Coastguard Worker #define PFLOG_IFNAMSIZ		16
38*8b26181fSAndroid Build Coastguard Worker #define PFLOG_RULESET_NAME_SIZE	16
39*8b26181fSAndroid Build Coastguard Worker 
40*8b26181fSAndroid Build Coastguard Worker /*
41*8b26181fSAndroid Build Coastguard Worker  * Direction values.
42*8b26181fSAndroid Build Coastguard Worker  */
43*8b26181fSAndroid Build Coastguard Worker #define PF_INOUT	0
44*8b26181fSAndroid Build Coastguard Worker #define PF_IN		1
45*8b26181fSAndroid Build Coastguard Worker #define PF_OUT		2
46*8b26181fSAndroid Build Coastguard Worker #if defined(__OpenBSD__)
47*8b26181fSAndroid Build Coastguard Worker #define PF_FWD		3
48*8b26181fSAndroid Build Coastguard Worker #endif
49*8b26181fSAndroid Build Coastguard Worker 
50*8b26181fSAndroid Build Coastguard Worker /*
51*8b26181fSAndroid Build Coastguard Worker  * Reason values.
52*8b26181fSAndroid Build Coastguard Worker  */
53*8b26181fSAndroid Build Coastguard Worker #define PFRES_MATCH	0
54*8b26181fSAndroid Build Coastguard Worker #define PFRES_BADOFF	1
55*8b26181fSAndroid Build Coastguard Worker #define PFRES_FRAG	2
56*8b26181fSAndroid Build Coastguard Worker #define PFRES_SHORT	3
57*8b26181fSAndroid Build Coastguard Worker #define PFRES_NORM	4
58*8b26181fSAndroid Build Coastguard Worker #define PFRES_MEMORY	5
59*8b26181fSAndroid Build Coastguard Worker #define PFRES_TS	6
60*8b26181fSAndroid Build Coastguard Worker #define PFRES_CONGEST	7
61*8b26181fSAndroid Build Coastguard Worker #define PFRES_IPOPTIONS 8
62*8b26181fSAndroid Build Coastguard Worker #define PFRES_PROTCKSUM 9
63*8b26181fSAndroid Build Coastguard Worker #define PFRES_BADSTATE	10
64*8b26181fSAndroid Build Coastguard Worker #define PFRES_STATEINS	11
65*8b26181fSAndroid Build Coastguard Worker #define PFRES_MAXSTATES	12
66*8b26181fSAndroid Build Coastguard Worker #define PFRES_SRCLIMIT	13
67*8b26181fSAndroid Build Coastguard Worker #define PFRES_SYNPROXY	14
68*8b26181fSAndroid Build Coastguard Worker #if defined(__FreeBSD__)
69*8b26181fSAndroid Build Coastguard Worker #define PFRES_MAPFAILED	15
70*8b26181fSAndroid Build Coastguard Worker #elif defined(__NetBSD__)
71*8b26181fSAndroid Build Coastguard Worker #define PFRES_STATELOCKED 15
72*8b26181fSAndroid Build Coastguard Worker #elif defined(__OpenBSD__)
73*8b26181fSAndroid Build Coastguard Worker #define PFRES_TRANSLATE	15
74*8b26181fSAndroid Build Coastguard Worker #define PFRES_NOROUTE	16
75*8b26181fSAndroid Build Coastguard Worker #elif defined(__APPLE__)
76*8b26181fSAndroid Build Coastguard Worker #define PFRES_DUMMYNET  15
77*8b26181fSAndroid Build Coastguard Worker #endif
78*8b26181fSAndroid Build Coastguard Worker 
79*8b26181fSAndroid Build Coastguard Worker /*
80*8b26181fSAndroid Build Coastguard Worker  * Action values.
81*8b26181fSAndroid Build Coastguard Worker  */
82*8b26181fSAndroid Build Coastguard Worker #define PF_PASS			0
83*8b26181fSAndroid Build Coastguard Worker #define PF_DROP			1
84*8b26181fSAndroid Build Coastguard Worker #define PF_SCRUB		2
85*8b26181fSAndroid Build Coastguard Worker #define PF_NOSCRUB		3
86*8b26181fSAndroid Build Coastguard Worker #define PF_NAT			4
87*8b26181fSAndroid Build Coastguard Worker #define PF_NONAT		5
88*8b26181fSAndroid Build Coastguard Worker #define PF_BINAT		6
89*8b26181fSAndroid Build Coastguard Worker #define PF_NOBINAT		7
90*8b26181fSAndroid Build Coastguard Worker #define PF_RDR			8
91*8b26181fSAndroid Build Coastguard Worker #define PF_NORDR		9
92*8b26181fSAndroid Build Coastguard Worker #define PF_SYNPROXY_DROP	10
93*8b26181fSAndroid Build Coastguard Worker #if defined(__FreeBSD__)
94*8b26181fSAndroid Build Coastguard Worker #define PF_DEFER		11
95*8b26181fSAndroid Build Coastguard Worker #elif defined(__OpenBSD__)
96*8b26181fSAndroid Build Coastguard Worker #define PF_DEFER		11
97*8b26181fSAndroid Build Coastguard Worker #define PF_MATCH		12
98*8b26181fSAndroid Build Coastguard Worker #define PF_DIVERT		13
99*8b26181fSAndroid Build Coastguard Worker #define PF_RT			14
100*8b26181fSAndroid Build Coastguard Worker #define PF_AFRT			15
101*8b26181fSAndroid Build Coastguard Worker #elif defined(__APPLE__)
102*8b26181fSAndroid Build Coastguard Worker #define PF_DUMMYNET		11
103*8b26181fSAndroid Build Coastguard Worker #define PF_NODUMMYNET		12
104*8b26181fSAndroid Build Coastguard Worker #define PF_NAT64		13
105*8b26181fSAndroid Build Coastguard Worker #define PF_NONAT64		14
106*8b26181fSAndroid Build Coastguard Worker #endif
107*8b26181fSAndroid Build Coastguard Worker 
108*8b26181fSAndroid Build Coastguard Worker struct pf_addr {
109*8b26181fSAndroid Build Coastguard Worker 	union {
110*8b26181fSAndroid Build Coastguard Worker 		struct in_addr		v4;
111*8b26181fSAndroid Build Coastguard Worker 		struct in6_addr		v6;
112*8b26181fSAndroid Build Coastguard Worker 		uint8_t			addr8[16];
113*8b26181fSAndroid Build Coastguard Worker 		uint16_t		addr16[8];
114*8b26181fSAndroid Build Coastguard Worker 		uint32_t		addr32[4];
115*8b26181fSAndroid Build Coastguard Worker 	} pfa;		    /* 128-bit address */
116*8b26181fSAndroid Build Coastguard Worker #define v4	pfa.v4
117*8b26181fSAndroid Build Coastguard Worker #define v6	pfa.v6
118*8b26181fSAndroid Build Coastguard Worker #define addr8	pfa.addr8
119*8b26181fSAndroid Build Coastguard Worker #define addr16	pfa.addr16
120*8b26181fSAndroid Build Coastguard Worker #define addr32	pfa.addr32
121*8b26181fSAndroid Build Coastguard Worker };
122*8b26181fSAndroid Build Coastguard Worker 
123*8b26181fSAndroid Build Coastguard Worker struct pfloghdr {
124*8b26181fSAndroid Build Coastguard Worker 	uint8_t		length;
125*8b26181fSAndroid Build Coastguard Worker 	uint8_t		af;
126*8b26181fSAndroid Build Coastguard Worker 	uint8_t		action;
127*8b26181fSAndroid Build Coastguard Worker 	uint8_t		reason;
128*8b26181fSAndroid Build Coastguard Worker 	char		ifname[PFLOG_IFNAMSIZ];
129*8b26181fSAndroid Build Coastguard Worker 	char		ruleset[PFLOG_RULESET_NAME_SIZE];
130*8b26181fSAndroid Build Coastguard Worker 	uint32_t	rulenr;
131*8b26181fSAndroid Build Coastguard Worker 	uint32_t	subrulenr;
132*8b26181fSAndroid Build Coastguard Worker 	uint32_t	uid;
133*8b26181fSAndroid Build Coastguard Worker 	int32_t		pid;
134*8b26181fSAndroid Build Coastguard Worker 	uint32_t	rule_uid;
135*8b26181fSAndroid Build Coastguard Worker 	int32_t		rule_pid;
136*8b26181fSAndroid Build Coastguard Worker 	uint8_t		dir;
137*8b26181fSAndroid Build Coastguard Worker #if defined(__OpenBSD__)
138*8b26181fSAndroid Build Coastguard Worker 	uint8_t		rewritten;
139*8b26181fSAndroid Build Coastguard Worker 	uint8_t		naf;
140*8b26181fSAndroid Build Coastguard Worker 	uint8_t		pad[1];
141*8b26181fSAndroid Build Coastguard Worker #else
142*8b26181fSAndroid Build Coastguard Worker 	uint8_t		pad[3];
143*8b26181fSAndroid Build Coastguard Worker #endif
144*8b26181fSAndroid Build Coastguard Worker #if defined(__FreeBSD__)
145*8b26181fSAndroid Build Coastguard Worker 	uint32_t	ridentifier;
146*8b26181fSAndroid Build Coastguard Worker 	uint8_t		reserve;
147*8b26181fSAndroid Build Coastguard Worker 	uint8_t		pad2[3];
148*8b26181fSAndroid Build Coastguard Worker #elif defined(__OpenBSD__)
149*8b26181fSAndroid Build Coastguard Worker 	struct pf_addr	saddr;
150*8b26181fSAndroid Build Coastguard Worker 	struct pf_addr	daddr;
151*8b26181fSAndroid Build Coastguard Worker 	uint16_t	sport;
152*8b26181fSAndroid Build Coastguard Worker 	uint16_t	dport;
153*8b26181fSAndroid Build Coastguard Worker #endif
154*8b26181fSAndroid Build Coastguard Worker };
155*8b26181fSAndroid Build Coastguard Worker 
156*8b26181fSAndroid Build Coastguard Worker 
157*8b26181fSAndroid Build Coastguard Worker 
158