📄 if_media.h
字号:
* Shared media sub-types */#define IFM_AUTO 0 /* Autoselect best media */#define IFM_MANUAL 1 /* Jumper/dipswitch selects media */#define IFM_NONE 2 /* Deselect all media *//* * Shared options */#define IFM_FDX 0x00100000 /* Force full duplex */#define IFM_HDX 0x00200000 /* Force half duplex */#define IFM_FLOW 0x00400000 /* enable hardware flow control */#define IFM_FLAG0 0x01000000 /* Driver defined flag */#define IFM_FLAG1 0x02000000 /* Driver defined flag */#define IFM_FLAG2 0x04000000 /* Driver defined flag */#define IFM_LOOP 0x08000000 /* Put hardware in loopback *//* * Masks */#define IFM_NMASK 0x000000e0 /* Network type */#define IFM_TMASK 0x0000001f /* Media sub-type */#define IFM_IMASK 0xf0000000 /* Instance */#define IFM_ISHIFT 28 /* Instance shift */#define IFM_OMASK 0x0000ff00 /* Type specific options */#define IFM_GMASK 0x0ff00000 /* Global options */#define IFM_NMIN IFM_ETHER /* lowest Network type */#define IFM_NMAX IFM_NMASK /* highest Network type *//* * Status bits */#define IFM_AVALID 0x00000001 /* Active bit valid */#define IFM_ACTIVE 0x00000002 /* Interface attached to working net *//* Mask of "status valid" bits, for ifconfig(8). */#define IFM_STATUS_VALID IFM_AVALID/* List of "status valid" bits, for ifconfig(8). */#define IFM_STATUS_VALID_LIST { \ IFM_AVALID, \ 0 \}/* * Macros to extract various bits of information from the media word. */#define IFM_TYPE(x) ((x) & IFM_NMASK)#define IFM_SUBTYPE(x) ((x) & IFM_TMASK)#define IFM_INST(x) (((x) & IFM_IMASK) >> IFM_ISHIFT)#define IFM_OPTIONS(x) ((x) & (IFM_OMASK|IFM_GMASK))#define IFM_INST_MAX IFM_INST(IFM_IMASK)#define IFM_INST_ANY (-1)/* * Macro to create a media word. */#define IFM_MAKEWORD(type, subtype, options, instance) \ ((type) | (subtype) | (options) | ((instance) << IFM_ISHIFT))/* * NetBSD extension not defined in the BSDI API. This is used in various * places to get the canonical description for a given type/subtype. * * In the subtype and mediaopt descriptions, the valid TYPE bits are OR'd * in to indicate which TYPE the subtype/option corresponds to. If no * TYPE is present, it is a shared media/mediaopt. * * Note that these are parsed case-insensitive. * * Order is important. The first matching entry is the canonical name * for a media type; subsequent matches are aliases. */struct ifmedia_description { int ifmt_word; /* word value; may be masked */ const char *ifmt_string; /* description */};#define IFM_TYPE_DESCRIPTIONS { \ { IFM_ETHER, "Ethernet" }, \ { IFM_ETHER, "ether" }, \ { IFM_TOKEN, "TokenRing" }, \ { IFM_TOKEN, "token" }, \ { IFM_FDDI, "FDDI" }, \ { IFM_IEEE80211, "IEEE802.11" }, \ { 0, NULL }, \}#define IFM_TYPE_MATCH(dt, t) \ (IFM_TYPE((dt)) == 0 || IFM_TYPE((dt)) == IFM_TYPE((t)))#define IFM_SUBTYPE_DESCRIPTIONS { \ { IFM_AUTO, "autoselect" }, \ { IFM_AUTO, "auto" }, \ { IFM_MANUAL, "manual" }, \ { IFM_NONE, "none" }, \ \ { IFM_ETHER|IFM_10_T, "10baseT" }, \ { IFM_ETHER|IFM_10_T, "10baseT/UTP" }, \ { IFM_ETHER|IFM_10_T, "UTP" }, \ { IFM_ETHER|IFM_10_T, "10UTP" }, \ { IFM_ETHER|IFM_10_2, "10base2" }, \ { IFM_ETHER|IFM_10_2, "10base2/BNC" }, \ { IFM_ETHER|IFM_10_2, "BNC" }, \ { IFM_ETHER|IFM_10_2, "10BNC" }, \ { IFM_ETHER|IFM_10_5, "10base5" }, \ { IFM_ETHER|IFM_10_5, "10base5/AUI" }, \ { IFM_ETHER|IFM_10_5, "AUI" }, \ { IFM_ETHER|IFM_10_5, "10AUI" }, \ { IFM_ETHER|IFM_100_TX, "100baseTX" }, \ { IFM_ETHER|IFM_100_TX, "100TX" }, \ { IFM_ETHER|IFM_100_FX, "100baseFX" }, \ { IFM_ETHER|IFM_100_FX, "100FX" }, \ { IFM_ETHER|IFM_100_T4, "100baseT4" }, \ { IFM_ETHER|IFM_100_T4, "100T4" }, \ { IFM_ETHER|IFM_100_VG, "100baseVG" }, \ { IFM_ETHER|IFM_100_VG, "100VG" }, \ { IFM_ETHER|IFM_100_T2, "100baseT2" }, \ { IFM_ETHER|IFM_100_T2, "100T2" }, \ { IFM_ETHER|IFM_1000_FX, "1000baseFX" }, \ { IFM_ETHER|IFM_1000_FX, "1000FX" }, \ { IFM_ETHER|IFM_10_STP, "10baseSTP" }, \ { IFM_ETHER|IFM_10_STP, "STP" }, \ { IFM_ETHER|IFM_10_STP, "10STP" }, \ { IFM_ETHER|IFM_10_FL, "10baseFL" }, \ { IFM_ETHER|IFM_10_FL, "FL" }, \ { IFM_ETHER|IFM_10_FL, "10FL" }, \ { IFM_ETHER|IFM_1000_SX, "1000baseSX" }, \ { IFM_ETHER|IFM_1000_LX, "1000baseLX" }, \ { IFM_ETHER|IFM_1000_CX, "1000baseCX" }, \ { IFM_ETHER|IFM_1000_TX, "1000baseTX" }, \ { IFM_ETHER|IFM_HPNA_1, "HomePNA1" }, \ { IFM_ETHER|IFM_HPNA_1, "HPNA1" }, \ \ { IFM_TOKEN|IFM_TOK_STP4, "DB9/4Mbit" }, \ { IFM_TOKEN|IFM_TOK_STP4, "4STP" }, \ { IFM_TOKEN|IFM_TOK_STP16, "DB9/16Mbit" }, \ { IFM_TOKEN|IFM_TOK_STP16, "16STP" }, \ { IFM_TOKEN|IFM_TOK_UTP4, "UTP/4Mbit" }, \ { IFM_TOKEN|IFM_TOK_UTP4, "4UTP" }, \ { IFM_TOKEN|IFM_TOK_UTP16, "UTP/16Mbit" }, \ { IFM_TOKEN|IFM_TOK_UTP16, "16UTP" }, \ \ { IFM_FDDI|IFM_FDDI_SMF, "Single-mode" }, \ { IFM_FDDI|IFM_FDDI_SMF, "SMF" }, \ { IFM_FDDI|IFM_FDDI_MMF, "Multi-mode" }, \ { IFM_FDDI|IFM_FDDI_MMF, "MMF" }, \ { IFM_FDDI|IFM_FDDI_UTP, "UTP" }, \ { IFM_FDDI|IFM_FDDI_UTP, "CDDI" }, \ \ { IFM_IEEE80211|IFM_IEEE80211_FH1, "FH1" }, \ { IFM_IEEE80211|IFM_IEEE80211_FH2, "FH2" }, \ { IFM_IEEE80211|IFM_IEEE80211_DS1, "DS1" }, \ { IFM_IEEE80211|IFM_IEEE80211_DS2, "DS2" }, \ { IFM_IEEE80211|IFM_IEEE80211_DS5, "DS5" }, \ { IFM_IEEE80211|IFM_IEEE80211_DS11, "DS11" }, \ \ { 0, NULL }, \}#define IFM_OPTION_DESCRIPTIONS { \ { IFM_FDX, "full-duplex" }, \ { IFM_FDX, "fdx" }, \ { IFM_HDX, "half-duplex" }, \ { IFM_HDX, "hdx" }, \ { IFM_FLAG0, "flag0" }, \ { IFM_FLAG1, "flag1" }, \ { IFM_FLAG2, "flag2" }, \ { IFM_LOOP, "loopback" }, \ { IFM_LOOP, "hw-loopback"}, \ { IFM_LOOP, "loop" }, \ \ { IFM_TOKEN|IFM_TOK_ETR, "EarlyTokenRelease" }, \ { IFM_TOKEN|IFM_TOK_ETR, "ETR" }, \ { IFM_TOKEN|IFM_TOK_SRCRT, "SourceRouting" }, \ { IFM_TOKEN|IFM_TOK_SRCRT, "SRCRT" }, \ { IFM_TOKEN|IFM_TOK_ALLR, "AllRoutes" }, \ { IFM_TOKEN|IFM_TOK_ALLR, "ALLR" }, \ \ { IFM_FDDI|IFM_FDDI_DA, "dual-attach" }, \ { IFM_FDDI|IFM_FDDI_DA, "das" }, \ \ { IFM_IEEE80211|IFM_IEEE80211_ADHOC, "adhoc" }, \ \ { 0, NULL }, \}/* * Status bit descriptions for the various media types. */struct ifmedia_status_description { int ifms_type; int ifms_valid; int ifms_bit; const char *ifms_string[2];};#define IFM_STATUS_DESC(ifms, bit) \ (ifms)->ifms_string[((ifms)->ifms_bit & (bit)) ? 1 : 0]#define IFM_STATUS_DESCRIPTIONS { \ { IFM_ETHER, IFM_AVALID, IFM_ACTIVE, \ { "no carrier", "active" } }, \ { IFM_FDDI, IFM_AVALID, IFM_ACTIVE, \ { "no ring", "inserted" } }, \ { IFM_TOKEN, IFM_AVALID, IFM_ACTIVE, \ { "no ring", "inserted" } }, \ { IFM_IEEE80211, IFM_AVALID, IFM_ACTIVE, \ { "no network", "active" } }, \ { 0, 0, 0, \ { NULL, NULL } } \}#endif /* _NET_IF_MEDIA_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -