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