xref: /minix3/minix/include/minix/bpf.h (revision ef8d499e2d2af900e9b2ab297171d7b088652482)
1 #ifndef _MINIX_BPF_H
2 #define _MINIX_BPF_H
3 
4 #include <net/bpf.h>
5 
6 /*
7  * MINIX3-specific extensions to the NetBSD Berkeley Packet Filter header.
8  * These extensions are necessary because NetBSD BPF uses a few ioctl(2)
9  * structure formats that contain pointers--something that MINIX3 has to avoid,
10  * due to its memory granting mechanisms.  Thus, those ioctl(2) calls have to
11  * be converted from NetBSD to MINIX3 format.  We currently do that in libc.
12  * This header specifies the numbers and formats for the MINIX3 versions.
13  *
14  * See <minix/if.h> for details on how things work here.
15  */
16 
17 /* BIOCSETF: set BPF filter program. */
18 /*
19  * This ioctl is an exception, as it is write-only, so we do not need the
20  * original structure.  Also, the size of this structure is currently slightly
21  * over 4KB, which makes it too big for a regular ioctl call.  Thus, we have to
22  * use a big ioctl call.  Note that future changes of BPF_MAXINSNS will
23  * unfortunately (necessarily) change the ioctl call number.
24  */
25 struct minix_bpf_program {
26 	u_int mbf_len;
27 	struct bpf_insn mbf_insns[BPF_MAXINSNS];
28 };
29 
30 #define MINIX_BIOCSETF		_IOW_BIG(2, struct minix_bpf_program)
31 
32 /* BIOCGDLTLIST: retrieve list of possible data link types. */
33 #define MINIX_BPF_MAXDLT	256
34 
35 struct minix_bpf_dltlist {
36 	struct bpf_dltlist mbfl_dltlist;		/* MUST be first */
37 	u_int mbfl_list[MINIX_BPF_MAXDLT];
38 };
39 
40 #define MINIX_BIOCGDLTLIST	_IOWR('B', 119, struct minix_bpf_dltlist)
41 
42 #endif /* !_MINIX_BPF_H */
43