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