2
#define MAX_LINE_SIZE 250
3
#define MAX_TYPE_SIZE 25
4
#define MAX_LIST_ENTRIES 65535
5
#define MAX_HOST_ENTRIES 4000000
8
#define IPV6_MULTICAST 2
11
#define UCAST_V4MAPPED 1
12
#define UCAST_V4COMPAT 2
13
#define UCAST_LINKLOCAL 4
14
#define UCAST_SITELOCAL 8
15
#define UCAST_UNIQUELOCAL 16
17
#define UCAST_TEREDO 64
18
#define UCAST_GLOBAL 128
19
#define UCAST_LOOPBACK 256
21
#define MCAST_PERMANENT 512
22
#define MCAST_NONPERMANENT 1024
23
#define MCAST_INVALID 2048
24
#define MCAST_UNICASTBASED 4096
25
#define MCAST_EMBEDRP 8192
26
#define MCAST_UNKNOWN 16384
28
#define SCOPE_RESERVED 1
29
#define SCOPE_INTERFACE 2
33
#define SCOPE_ORGANIZATION 32
34
#define SCOPE_GLOBAL 64
35
#define SCOPE_UNASSIGNED 128
36
#define SCOPE_UNSPECIFIED 256
38
#define IID_MACDERIVED 1
40
#define IID_EMBEDDEDIPV4 4
41
#define IID_EMBEDDEDPORT 8
42
#define IID_EMBEDDEDPORTREV 16
43
#define IID_LOWBYTE 32
44
#define IID_EMBEDDEDIPV4_64 64
45
#define IID_PATTERN_BYTES 128
46
#define IID_RANDOM 256
47
#define IID_TEREDO_RFC4380 512
48
#define IID_TEREDO_RFC5991 1024
49
#define IID_TEREDO_UNKNOWN 2048
50
#define IID_UNSPECIFIED 4096
53
/* Filter Constants */
64
unsigned int iidsubtype;
70
struct host_entry *next;
71
struct host_entry *prev;
75
struct host_entry **host; /* Double-linked list of host entries */
76
unsigned int nhosts; /* Current number of host entries */
77
unsigned int maxhosts; /* Maximum number of host entries */
78
u_int16_t key_l; /* Low-order word of the hash key */
79
u_int16_t key_h; /* High-order word of the hash key */
85
unsigned int ipv6unspecified;
86
unsigned int ipv6multicast;
87
unsigned int ipv6unicast;
89
unsigned int ucastloopback;
90
unsigned int ucastv4mapped;
91
unsigned int ucastv4compat;
92
unsigned int ucastlinklocal;
93
unsigned int ucastsitelocal;
94
unsigned int ucastuniquelocal;
95
unsigned int ucast6to4;
96
unsigned int ucastteredo;
97
unsigned int ucastglobal;
99
unsigned int mcastpermanent;
100
unsigned int mcastnonpermanent;
101
unsigned int mcastinvalid;
102
unsigned int mcastunicastbased;
103
unsigned int mcastembedrp;
104
unsigned int mcastunknown;
106
unsigned int iidmacderived;
107
unsigned int iidisatap;
108
unsigned int iidmbeddedipv4;
109
unsigned int iidembeddedport;
110
unsigned int iidembeddedportrev;
111
unsigned int iidlowbyte;
112
unsigned int iidembeddedipv4_64;
113
unsigned int iidpatternbytes;
114
unsigned int iidrandom;
116
unsigned int mscopereserved;
117
unsigned int mscopeinterface;
118
unsigned int mnscopelink;
119
unsigned int mscopeadmin;
120
unsigned int mscopesite;
121
unsigned int mscopeorganization;
122
unsigned int mscopeglobal;
123
unsigned int mscopeunassigned;
124
unsigned int mscopeunspecified;
127
#ifndef IN6_IS_ADDR_UNIQUELOCAL
128
#define IN6_IS_ADDR_UNIQUELOCAL(a) \
129
((((uint32_t *) (a))[0] & htonl (0xfe000000)) \
130
== htonl (0xfc000000))
133
#ifndef IN6_IS_ADDR_6TO4
134
#define IN6_IS_ADDR_6TO4(a) \
135
((((uint32_t *) (a))[0] & htonl (0xffff0000)) \
136
== htonl (0x20020000))
139
#ifndef IN6_IS_ADDR_TEREDO
140
#define IN6_IS_ADDR_TEREDO(a) \
141
(((uint32_t *) (a))[0] == htonl (0x20020000))
144
#ifndef IN6_IS_ADDR_TEREDO_LEGACY
145
#define IN6_IS_ADDR_TEREDO_LEGACY(a) \
146
(((uint32_t *) (a))[0] == htonl (0x3ffe831f))
149
#if defined (__FreeBSD__) || defined(__NetBSD__) || defined (__OpenBSD__) || defined(__APPLE__)
151
#define s6_addr16 __u6_addr.__u6_addr16
155
#define s6_addr __u6_addr.__u6_addr8
159
#define s6_addr8 __u6_addr.__u6_addr8
163
#define s6_addr32 __u6_addr.__u6_addr32
165
#elif defined __linux__
167
#define s6_addr16 __in6_u.__u6_addr16
171
#define s6_addr32 __in6_u.__u6_addr32
176
/* This causes Linux to use the BSD definition of the TCP and UDP header fields */