RTEMS CPU Kit with SuperCore
4.11.3
Main Page
Related Pages
Modules
+
Data Structures
Data Structures
+
Data Fields
+
All
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
+
Variables
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
+
Files
File List
+
Globals
+
All
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
x
+
Functions
_
a
b
c
d
e
f
g
i
j
l
m
n
o
p
q
r
s
t
u
v
w
+
Variables
_
b
c
d
i
r
+
Typedefs
a
b
c
d
f
h
i
m
o
p
q
r
s
t
u
w
x
+
Enumerations
b
c
d
e
h
i
m
o
p
r
s
t
w
+
Enumerator
c
i
m
p
r
s
t
w
+
Macros
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
w
mnt
data0
chrisj
rtems
releases
rtems-release.git
4.11.3
ws-rtems
rtems-4.11.3
cpukit
libnetworking
net
bpf.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 1990, 1991, 1993
3
* The Regents of the University of California. All rights reserved.
4
*
5
* This code is derived from the Stanford/CMU enet packet filter,
6
* (net/enet.c) distributed as part of 4.3BSD, and code contributed
7
* to Berkeley by Steven McCanne and Van Jacobson both of Lawrence
8
* Berkeley Laboratory.
9
*
10
* Redistribution and use in source and binary forms, with or without
11
* modification, are permitted provided that the following conditions
12
* are met:
13
* 1. Redistributions of source code must retain the above copyright
14
* notice, this list of conditions and the following disclaimer.
15
* 2. Redistributions in binary form must reproduce the above copyright
16
* notice, this list of conditions and the following disclaimer in the
17
* documentation and/or other materials provided with the distribution.
18
* 3. All advertising materials mentioning features or use of this software
19
* must display the following acknowledgement:
20
* This product includes software developed by the University of
21
* California, Berkeley and its contributors.
22
* 4. Neither the name of the University nor the names of its contributors
23
* may be used to endorse or promote products derived from this software
24
* without specific prior written permission.
25
*
26
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
27
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
30
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36
* SUCH DAMAGE.
37
*
38
* @(#)bpf.h 8.1 (Berkeley) 6/10/93
39
* @(#)bpf.h 1.34 (LBL) 6/16/96
40
*/
41
42
#ifndef _NET_BPF_H_
43
#define _NET_BPF_H_
44
45
#include <sys/time.h>
/* struct timeval */
46
47
/* BSD style release date */
48
#define BPF_RELEASE 199606
49
50
typedef
int32_t bpf_int32;
51
typedef
u_int32_t bpf_u_int32;
52
53
/*
54
* Alignment macros. BPF_WORDALIGN rounds up to the next
55
* even multiple of BPF_ALIGNMENT.
56
*/
57
#define BPF_ALIGNMENT sizeof(bpf_int32)
58
#define BPF_WORDALIGN(x) (((x)+(BPF_ALIGNMENT-1))&~(BPF_ALIGNMENT-1))
59
60
#define BPF_MAXINSNS 512
61
#define BPF_MAXBUFSIZE 0x8000
62
#define BPF_MINBUFSIZE 32
63
64
/*
65
* Structure for BIOCSETF.
66
*/
67
struct
bpf_program
{
68
u_int bf_len;
69
struct
bpf_insn
*bf_insns;
70
};
71
72
/*
73
* Struct returned by BIOCGSTATS.
74
*/
75
struct
bpf_stat
{
76
u_int bs_recv;
/* number of packets received */
77
u_int bs_drop;
/* number of packets dropped */
78
};
79
80
/*
81
* Struct return by BIOCVERSION. This represents the version number of
82
* the filter language described by the instruction encodings below.
83
* bpf understands a program iff kernel_major == filter_major &&
84
* kernel_minor >= filter_minor, that is, if the value returned by the
85
* running kernel has the same major number and a minor number equal
86
* equal to or less than the filter being downloaded. Otherwise, the
87
* results are undefined, meaning an error may be returned or packets
88
* may be accepted haphazardly.
89
* It has nothing to do with the source code version.
90
*/
91
struct
bpf_version
{
92
u_short bv_major;
93
u_short bv_minor;
94
};
95
/* Current version number of filter architecture. */
96
#define BPF_MAJOR_VERSION 1
97
#define BPF_MINOR_VERSION 1
98
99
#define BIOCGBLEN _IOR('B',102, u_int)
100
#define BIOCSBLEN _IOWR('B',102, u_int)
101
#define BIOCSETF _IOW('B',103, struct bpf_program)
102
#define BIOCFLUSH _IO('B',104)
103
#define BIOCPROMISC _IO('B',105)
104
#define BIOCGDLT _IOR('B',106, u_int)
105
#define BIOCGETIF _IOR('B',107, struct ifreq)
106
#define BIOCSETIF _IOW('B',108, struct ifreq)
107
#define BIOCSRTIMEOUT _IOW('B',109, struct timeval)
108
#define BIOCGRTIMEOUT _IOR('B',110, struct timeval)
109
#define BIOCGSTATS _IOR('B',111, struct bpf_stat)
110
#define BIOCIMMEDIATE _IOW('B',112, u_int)
111
#define BIOCVERSION _IOR('B',113, struct bpf_version)
112
#define BIOCGRSIG _IOR('B',114, u_int)
113
#define BIOCSRSIG _IOW('B',115, u_int)
114
115
/*
116
* Structure prepended to each packet.
117
*/
118
struct
bpf_hdr
{
119
struct
timeval bh_tstamp;
/* time stamp */
120
bpf_u_int32 bh_caplen;
/* length of captured portion */
121
bpf_u_int32 bh_datalen;
/* original length of packet */
122
u_short bh_hdrlen;
/* length of bpf header (this struct
123
plus alignment padding) */
124
};
125
/*
126
* Because the structure above is not a multiple of 4 bytes, some compilers
127
* will insist on inserting padding; hence, sizeof(struct bpf_hdr) won't work.
128
* Only the kernel needs to know about it; applications use bh_hdrlen.
129
*/
130
#ifdef _KERNEL
131
#define SIZEOF_BPF_HDR 18
132
#endif
133
134
/*
135
* Data-link level type codes.
136
*/
137
#define DLT_NULL 0
/* no link-layer encapsulation */
138
#define DLT_EN10MB 1
/* Ethernet (10Mb) */
139
#define DLT_EN3MB 2
/* Experimental Ethernet (3Mb) */
140
#define DLT_AX25 3
/* Amateur Radio AX.25 */
141
#define DLT_PRONET 4
/* Proteon ProNET Token Ring */
142
#define DLT_CHAOS 5
/* Chaos */
143
#define DLT_IEEE802 6
/* IEEE 802 Networks */
144
#define DLT_ARCNET 7
/* ARCNET */
145
#define DLT_SLIP 8
/* Serial Line IP */
146
#define DLT_PPP 9
/* Point-to-point Protocol */
147
#define DLT_FDDI 10
/* FDDI */
148
#define DLT_ATM_RFC1483 11
/* LLC/SNAP encapsulated atm */
149
150
/*
151
* The instruction encodings.
152
*/
153
/* instruction classes */
154
#define BPF_CLASS(code) ((code) & 0x07)
155
#define BPF_LD 0x00
156
#define BPF_LDX 0x01
157
#define BPF_ST 0x02
158
#define BPF_STX 0x03
159
#define BPF_ALU 0x04
160
#define BPF_JMP 0x05
161
#define BPF_RET 0x06
162
#define BPF_MISC 0x07
163
164
/* ld/ldx fields */
165
#define BPF_SIZE(code) ((code) & 0x18)
166
#define BPF_W 0x00
167
#define BPF_H 0x08
168
#define BPF_B 0x10
169
#define BPF_MODE(code) ((code) & 0xe0)
170
#define BPF_IMM 0x00
171
#define BPF_ABS 0x20
172
#define BPF_IND 0x40
173
#define BPF_MEM 0x60
174
#define BPF_LEN 0x80
175
#define BPF_MSH 0xa0
176
177
/* alu/jmp fields */
178
#define BPF_OP(code) ((code) & 0xf0)
179
#define BPF_ADD 0x00
180
#define BPF_SUB 0x10
181
#define BPF_MUL 0x20
182
#define BPF_DIV 0x30
183
#define BPF_OR 0x40
184
#define BPF_AND 0x50
185
#define BPF_LSH 0x60
186
#define BPF_RSH 0x70
187
#define BPF_NEG 0x80
188
#define BPF_JA 0x00
189
#define BPF_JEQ 0x10
190
#define BPF_JGT 0x20
191
#define BPF_JGE 0x30
192
#define BPF_JSET 0x40
193
#define BPF_SRC(code) ((code) & 0x08)
194
#define BPF_K 0x00
195
#define BPF_X 0x08
196
197
/* ret - BPF_K and BPF_X also apply */
198
#define BPF_RVAL(code) ((code) & 0x18)
199
#define BPF_A 0x10
200
201
/* misc */
202
#define BPF_MISCOP(code) ((code) & 0xf8)
203
#define BPF_TAX 0x00
204
#define BPF_TXA 0x80
205
206
/*
207
* The instruction data structure.
208
*/
209
struct
bpf_insn
{
210
u_short
code
;
211
u_char jt;
212
u_char jf;
213
bpf_u_int32 k;
214
};
215
216
/*
217
* Macros for insn array initializers.
218
*/
219
#define BPF_STMT(code, k) { (u_short)(code), 0, 0, k }
220
#define BPF_JUMP(code, k, jt, jf) { (u_short)(code), jt, jf, k }
221
222
#ifdef _KERNEL
223
int
bpf_validate(
struct
bpf_insn
*,
int
);
224
void
bpf_tap(
struct
ifnet
*, u_char *, u_int);
225
void
bpf_mtap(
struct
ifnet
*,
struct
mbuf
*);
226
void
bpfattach(
struct
ifnet
*, u_int, u_int);
227
void
bpfilterattach(
int
);
228
u_int bpf_filter(
const
struct
bpf_insn
*, u_char *, u_int, u_int);
229
#endif
230
231
/*
232
* Number of scratch memory words (for BPF_LD|BPF_MEM and BPF_ST).
233
*/
234
#define BPF_MEMWORDS 16
235
236
#endif
/* _NET_BPF_H_ */
bpf_insn
Definition:
bpf.h:210
bpf_stat
Definition:
bpf.h:76
bpf_program
Definition:
bpf.h:68
ifnet
Definition:
if_var.h:99
mbuf
Definition:
mbuf.h:103
code
Definition:
inftrees.h:25
bpf_hdr
Definition:
bpf.h:119
bpf_version
Definition:
bpf.h:92
Generated by
1.8.13