vfs: check userland buffers before reading them.
[haiku.git] / headers / posix / net / if_media.h
blobb712905d92351b48ad2aa5e845204e8436f7b563
1 /*
2 * Copyright 2007-2012 Haiku, Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
4 */
5 #ifndef _NET_IF_MEDIA_H
6 #define _NET_IF_MEDIA_H
9 /* bits usage
10 * ---- -----
11 * 0-4 Media subtype
12 * 5-7 Media type
13 * 8-15 Type specific options
14 * 16-31 General options
17 /* Media types */
19 #define IFM_ETHER 0x00000020 /* Ethernet */
20 #define IFM_TOKEN 0x00000040 /* Token Ring */
21 #define IFM_FDDI 0x00000060 /* Fiber Distributed Data Interface */
22 #define IFM_IEEE80211 0x00000080 /* Wireless IEEE 802.11 */
23 #define IFM_ATM 0x000000a0
24 #define IFM_CARP 0x000000c0 /* Common Address Redundancy Protocol */
26 /* Media subtypes */
28 /* Ethernet */
29 #define IFM_AUTO 0
30 #define IFM_10_T 3 /* 10Base-T - RJ45 */
31 #define IFM_100_TX 6 /* 100Base-TX - RJ45 */
32 #define IFM_1000_T 16 /* 1000Base-T - RJ45 */
33 #define IFM_1000_SX 18 /* 1000Base-SX - Fiber Optic */
34 #define IFM_10G_T 22 /* 10GBase-T - RJ45 */
35 #define IFM_UNKNOWN 25 /* media types not defined yet */
37 /* General options */
39 #define IFM_FULL_DUPLEX 0x00100000 /* Full duplex */
40 #define IFM_HALF_DUPLEX 0x00200000 /* Half duplex */
41 #define IFM_LOOP 0x00400000 /* hardware in loopback */
42 #define IFM_ACTIVE 0x00800000 /* Media link is active */
44 /* Masks */
46 #define IFM_NMASK 0x000000e0 /* Media type */
47 #define IFM_TMASK 0x0000001f /* Media subtype */
48 #define IFM_OMASK 0x0000ff00 /* Type specific options */
49 #define IFM_GMASK 0x0ff00000 /* Generic options */
51 /* Macros for the masks */
53 #define IFM_TYPE(x) ((x) & IFM_NMASK)
54 #define IFM_SUBTYPE(x) ((x) & IFM_TMASK)
55 #define IFM_TYPE_OPTIONS(x) \
56 ((x) & IFM_OMASK)
57 #define IFM_OPTIONS(x) ((x) & (IFM_OMASK | IFM_GMASK))
59 #endif /* _NET_IF_MEDIA_H */