xref: /freebsd/sys/netpfil/pf/pf_nl.h (revision 2cef62886dc7c33ca01f70ca712845da1e55b470)
1*2cef6288SAlexander V. Chernikov /*-
2*2cef6288SAlexander V. Chernikov  * SPDX-License-Identifier: BSD-2-Clause
3*2cef6288SAlexander V. Chernikov  *
4*2cef6288SAlexander V. Chernikov  * Copyright (c) 2023 Alexander V. Chernikov <melifaro@FreeBSD.org>
5*2cef6288SAlexander V. Chernikov  * Copyright (c) 2023 Rubicon Communications, LLC (Netgate)
6*2cef6288SAlexander V. Chernikov  *
7*2cef6288SAlexander V. Chernikov  * Redistribution and use in source and binary forms, with or without
8*2cef6288SAlexander V. Chernikov  * modification, are permitted provided that the following conditions
9*2cef6288SAlexander V. Chernikov  * are met:
10*2cef6288SAlexander V. Chernikov  * 1. Redistributions of source code must retain the above copyright
11*2cef6288SAlexander V. Chernikov  *    notice, this list of conditions and the following disclaimer.
12*2cef6288SAlexander V. Chernikov  * 2. Redistributions in binary form must reproduce the above copyright
13*2cef6288SAlexander V. Chernikov  *    notice, this list of conditions and the following disclaimer in the
14*2cef6288SAlexander V. Chernikov  *    documentation and/or other materials provided with the distribution.
15*2cef6288SAlexander V. Chernikov  *
16*2cef6288SAlexander V. Chernikov  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17*2cef6288SAlexander V. Chernikov  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18*2cef6288SAlexander V. Chernikov  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19*2cef6288SAlexander V. Chernikov  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20*2cef6288SAlexander V. Chernikov  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21*2cef6288SAlexander V. Chernikov  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22*2cef6288SAlexander V. Chernikov  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23*2cef6288SAlexander V. Chernikov  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24*2cef6288SAlexander V. Chernikov  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25*2cef6288SAlexander V. Chernikov  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26*2cef6288SAlexander V. Chernikov  * SUCH DAMAGE.
27*2cef6288SAlexander V. Chernikov  *
28*2cef6288SAlexander V. Chernikov  */
29*2cef6288SAlexander V. Chernikov 
30*2cef6288SAlexander V. Chernikov #ifndef _NETPFIL_PF_PF_NL_H_
31*2cef6288SAlexander V. Chernikov #define _NETPFIL_PF_PF_NL_H_
32*2cef6288SAlexander V. Chernikov 
33*2cef6288SAlexander V. Chernikov /* Genetlink family */
34*2cef6288SAlexander V. Chernikov #define PFNL_FAMILY_NAME	"pfctl"
35*2cef6288SAlexander V. Chernikov 
36*2cef6288SAlexander V. Chernikov /* available commands */
37*2cef6288SAlexander V. Chernikov enum {
38*2cef6288SAlexander V. Chernikov 	PFNL_CMD_UNSPEC = 0,
39*2cef6288SAlexander V. Chernikov 	PFNL_CMD_GETSTATES = 1,
40*2cef6288SAlexander V. Chernikov 	__PFNL_CMD_MAX,
41*2cef6288SAlexander V. Chernikov };
42*2cef6288SAlexander V. Chernikov #define PFNL_CMD_MAX (__PFNL_CMD_MAX -1)
43*2cef6288SAlexander V. Chernikov 
44*2cef6288SAlexander V. Chernikov enum pfstate_key_type_t {
45*2cef6288SAlexander V. Chernikov 	PF_STK_UNSPEC,
46*2cef6288SAlexander V. Chernikov 	PF_STK_ADDR0		= 1, /* ip */
47*2cef6288SAlexander V. Chernikov 	PF_STK_ADDR1		= 2, /* ip */
48*2cef6288SAlexander V. Chernikov 	PF_STK_PORT0		= 3, /* u16 */
49*2cef6288SAlexander V. Chernikov 	PF_STK_PORT1		= 4, /* u16 */
50*2cef6288SAlexander V. Chernikov };
51*2cef6288SAlexander V. Chernikov 
52*2cef6288SAlexander V. Chernikov enum pfstate_peer_type_t {
53*2cef6288SAlexander V. Chernikov 	PF_STP_UNSPEC,
54*2cef6288SAlexander V. Chernikov 	PF_STP_PFSS_FLAGS	= 1, /* u16 */
55*2cef6288SAlexander V. Chernikov 	PF_STP_PFSS_TTL		= 2, /* u8 */
56*2cef6288SAlexander V. Chernikov 	PF_STP_SCRUB_FLAG	= 3, /* u8 */
57*2cef6288SAlexander V. Chernikov 	PF_STP_PFSS_TS_MOD	= 4, /* u32 */
58*2cef6288SAlexander V. Chernikov 	PF_STP_SEQLO		= 5, /* u32 */
59*2cef6288SAlexander V. Chernikov 	PF_STP_SEQHI		= 6, /* u32 */
60*2cef6288SAlexander V. Chernikov 	PF_STP_SEQDIFF		= 7, /* u32 */
61*2cef6288SAlexander V. Chernikov 	PF_STP_MAX_WIN		= 8, /* u16 */
62*2cef6288SAlexander V. Chernikov 	PF_STP_MSS		= 9, /* u16 */
63*2cef6288SAlexander V. Chernikov 	PF_STP_STATE		= 10, /* u8 */
64*2cef6288SAlexander V. Chernikov 	PF_STP_WSCALE		= 11, /* u8 */
65*2cef6288SAlexander V. Chernikov };
66*2cef6288SAlexander V. Chernikov 
67*2cef6288SAlexander V. Chernikov enum pfstate_type_t {
68*2cef6288SAlexander V. Chernikov 	PF_ST_UNSPEC,
69*2cef6288SAlexander V. Chernikov 	PF_ST_ID		= 1, /* u32, state id */
70*2cef6288SAlexander V. Chernikov 	PF_ST_CREATORID		= 2, /* u32, */
71*2cef6288SAlexander V. Chernikov 	PF_ST_IFNAME		= 3, /* string */
72*2cef6288SAlexander V. Chernikov 	PF_ST_ORIG_IFNAME	= 4, /* string */
73*2cef6288SAlexander V. Chernikov 	PF_ST_KEY_WIRE		= 5, /* nested, pfstate_key_type_t */
74*2cef6288SAlexander V. Chernikov 	PF_ST_KEY_STACK		= 6, /* nested, pfstate_key_type_t */
75*2cef6288SAlexander V. Chernikov 	PF_ST_PEER_SRC		= 7, /* nested, pfstate_peer_type_t*/
76*2cef6288SAlexander V. Chernikov 	PF_ST_PEER_DST		= 8, /* nested, pfstate_peer_type_t */
77*2cef6288SAlexander V. Chernikov 	PF_ST_RT_ADDR		= 9, /* ip */
78*2cef6288SAlexander V. Chernikov 	PF_ST_RULE		= 10, /* u32 */
79*2cef6288SAlexander V. Chernikov 	PF_ST_ANCHOR		= 11, /* u32 */
80*2cef6288SAlexander V. Chernikov 	PF_ST_NAT_RULE		= 12, /* u32 */
81*2cef6288SAlexander V. Chernikov 	PF_ST_CREATION		= 13, /* u32 */
82*2cef6288SAlexander V. Chernikov 	PF_ST_EXPIRE		= 14, /* u32 */
83*2cef6288SAlexander V. Chernikov 	PF_ST_PACKETS0		= 15, /* u64 */
84*2cef6288SAlexander V. Chernikov 	PF_ST_PACKETS1		= 16, /* u64 */
85*2cef6288SAlexander V. Chernikov 	PF_ST_BYTES0		= 17, /* u64 */
86*2cef6288SAlexander V. Chernikov 	PF_ST_BYTES1		= 18, /* u64 */
87*2cef6288SAlexander V. Chernikov 	PF_ST_AF		= 19, /* u8 */
88*2cef6288SAlexander V. Chernikov 	PF_ST_PROTO		= 21, /* u8 */
89*2cef6288SAlexander V. Chernikov 	PF_ST_DIRECTION		= 22, /* u8 */
90*2cef6288SAlexander V. Chernikov 	PF_ST_LOG		= 23, /* u8 */
91*2cef6288SAlexander V. Chernikov 	PF_ST_TIMEOUT		= 24, /* u8 */
92*2cef6288SAlexander V. Chernikov 	PF_ST_STATE_FLAGS	= 25, /* u8 */
93*2cef6288SAlexander V. Chernikov 	PF_ST_SYNC_FLAGS	= 26, /* u8 */
94*2cef6288SAlexander V. Chernikov 	PF_ST_UPDATES		= 27, /* u8 */
95*2cef6288SAlexander V. Chernikov 	PF_ST_VERSION		= 28, /* u64 */
96*2cef6288SAlexander V. Chernikov };
97*2cef6288SAlexander V. Chernikov 
98*2cef6288SAlexander V. Chernikov #ifdef _KERNEL
99*2cef6288SAlexander V. Chernikov 
100*2cef6288SAlexander V. Chernikov void	pf_nl_register(void);
101*2cef6288SAlexander V. Chernikov void	pf_nl_unregister(void);
102*2cef6288SAlexander V. Chernikov 
103*2cef6288SAlexander V. Chernikov #endif
104*2cef6288SAlexander V. Chernikov 
105*2cef6288SAlexander V. Chernikov #endif
106