#include <net/if_media.h>
net/if_media.h
$NetBSD: if_media.h,v 1.3 1997/03/26 01:19:27 thorpej Exp $
macroIFM_X
Ethernet
In order to use more than 31 subtypes, Ethernet uses the extended media
variant bits
The extended media variant bits are not backward compatible so they
must not be used by kernel extensions like ifnet and drivers that
are to be deployed on older system versions
#define IFM_X(x) IFM_X_SUBTYPE(x)
internal shorthand
macroIFM_ETHER
#define IFM_ETHER 0x00000020
macroIFM_2500_SX
following types are not visible to old binaries using the low bits of IFM_TMASK
#define IFM_2500_SX IFM_X(32)
2500BaseSX - multi-mode fiber
macroIFM_TMASK_COMPAT
Macros to access bits of extended media sub-types (media variants)
#define IFM_TMASK_COMPAT 0x0000001f
Lower bits of media sub-type
macroIFM_X_SUBTYPE
#define IFM_X_SUBTYPE(x) (((x) & IFM_TMASK_COMPAT) | (((x) & (IFM_TMASK_EXT >> IFM_TMASK_EXT_SHIFT)) << IFM_TMASK_EXT_SHIFT))
macroIFM_TYPE
Macros to extract various bits of information from the media word.
#define IFM_TYPE(x) ((x) & IFM_NMASK)
macroIFM_SUBTYPE
#define IFM_SUBTYPE(x) ((x) & IFM_TMASK)
macroIFM_TYPE_OPTIONS
#define IFM_TYPE_OPTIONS(x) ((x) & IFM_OMASK)
macroIFM_INST
#define IFM_INST(x) (((x) & IFM_IMASK) >> IFM_ISHIFT)
macroIFM_OPTIONS
#define IFM_OPTIONS(x) ((x) & (IFM_OMASK|IFM_GMASK))
macroIFM_INST_MAX
#define IFM_INST_MAX IFM_INST(IFM_IMASK)
macroIFM_MAKEWORD
Macro to create a media word.
#define IFM_MAKEWORD(type, subtype, options, instance) ((type) | (subtype) | (options) | ((instance) << IFM_ISHIFT))
structifmedia_description
NetBSD extension not defined in the BSDI API. This is used in various
places to get the canonical description for a given type/subtype.
NOTE: all but the top-level type descriptions must contain NO whitespace!
Otherwise, parsing these in ifconfig(8) would be a nightmare.
| int | ifmt_word | word value; may be masked |
| const char * | ifmt_string | description |
macroIFM_TYPE_DESCRIPTIONS
#define IFM_TYPE_DESCRIPTIONS {
{ IFM_ETHER, "Ethernet" },
{ IFM_TOKEN, "Token ring" },
{ IFM_FDDI, "FDDI" },
{ IFM_IEEE80211, "IEEE802.11" },
{ 0, NULL },
}macroIFM_SUBTYPE_ETHERNET_DESCRIPTIONS
#define IFM_SUBTYPE_ETHERNET_DESCRIPTIONS {
{ IFM_10_T, "10baseT/UTP" },
{ IFM_10_2, "10base2/BNC" },
{ IFM_10_5, "10base5/AUI" },
{ IFM_100_TX, "100baseTX" },
{ IFM_100_FX, "100baseFX" },
{ IFM_100_T4, "100baseT4" },
{ IFM_100_VG, "100baseVG" },
{ IFM_100_T2, "100baseT2" },
{ IFM_10_STP, "10baseSTP" },
{ IFM_10_FL, "10baseFL" },
{ IFM_1000_SX, "1000baseSX" },
{ IFM_1000_LX, "1000baseLX" },
{ IFM_1000_CX, "1000baseCX" },
{ IFM_1000_T, "1000baseT" },
{ IFM_HPNA_1, "homePNA" },
{ IFM_10G_LR, "10Gbase-LR" },
{ IFM_10G_SR, "10Gbase-SR" },
{ IFM_10G_CX4, "10Gbase-CX4" },
{ IFM_2500_SX, "2500BaseSX" },
{ IFM_10G_LRM, "10Gbase-LRM" },
{ IFM_10G_TWINAX, "10Gbase-Twinax" },
{ IFM_10G_TWINAX_LONG, "10Gbase-Twinax-Long" },
{ IFM_10G_T, "10Gbase-T" },
{ IFM_40G_CR4, "40Gbase-CR4" },
{ IFM_40G_SR4, "40Gbase-SR4" },
{ IFM_40G_LR4, "40Gbase-LR4" },
{ IFM_1000_KX, "1000Base-KX" },
{ IFM_OTHER, "Other" },
{ IFM_10G_KX4, "10GBase-KX4" },
{ IFM_10G_KR, "10GBase-KR" },
{ IFM_10G_CR1, "10GBase-CR1" },
{ IFM_20G_KR2, "20GBase-KR2" },
{ IFM_2500_KX, "2500Base-KX" },
{ IFM_2500_T, "2500Base-T" },
{ IFM_5000_T, "5000Base-T" },
{ IFM_50G_PCIE, "PCIExpress-50G" },
{ IFM_25G_PCIE, "PCIExpress-25G" },
{ IFM_1000_SGMII, "1000Base-SGMII" },
{ IFM_10G_SFI, "10GBase-SFI" },
{ IFM_40G_XLPPI, "40GBase-XLPPI" },
{ IFM_1000_CX_SGMII, "1000Base-CX-SGMII" },
{ IFM_40G_KR4, "40GBase-KR4" },
{ IFM_10G_ER, "10GBase-ER" },
{ IFM_100G_CR4, "100GBase-CR4" },
{ IFM_100G_SR4, "100GBase-SR4" },
{ IFM_100G_KR4, "100GBase-KR4" },
{ IFM_100G_LR4, "100GBase-LR4" },
{ IFM_56G_R4, "56GBase-R4" },
{ IFM_100_T, "100BaseT" },
{ IFM_25G_CR, "25GBase-CR" },
{ IFM_25G_KR, "25GBase-KR" },
{ IFM_25G_SR, "25GBase-SR" },
{ IFM_50G_CR2, "50GBase-CR2" },
{ IFM_50G_KR2, "50GBase-KR2" },
{ IFM_25G_LR, "25GBase-LR" },
{ IFM_10G_AOC, "10GBase-AOC" },
{ IFM_25G_ACC, "25GBase-ACC" },
{ IFM_25G_AOC, "25GBase-AOC" },
{ IFM_100_SGMII, "100M-SGMII" },
{ IFM_2500_X, "2500Base-X" },
{ IFM_5000_KR, "5000Base-KR" },
{ IFM_25G_T, "25GBase-T" },
{ IFM_25G_CR_S, "25GBase-CR-S" },
{ IFM_25G_CR1, "25GBase-CR1" },
{ IFM_25G_KR_S, "25GBase-KR-S" },
{ IFM_5000_KR_S, "5000Base-KR-S" },
{ IFM_5000_KR1, "5000Base-KR1" },
{ IFM_25G_AUI, "25G-AUI" },
{ IFM_40G_XLAUI, "40G-XLAUI" },
{ IFM_40G_XLAUI_AC, "40G-XLAUI-AC" },
{ IFM_40G_ER4, "40GBase-ER4" },
{ IFM_50G_SR2, "50GBase-SR2" },
{ IFM_50G_LR2, "50GBase-LR2" },
{ IFM_50G_LAUI2_AC, "50G-LAUI2-AC" },
{ IFM_50G_LAUI2, "50G-LAUI2" },
{ IFM_50G_AUI2_AC, "50G-AUI2-AC" },
{ IFM_50G_AUI2, "50G-AUI2" },
{ IFM_50G_CP, "50GBase-CP" },
{ IFM_50G_SR, "50GBase-SR" },
{ IFM_50G_LR, "50GBase-LR" },
{ IFM_50G_FR, "50GBase-FR" },
{ IFM_50G_KR_PAM4, "50GBase-KR-PAM4" },
{ IFM_25G_KR1, "25GBase-KR1" },
{ IFM_50G_AUI1_AC, "50G-AUI1-AC" },
{ IFM_50G_AUI1, "50G-AUI1" },
{ IFM_100G_CAUI4_AC, "100G-CAUI4-AC" },
{ IFM_100G_CAUI4, "100G-CAUI4" },
{ IFM_100G_AUI4_AC, "100G-AUI4-AC" },
{ IFM_100G_AUI4, "100G-AUI4" },
{ IFM_100G_CR_PAM4, "100GBase-CR-PAM4" },
{ IFM_100G_KR_PAM4, "100GBase-KR-PAM4" },
{ IFM_100G_CP2, "100GBase-CP2" },
{ IFM_100G_SR2, "100GBase-SR2" },
{ IFM_100G_DR, "100GBase-DR" },
{ IFM_100G_KR2_PAM4, "100GBase-KR2-PAM4" },
{ IFM_100G_CAUI2_AC, "100G-CAUI2-AC" },
{ IFM_100G_CAUI2, "100G-CAUI2" },
{ IFM_100G_AUI2_AC, "100G-AUI2-AC" },
{ IFM_100G_AUI2, "100G-AUI2" },
{ IFM_200G_CR4_PAM4, "200GBase-CR4-PAM4" },
{ IFM_200G_SR4, "200GBase-SR4" },
{ IFM_200G_FR4, "200GBase-FR4" },
{ IFM_200G_LR4, "200GBase-LR4" },
{ IFM_200G_DR4, "200GBase-DR4" },
{ IFM_200G_KR4_PAM4, "200GBase-KR4-PAM4" },
{ IFM_200G_AUI4_AC, "200G-AUI4-AC" },
{ IFM_200G_AUI4, "200G-AUI4" },
{ IFM_200G_AUI8_AC, "200G-AUI8-AC" },
{ IFM_200G_AUI8, "200G-AUI8" },
{ IFM_400G_FR8, "400GBase-FR8" },
{ IFM_400G_LR8, "400GBase-LR8" },
{ IFM_400G_DR4, "400GBase-DR4" },
{ IFM_400G_AUI8_AC, "400G-AUI8-AC" },
{ IFM_400G_AUI8, "400G-AUI8" },
{ 0, NULL },
}macroIFM_SUBTYPE_ETHERNET_ALIASES
#define IFM_SUBTYPE_ETHERNET_ALIASES {
{ IFM_10_T, "UTP" },
{ IFM_10_T, "10UTP" },
{ IFM_10_2, "BNC" },
{ IFM_10_2, "10BNC" },
{ IFM_10_5, "AUI" },
{ IFM_10_5, "10AUI" },
{ IFM_100_TX, "100TX" },
{ IFM_100_FX, "100FX" },
{ IFM_100_T4, "100T4" },
{ IFM_100_VG, "100VG" },
{ IFM_100_T2, "100T2" },
{ IFM_1000_SX, "1000SX" },
{ IFM_10_STP, "STP" },
{ IFM_10_STP, "10STP" },
{ IFM_10_FL, "FL" },
{ IFM_10_FL, "10FL" },
{ IFM_1000_LX, "1000LX" },
{ IFM_1000_CX, "1000CX" },
{ IFM_1000_T, "1000T" },
{ IFM_HPNA_1, "HPNA1" },
{ IFM_10G_SR, "10GSR" },
{ IFM_10G_LR, "10GLR" },
{ IFM_10G_CX4, "10GCX4" },
{ IFM_10G_T, "10GT" },
{ 0, NULL },
}macroIFM_SUBTYPE_ETHERNET_OPTION_DESCRIPTIONS
#define IFM_SUBTYPE_ETHERNET_OPTION_DESCRIPTIONS {
{ 0, NULL },
}macroIFM_SUBTYPE_TOKENRING_DESCRIPTIONS
#define IFM_SUBTYPE_TOKENRING_DESCRIPTIONS {
{ IFM_TOK_STP4, "DB9/4Mbit" },
{ IFM_TOK_STP16, "DB9/16Mbit" },
{ IFM_TOK_UTP4, "UTP/4Mbit" },
{ IFM_TOK_UTP16, "UTP/16Mbit" },
{ 0, NULL },
}macroIFM_SUBTYPE_TOKENRING_ALIASES
#define IFM_SUBTYPE_TOKENRING_ALIASES {
{ IFM_TOK_STP4, "4STP" },
{ IFM_TOK_STP16, "16STP" },
{ IFM_TOK_UTP4, "4UTP" },
{ IFM_TOK_UTP16, "16UTP" },
{ 0, NULL },
}macroIFM_SUBTYPE_TOKENRING_OPTION_DESCRIPTIONS
#define IFM_SUBTYPE_TOKENRING_OPTION_DESCRIPTIONS {
{ IFM_TOK_ETR, "EarlyTokenRelease" },
{ IFM_TOK_SRCRT, "SourceRouting" },
{ IFM_TOK_ALLR, "AllRoutes" },
{ 0, NULL },
}macroIFM_SUBTYPE_FDDI_DESCRIPTIONS
#define IFM_SUBTYPE_FDDI_DESCRIPTIONS {
{ IFM_FDDI_SMF, "Single-mode" },
{ IFM_FDDI_MMF, "Multi-mode" },
{ IFM_FDDI_UTP, "UTP" },
{ 0, NULL },
}macroIFM_SUBTYPE_FDDI_ALIASES
#define IFM_SUBTYPE_FDDI_ALIASES {
{ IFM_FDDI_SMF, "SMF" },
{ IFM_FDDI_MMF, "MMF" },
{ IFM_FDDI_UTP, "CDDI" },
{ 0, NULL },
}macroIFM_SUBTYPE_FDDI_OPTION_DESCRIPTIONS
#define IFM_SUBTYPE_FDDI_OPTION_DESCRIPTIONS {
{ IFM_FDDI_DA, "Dual-attach" },
{ 0, NULL },
}macroIFM_SUBTYPE_IEEE80211_DESCRIPTIONS
#define IFM_SUBTYPE_IEEE80211_DESCRIPTIONS {
{ IFM_IEEE80211_FH1, "FH1" },
{ IFM_IEEE80211_FH2, "FH2" },
{ IFM_IEEE80211_DS1, "DS1" },
{ IFM_IEEE80211_DS2, "DS2" },
{ IFM_IEEE80211_DS5, "DS5" },
{ IFM_IEEE80211_DS11, "DS11" },
{ IFM_IEEE80211_DS22, "DS22" },
{ 0, NULL },
}macroIFM_SUBTYPE_IEEE80211_OPTION_DESCRIPTIONS
#define IFM_SUBTYPE_IEEE80211_OPTION_DESCRIPTIONS {
{ IFM_IEEE80211_ADHOC, "adhoc" },
{ 0, NULL },
}macroIFM_SUBTYPE_SHARED_DESCRIPTIONS
#define IFM_SUBTYPE_SHARED_DESCRIPTIONS {
{ IFM_AUTO, "autoselect" },
{ IFM_MANUAL, "manual" },
{ IFM_NONE, "none" },
{ 0, NULL },
}macroIFM_SUBTYPE_SHARED_ALIASES
#define IFM_SUBTYPE_SHARED_ALIASES {
{ IFM_AUTO, "auto" },
{ 0, NULL },
}macroIFM_SHARED_OPTION_DESCRIPTIONS
#define IFM_SHARED_OPTION_DESCRIPTIONS {
{ IFM_FDX, "full-duplex" },
{ IFM_HDX, "half-duplex" },
{ IFM_FLOW, "flow-control" },
{ IFM_EEE, "energy-efficient-ethernet" },
{ IFM_FLAG0, "flag0" },
{ IFM_FLAG1, "flag1" },
{ IFM_FLAG2, "flag2" },
{ IFM_LOOP, "hw-loopback" },
{ 0, NULL },
}