Coverage Report

Created: 2024-05-15 07:09

/src/libpcap/pflog.h
Line
Count
Source (jump to first uncovered line)
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
/*
35
 * pflog headers, at least as they exist now.
36
 */
37
#define PFLOG_IFNAMSIZ    16
38
#define PFLOG_RULESET_NAME_SIZE 16
39
40
/*
41
 * Direction values.
42
 */
43
#define PF_INOUT  0
44
0
#define PF_IN   1
45
0
#define PF_OUT    2
46
#if defined(__OpenBSD__)
47
#define PF_FWD    3
48
#endif
49
50
/*
51
 * Reason values.
52
 */
53
#define PFRES_MATCH 0
54
#define PFRES_BADOFF  1
55
#define PFRES_FRAG  2
56
#define PFRES_SHORT 3
57
#define PFRES_NORM  4
58
#define PFRES_MEMORY  5
59
#define PFRES_TS  6
60
#define PFRES_CONGEST 7
61
#define PFRES_IPOPTIONS 8
62
#define PFRES_PROTCKSUM 9
63
#define PFRES_BADSTATE  10
64
#define PFRES_STATEINS  11
65
#define PFRES_MAXSTATES 12
66
#define PFRES_SRCLIMIT  13
67
#define PFRES_SYNPROXY  14
68
#if defined(__FreeBSD__)
69
#define PFRES_MAPFAILED 15
70
#elif defined(__NetBSD__)
71
#define PFRES_STATELOCKED 15
72
#elif defined(__OpenBSD__)
73
#define PFRES_TRANSLATE 15
74
#define PFRES_NOROUTE 16
75
#elif defined(__APPLE__)
76
#define PFRES_DUMMYNET  15
77
#endif
78
79
/*
80
 * Action values.
81
 */
82
#define PF_PASS     0
83
#define PF_DROP     1
84
#define PF_SCRUB    2
85
#define PF_NOSCRUB    3
86
#define PF_NAT      4
87
#define PF_NONAT    5
88
#define PF_BINAT    6
89
#define PF_NOBINAT    7
90
#define PF_RDR      8
91
#define PF_NORDR    9
92
#define PF_SYNPROXY_DROP  10
93
#if defined(__FreeBSD__)
94
#define PF_DEFER    11
95
#elif defined(__OpenBSD__)
96
#define PF_DEFER    11
97
#define PF_MATCH    12
98
#define PF_DIVERT   13
99
#define PF_RT     14
100
#define PF_AFRT     15
101
#elif defined(__APPLE__)
102
#define PF_DUMMYNET   11
103
#define PF_NODUMMYNET   12
104
#define PF_NAT64    13
105
#define PF_NONAT64    14
106
#endif
107
108
struct pf_addr {
109
  union {
110
    struct in_addr    v4;
111
    struct in6_addr   v6;
112
    uint8_t     addr8[16];
113
    uint16_t    addr16[8];
114
    uint32_t    addr32[4];
115
  } pfa;        /* 128-bit address */
116
#define v4  pfa.v4
117
#define v6  pfa.v6
118
#define addr8 pfa.addr8
119
#define addr16  pfa.addr16
120
#define addr32  pfa.addr32
121
};
122
123
struct pfloghdr {
124
  uint8_t   length;
125
  uint8_t   af;
126
  uint8_t   action;
127
  uint8_t   reason;
128
  char    ifname[PFLOG_IFNAMSIZ];
129
  char    ruleset[PFLOG_RULESET_NAME_SIZE];
130
  uint32_t  rulenr;
131
  uint32_t  subrulenr;
132
  uint32_t  uid;
133
  int32_t   pid;
134
  uint32_t  rule_uid;
135
  int32_t   rule_pid;
136
  uint8_t   dir;
137
#if defined(__OpenBSD__)
138
  uint8_t   rewritten;
139
  uint8_t   naf;
140
  uint8_t   pad[1];
141
#else
142
  uint8_t   pad[3];
143
#endif
144
#if defined(__FreeBSD__)
145
  uint32_t  ridentifier;
146
  uint8_t   reserve;
147
  uint8_t   pad2[3];
148
#elif defined(__OpenBSD__)
149
  struct pf_addr  saddr;
150
  struct pf_addr  daddr;
151
  uint16_t  sport;
152
  uint16_t  dport;
153
#endif
154
};
155
156
157