Project

General

Profile

Statistics
| Revision:

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

History | View | Annotate | Download (1.95 KB)

1 13 up20180614
#ifndef _MINIX_IF_H
2
#define _MINIX_IF_H
3
4
#include <net/if.h>
5
#include <net/if_media.h>
6
7
/*
8
 * MINIX3-specific extensions to the network interface headers.  These
9
 * extensions are necessary because NetBSD IF uses a few ioctl(2) structure
10
 * formats that contain pointers--something that MINIX3 has to avoid, due to
11
 * its memory granting mechanisms.  Thus, those ioctl(2) calls have to be
12
 * converted from NetBSD to MINIX3 format.  We currently do that in libc.
13
 * This header specifies the numbers and formats for the MINIX3 versions.
14
 *
15
 * The general idea is that we rewrite the ioctl request data to include both
16
 * the original structure and a buffer for the array of values to which the
17
 * original structure uses a pointer.  Important: in those cases, the original
18
 * structure is expected to be the first element of the replacement structure.
19
 *
20
 * There is typically no configured upper bound for the maximum number of
21
 * values in the array, and so we pick size values that are hopefully always
22
 * oversized and yet keep the ioctl sizes within the range of regular ioctls
23
 * (4095 bytes, as per sys/ioccom.h).  If there may be larger amounts of data,
24
 * we have to use "big" ioctls.
25
 *
26
 * For the replacement ioctl codes, we use the original ioctl class and number
27
 * with a different size.  That should virtually eliminate the possibility of
28
 * accidental collisions.
29
 */
30
31
/* SIOCGIFMEDIA: retrieve interface media status and types. */
32
#define MINIX_IF_MAXMEDIA        256
33
34
struct minix_ifmediareq {
35
        struct ifmediareq mifm_ifm;                        /* MUST be first */
36
        int mifm_list[MINIX_IF_MAXMEDIA];
37
};
38
39
#define MINIX_SIOCGIFMEDIA        _IOWR('i', 54, struct minix_ifmediareq)
40
41
/* SIOCIFGCLONERS: retrieve interface "cloners" (virtual types). */
42
#define MINIX_IF_MAXCLONERS        128
43
44
struct minix_if_clonereq {
45
        struct if_clonereq mifcr_ifcr;                        /* MUST be first */
46
        char mifcr_buffer[MINIX_IF_MAXCLONERS * IFNAMSIZ];
47
};
48
49
#define MINIX_SIOCIFGCLONERS        _IOWR('i', 120, struct minix_if_clonereq)
50
51
#endif /* !_MINIX_IF_H */