if_media.h revision a7359754
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