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