xref: /haiku/headers/posix/net/if_media.h (revision 9642f7705b27e5c270c15fa526d14e1848c2c27d)
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
7 
8 
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
15  */
16 
17 /* Media types */
18 
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 */
25 
26 /* Media subtypes */
27 
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 */
36 
37 /* General options */
38 
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 */
43 
44 /* Masks */
45 
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 */
50 
51 /* Macros for the masks */
52 
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))
58 
59 #endif	/* _NET_IF_MEDIA_H */
60