Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / minix / bpf.h @ 13

History | View | Annotate | Download (1.43 KB)

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 */