[BACK]Return to if_media.h CVS log [TXT][DIR] Up to [local] / sys / net

Annotation of sys/net/if_media.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: if_media.h,v 1.24 2007/05/29 22:11:57 henning Exp $   */
        !             2: /*     $NetBSD: if_media.h,v 1.22 2000/02/17 21:53:16 sommerfeld Exp $ */
        !             3:
        !             4: /*-
        !             5:  * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
        !             6:  * All rights reserved.
        !             7:  *
        !             8:  * This code is derived from software contributed to The NetBSD Foundation
        !             9:  * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
        !            10:  * NASA Ames Research Center.
        !            11:  *
        !            12:  * Redistribution and use in source and binary forms, with or without
        !            13:  * modification, are permitted provided that the following conditions
        !            14:  * are met:
        !            15:  * 1. Redistributions of source code must retain the above copyright
        !            16:  *    notice, this list of conditions and the following disclaimer.
        !            17:  * 2. Redistributions in binary form must reproduce the above copyright
        !            18:  *    notice, this list of conditions and the following disclaimer in the
        !            19:  *    documentation and/or other materials provided with the distribution.
        !            20:  * 3. All advertising materials mentioning features or use of this software
        !            21:  *    must display the following acknowledgement:
        !            22:  *     This product includes software developed by the NetBSD
        !            23:  *     Foundation, Inc. and its contributors.
        !            24:  * 4. Neither the name of The NetBSD Foundation nor the names of its
        !            25:  *    contributors may be used to endorse or promote products derived
        !            26:  *    from this software without specific prior written permission.
        !            27:  *
        !            28:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
        !            29:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
        !            30:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
        !            31:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
        !            32:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
        !            33:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
        !            34:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
        !            35:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
        !            36:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
        !            37:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        !            38:  * POSSIBILITY OF SUCH DAMAGE.
        !            39:  */
        !            40:
        !            41: /*
        !            42:  * Copyright (c) 1997
        !            43:  *     Jonathan Stone and Jason R. Thorpe.  All rights reserved.
        !            44:  *
        !            45:  * This software is derived from information provided by Matt Thomas.
        !            46:  *
        !            47:  * Redistribution and use in source and binary forms, with or without
        !            48:  * modification, are permitted provided that the following conditions
        !            49:  * are met:
        !            50:  * 1. Redistributions of source code must retain the above copyright
        !            51:  *    notice, this list of conditions and the following disclaimer.
        !            52:  * 2. Redistributions in binary form must reproduce the above copyright
        !            53:  *    notice, this list of conditions and the following disclaimer in the
        !            54:  *    documentation and/or other materials provided with the distribution.
        !            55:  * 3. All advertising materials mentioning features or use of this software
        !            56:  *    must display the following acknowledgement:
        !            57:  *     This product includes software developed by Jonathan Stone
        !            58:  *     and Jason R. Thorpe for the NetBSD Project.
        !            59:  * 4. The names of the authors may not be used to endorse or promote products
        !            60:  *    derived from this software without specific prior written permission.
        !            61:  *
        !            62:  * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
        !            63:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            64:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            65:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
        !            66:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
        !            67:  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
        !            68:  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
        !            69:  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
        !            70:  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            71:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            72:  * SUCH DAMAGE.
        !            73:  */
        !            74:
        !            75: #ifndef _NET_IF_MEDIA_H_
        !            76: #define _NET_IF_MEDIA_H_
        !            77:
        !            78: /*
        !            79:  * Prototypes and definitions for BSD/OS-compatible network interface
        !            80:  * media selection.
        !            81:  *
        !            82:  * Where it is safe to do so, this code strays slightly from the BSD/OS
        !            83:  * design.  Software which uses the API (device drivers, basically)
        !            84:  * shouldn't notice any difference.
        !            85:  *
        !            86:  * Many thanks to Matt Thomas for providing the information necessary
        !            87:  * to implement this interface.
        !            88:  */
        !            89:
        !            90: #ifdef _KERNEL
        !            91:
        !            92: #include <sys/queue.h>
        !            93:
        !            94: /*
        !            95:  * Driver callbacks for media status and change requests.
        !            96:  */
        !            97: typedef        int (*ifm_change_cb_t)(struct ifnet *);
        !            98: typedef        void (*ifm_stat_cb_t)(struct ifnet *, struct ifmediareq *);
        !            99:
        !           100: /*
        !           101:  * In-kernel representation of a single supported media type.
        !           102:  */
        !           103: struct ifmedia_entry {
        !           104:        TAILQ_ENTRY(ifmedia_entry) ifm_list;
        !           105:        u_int   ifm_media;      /* description of this media attachment */
        !           106:        u_int   ifm_data;       /* for driver-specific use */
        !           107:        void    *ifm_aux;       /* for driver-specific use */
        !           108: };
        !           109:
        !           110: /*
        !           111:  * One of these goes into a network interface's softc structure.
        !           112:  * It is used to keep general media state.
        !           113:  */
        !           114: struct ifmedia {
        !           115:        u_int   ifm_mask;       /* mask of changes we don't care about */
        !           116:        u_int   ifm_media;      /* current user-set media word */
        !           117:        struct ifmedia_entry *ifm_cur;  /* currently selected media */
        !           118:        TAILQ_HEAD(, ifmedia_entry) ifm_list; /* list of all supported media */
        !           119:        ifm_change_cb_t ifm_change;     /* media change driver callback */
        !           120:        ifm_stat_cb_t   ifm_status;     /* media status driver callback */
        !           121: };
        !           122:
        !           123: /* Initialize an interface's struct if_media field. */
        !           124: void   ifmedia_init(struct ifmedia *, int, ifm_change_cb_t,
        !           125:             ifm_stat_cb_t);
        !           126:
        !           127: /* Add one supported medium to a struct ifmedia. */
        !           128: void   ifmedia_add(struct ifmedia *, int, int, void *);
        !           129:
        !           130: /* Add an array (of ifmedia_entry) media to a struct ifmedia. */
        !           131: void   ifmedia_list_add(struct ifmedia *, struct ifmedia_entry *,
        !           132:            int);
        !           133:
        !           134: /* Set default media type on initialization. */
        !           135: void   ifmedia_set(struct ifmedia *, int);
        !           136:
        !           137: /* Common ioctl function for getting/setting media, called by driver. */
        !           138: int    ifmedia_ioctl(struct ifnet *, struct ifreq *, struct ifmedia *,
        !           139:            u_long);
        !           140:
        !           141: /* Locate a media entry */
        !           142: struct ifmedia_entry *ifmedia_match(struct ifmedia *, u_int, u_int);
        !           143:
        !           144: /* Delete all media for a given media instance */
        !           145: void   ifmedia_delete_instance(struct ifmedia *, u_int);
        !           146:
        !           147: /* Compute baudrate for a given media. */
        !           148: int    ifmedia_baudrate(int);
        !           149: #endif /*_KERNEL */
        !           150:
        !           151: /*
        !           152:  * if_media Options word:
        !           153:  *     Bits    Use
        !           154:  *     ----    -------
        !           155:  *     0-4     Media subtype           MAX SUBTYPE == 31!
        !           156:  *     5-7     Media type
        !           157:  *     8-15    Type specific options
        !           158:  *     16-19   RFU
        !           159:  *     20-27   Shared (global) options
        !           160:  *     28-31   Instance
        !           161:  */
        !           162:
        !           163: /*
        !           164:  * Ethernet
        !           165:  */
        !           166: #define IFM_ETHER      0x00000020
        !           167: #define        IFM_10_T        3               /* 10BaseT - RJ45 */
        !           168: #define        IFM_10_2        4               /* 10Base2 - Thinnet */
        !           169: #define        IFM_10_5        5               /* 10Base5 - AUI */
        !           170: #define        IFM_100_TX      6               /* 100BaseTX - RJ45 */
        !           171: #define        IFM_100_FX      7               /* 100BaseFX - Fiber */
        !           172: #define        IFM_100_T4      8               /* 100BaseT4 - 4 pair cat 3 */
        !           173: #define        IFM_100_VG      9               /* 100VG-AnyLAN */
        !           174: #define        IFM_100_T2      10              /* 100BaseT2 */
        !           175: #define        IFM_1000_SX     11              /* 1000BaseSX - multi-mode fiber */
        !           176: #define        IFM_10_STP      12              /* 10BaseT over shielded TP */
        !           177: #define        IFM_10_FL       13              /* 10BaseFL - Fiber */
        !           178: #define        IFM_1000_LX     14              /* 1000baseLX - single-mode fiber */
        !           179: #define        IFM_1000_CX     15              /* 1000baseCX - 150ohm STP */
        !           180: #define        IFM_1000_T      16              /* 1000baseT - 4 pair cat 5 */
        !           181: #define        IFM_1000_TX     IFM_1000_T      /* for backwards compatibility */
        !           182: #define        IFM_HPNA_1      17              /* HomePNA 1.0 (1Mb/s) */
        !           183: #define        IFM_10G_LR      18              /* 10GBase-LR - single-mode fiber */
        !           184: #define        IFM_10G_SR      19              /* 10GBase-SR - multi-mode fiber */
        !           185: #define        IFM_10G_CX4     20              /* 10GBase-CX4 - copper */
        !           186:
        !           187: #define        IFM_ETH_MASTER  0x00000100      /* master mode (1000baseT) */
        !           188: #define        IFM_ETH_RXPAUSE 0x00000200      /* receive PAUSE frames */
        !           189: #define        IFM_ETH_TXPAUSE 0x00000400      /* transmit PAUSE frames */
        !           190:
        !           191: /*
        !           192:  * FDDI
        !           193:  */
        !           194: #define        IFM_FDDI        0x00000060
        !           195: #define        IFM_FDDI_SMF    3               /* Single-mode fiber */
        !           196: #define        IFM_FDDI_MMF    4               /* Multi-mode fiber */
        !           197: #define IFM_FDDI_UTP   5               /* CDDI / UTP */
        !           198: #define IFM_FDDI_DA    0x00000100      /* Dual attach / single attach */
        !           199:
        !           200: /*
        !           201:  * IEEE 802.11 Wireless
        !           202:  */
        !           203: #define        IFM_IEEE80211   0x00000080
        !           204: #define        IFM_IEEE80211_FH1       3       /* Frequency Hopping 1Mbps */
        !           205: #define        IFM_IEEE80211_FH2       4       /* Frequency Hopping 2Mbps */
        !           206: #define        IFM_IEEE80211_DS2       5       /* Direct Sequence 2Mbps */
        !           207: #define        IFM_IEEE80211_DS5       6       /* Direct Sequence 5Mbps*/
        !           208: #define        IFM_IEEE80211_DS11      7       /* Direct Sequence 11Mbps*/
        !           209: #define        IFM_IEEE80211_DS1       8       /* Direct Sequence  1Mbps*/
        !           210: #define IFM_IEEE80211_DS22     9       /* Direct Sequence 22Mbps */
        !           211: #define IFM_IEEE80211_OFDM6    10      /* OFDM 6Mbps */
        !           212: #define IFM_IEEE80211_OFDM9    11      /* OFDM 9Mbps */
        !           213: #define IFM_IEEE80211_OFDM12   12      /* OFDM 12Mbps */
        !           214: #define IFM_IEEE80211_OFDM18   13      /* OFDM 18Mbps */
        !           215: #define IFM_IEEE80211_OFDM24   14      /* OFDM 24Mbps */
        !           216: #define IFM_IEEE80211_OFDM36   15      /* OFDM 36Mbps */
        !           217: #define IFM_IEEE80211_OFDM48   16      /* OFDM 48Mbps */
        !           218: #define IFM_IEEE80211_OFDM54   17      /* OFDM 54Mbps */
        !           219: #define IFM_IEEE80211_OFDM72   18      /* OFDM 72Mbps */
        !           220:
        !           221: #define        IFM_IEEE80211_ADHOC     0x100   /* Operate in Adhoc mode */
        !           222: #define        IFM_IEEE80211_HOSTAP    0x200   /* Operate in Host AP mode */
        !           223: #define        IFM_IEEE80211_IBSS      0x400   /* Operate in IBSS mode */
        !           224: #define        IFM_IEEE80211_IBSSMASTER 0x800  /* Operate as an IBSS master */
        !           225: #define        IFM_IEEE80211_MONITOR   0x1000  /* Operate in Monitor mode */
        !           226: #define        IFM_IEEE80211_TURBO     0x2000  /* Operate in Turbo mode */
        !           227:
        !           228: /* operating mode for multi-mode devices */
        !           229: #define IFM_IEEE80211_11A      0x00010000      /* 5Ghz, OFDM mode */
        !           230: #define IFM_IEEE80211_11B      0x00020000      /* Direct Sequence mode */
        !           231: #define IFM_IEEE80211_11G      0x00030000      /* 2Ghz, CCK mode */
        !           232: #define IFM_IEEE80211_FH       0x00040000      /* 2Ghz, GFSK mode */
        !           233:
        !           234: /*
        !           235:  * Digitally multiplexed "Carrier" Serial Interfaces
        !           236:  */
        !           237: #define        IFM_TDM         0x000000a0
        !           238: #define IFM_TDM_T1             3       /* T1 B8ZS+ESF 24 ts */
        !           239: #define IFM_TDM_T1_AMI         4       /* T1 AMI+SF 24 ts */
        !           240: #define IFM_TDM_E1             5       /* E1 HDB3+G.703 clearchannel 32 ts */
        !           241: #define IFM_TDM_E1_G704                6       /* E1 HDB3+G.703+G.704 channelized 31 ts */
        !           242: #define IFM_TDM_E1_AMI         7       /* E1 AMI+G.703 32 ts */
        !           243: #define IFM_TDM_E1_AMI_G704    8       /* E1 AMI+G.703+G.704 31 ts */
        !           244: #define IFM_TDM_T3             9       /* T3 B3ZS+C-bit 672 ts */
        !           245: #define IFM_TDM_T3_M13         10      /* T3 B3ZS+M13 672 ts */
        !           246: #define IFM_TDM_E3             11      /* E3 HDB3+G.751 512? ts */
        !           247: #define IFM_TDM_E3_G751                12      /* E3 G.751 512 ts */
        !           248: #define IFM_TDM_E3_G832                13      /* E3 G.832 512 ts */
        !           249: #define IFM_TDM_E1_G704_CRC4   14      /* E1 HDB3+G.703+G.704 31 ts + CRC4 */
        !           250: /*
        !           251:  * 6 major ways that networks talk: Drivers enforce independent selection,
        !           252:  * meaning, a driver will ensure that only one of these is set at a time.
        !           253:  * Default is cisco hdlc mode with 32 bit CRC.
        !           254:  */
        !           255: #define IFM_TDM_HDLC_CRC16     0x0100  /* Use 16-bit CRC for HDLC instead */
        !           256: #define IFM_TDM_PPP            0x0200  /* SPPP (dumb) */
        !           257: #define IFM_TDM_FR_ANSI                0x0400  /* Frame Relay + LMI ANSI "Annex D" */
        !           258: #define IFM_TDM_FR_CISCO       0x0800  /* Frame Relay + LMI Cisco */
        !           259: #define IFM_TDM_FR_ITU         0x1000  /* Frame Relay + LMI ITU "Q933A" */
        !           260:
        !           261: /* operating mode */
        !           262: #define IFM_TDM_MASTER         0x00010000      /* aka clock source internal */
        !           263:
        !           264: /*
        !           265:  * Common Access Redundancy Protocol
        !           266:  */
        !           267: #define        IFM_CARP                0x000000c0
        !           268:
        !           269: /*
        !           270:  * Shared media sub-types
        !           271:  */
        !           272: #define        IFM_AUTO        0               /* Autoselect best media */
        !           273: #define        IFM_MANUAL      1               /* Jumper/dipswitch selects media */
        !           274: #define        IFM_NONE        2               /* Deselect all media */
        !           275:
        !           276: /*
        !           277:  * Shared options
        !           278:  */
        !           279: #define IFM_FDX                0x00100000      /* Force full duplex */
        !           280: #define        IFM_HDX         0x00200000      /* Force half duplex */
        !           281: #define        IFM_FLOW        0x00400000      /* enable hardware flow control */
        !           282: #define IFM_FLAG0      0x01000000      /* Driver defined flag */
        !           283: #define IFM_FLAG1      0x02000000      /* Driver defined flag */
        !           284: #define IFM_FLAG2      0x04000000      /* Driver defined flag */
        !           285: #define        IFM_LOOP        0x08000000      /* Put hardware in loopback */
        !           286:
        !           287: /*
        !           288:  * Masks
        !           289:  */
        !           290: #define        IFM_NMASK       0x000000e0      /* Network type */
        !           291: #define        IFM_TMASK       0x0000001f      /* Media sub-type */
        !           292: #define        IFM_IMASK       0xf0000000      /* Instance */
        !           293: #define        IFM_ISHIFT      28              /* Instance shift */
        !           294: #define        IFM_OMASK       0x0000ff00      /* Type specific options */
        !           295: #define        IFM_MMASK       0x00070000      /* Mode */
        !           296: #define        IFM_MSHIFT      16              /* Mode shift */
        !           297: #define        IFM_GMASK       0x0ff00000      /* Global options */
        !           298:
        !           299: /* Ethernet flow control mask */
        !           300: #define        IFM_ETH_FMASK   (IFM_FLOW|IFM_ETH_RXPAUSE|IFM_ETH_TXPAUSE)
        !           301:
        !           302: #define        IFM_NMIN        IFM_ETHER       /* lowest Network type */
        !           303: #define        IFM_NMAX        IFM_NMASK       /* highest Network type */
        !           304:
        !           305: /*
        !           306:  * Status bits
        !           307:  */
        !           308: #define        IFM_AVALID      0x00000001      /* Active bit valid */
        !           309: #define        IFM_ACTIVE      0x00000002      /* Interface attached to working net */
        !           310:
        !           311: /* Mask of "status valid" bits, for ifconfig(8). */
        !           312: #define        IFM_STATUS_VALID        IFM_AVALID
        !           313:
        !           314: /* List of "status valid" bits, for ifconfig(8). */
        !           315: #define        IFM_STATUS_VALID_LIST {                                         \
        !           316:        IFM_AVALID,                                                     \
        !           317:        0                                                               \
        !           318: }
        !           319:
        !           320: /*
        !           321:  * Macros to extract various bits of information from the media word.
        !           322:  */
        !           323: #define        IFM_TYPE(x)     ((x) & IFM_NMASK)
        !           324: #define        IFM_SUBTYPE(x)  ((x) & IFM_TMASK)
        !           325: #define        IFM_INST(x)     (((x) & IFM_IMASK) >> IFM_ISHIFT)
        !           326: #define        IFM_OPTIONS(x)  ((x) & (IFM_OMASK|IFM_GMASK))
        !           327: #define        IFM_MODE(x)     ((x) & IFM_MMASK)
        !           328:
        !           329: #define        IFM_INST_MAX    IFM_INST(IFM_IMASK)
        !           330: #define        IFM_INST_ANY    ((u_int) -1)
        !           331:
        !           332: /*
        !           333:  * Macro to create a media word.
        !           334:  */
        !           335: #define        IFM_MAKEWORD(type, subtype, options, instance)                  \
        !           336:        ((type) | (subtype) | (options) | ((instance) << IFM_ISHIFT))
        !           337: #define IFM_MAKEMODE(mode)                                             \
        !           338:        (((mode) << IFM_MSHIFT) & IFM_MMASK)
        !           339: /*
        !           340:  * NetBSD extension not defined in the BSDI API.  This is used in various
        !           341:  * places to get the canonical description for a given type/subtype.
        !           342:  *
        !           343:  * In the subtype and mediaopt descriptions, the valid TYPE bits are OR'd
        !           344:  * in to indicate which TYPE the subtype/option corresponds to.  If no
        !           345:  * TYPE is present, it is a shared media/mediaopt.
        !           346:  *
        !           347:  * Note that these are parsed case-insensitive.
        !           348:  *
        !           349:  * Order is important.  The first matching entry is the canonical name
        !           350:  * for a media type; subsequent matches are aliases.
        !           351:  */
        !           352: struct ifmedia_description {
        !           353:        int     ifmt_word;              /* word value; may be masked */
        !           354:        const char *ifmt_string;        /* description */
        !           355: };
        !           356:
        !           357: #define        IFM_TYPE_DESCRIPTIONS {                                         \
        !           358:        { IFM_ETHER,                    "Ethernet" },                   \
        !           359:        { IFM_ETHER,                    "ether" },                      \
        !           360:        { IFM_FDDI,                     "FDDI" },                       \
        !           361:        { IFM_IEEE80211,                "IEEE802.11" },                 \
        !           362:        { IFM_TDM,                      "TDM" },                        \
        !           363:        { IFM_CARP,                     "CARP" },                       \
        !           364:        { 0, NULL },                                                    \
        !           365: }
        !           366:
        !           367: #define        IFM_TYPE_MATCH(dt, t)                                           \
        !           368:        (IFM_TYPE((dt)) == 0 || IFM_TYPE((dt)) == IFM_TYPE((t)))
        !           369:
        !           370: #define        IFM_SUBTYPE_DESCRIPTIONS {                                      \
        !           371:        { IFM_AUTO,                     "autoselect" },                 \
        !           372:        { IFM_AUTO,                     "auto" },                       \
        !           373:        { IFM_MANUAL,                   "manual" },                     \
        !           374:        { IFM_NONE,                     "none" },                       \
        !           375:                                                                        \
        !           376:        { IFM_ETHER|IFM_10_T,           "10baseT" },                    \
        !           377:        { IFM_ETHER|IFM_10_T,           "10baseT/UTP" },                \
        !           378:        { IFM_ETHER|IFM_10_T,           "UTP" },                        \
        !           379:        { IFM_ETHER|IFM_10_T,           "10UTP" },                      \
        !           380:        { IFM_ETHER|IFM_10_2,           "10base2" },                    \
        !           381:        { IFM_ETHER|IFM_10_2,           "10base2/BNC" },                \
        !           382:        { IFM_ETHER|IFM_10_2,           "BNC" },                        \
        !           383:        { IFM_ETHER|IFM_10_2,           "10BNC" },                      \
        !           384:        { IFM_ETHER|IFM_10_5,           "10base5" },                    \
        !           385:        { IFM_ETHER|IFM_10_5,           "10base5/AUI" },                \
        !           386:        { IFM_ETHER|IFM_10_5,           "AUI" },                        \
        !           387:        { IFM_ETHER|IFM_10_5,           "10AUI" },                      \
        !           388:        { IFM_ETHER|IFM_100_TX,         "100baseTX" },                  \
        !           389:        { IFM_ETHER|IFM_100_TX,         "100TX" },                      \
        !           390:        { IFM_ETHER|IFM_100_FX,         "100baseFX" },                  \
        !           391:        { IFM_ETHER|IFM_100_FX,         "100FX" },                      \
        !           392:        { IFM_ETHER|IFM_100_T4,         "100baseT4" },                  \
        !           393:        { IFM_ETHER|IFM_100_T4,         "100T4" },                      \
        !           394:        { IFM_ETHER|IFM_100_VG,         "100baseVG" },                  \
        !           395:        { IFM_ETHER|IFM_100_VG,         "100VG" },                      \
        !           396:        { IFM_ETHER|IFM_100_T2,         "100baseT2" },                  \
        !           397:        { IFM_ETHER|IFM_100_T2,         "100T2" },                      \
        !           398:        { IFM_ETHER|IFM_1000_SX,        "1000baseSX" },                 \
        !           399:        { IFM_ETHER|IFM_1000_SX,        "1000SX" },                     \
        !           400:        { IFM_ETHER|IFM_10_STP,         "10baseSTP" },                  \
        !           401:        { IFM_ETHER|IFM_10_STP,         "STP" },                        \
        !           402:        { IFM_ETHER|IFM_10_STP,         "10STP" },                      \
        !           403:        { IFM_ETHER|IFM_10_FL,          "10baseFL" },                   \
        !           404:        { IFM_ETHER|IFM_10_FL,          "FL" },                         \
        !           405:        { IFM_ETHER|IFM_10_FL,          "10FL" },                       \
        !           406:        { IFM_ETHER|IFM_1000_LX,        "1000baseLX" },                 \
        !           407:        { IFM_ETHER|IFM_1000_LX,        "1000LX" },                     \
        !           408:        { IFM_ETHER|IFM_1000_CX,        "1000baseCX" },                 \
        !           409:        { IFM_ETHER|IFM_1000_CX,        "1000CX" },                     \
        !           410:        { IFM_ETHER|IFM_1000_T,         "1000baseT" },                  \
        !           411:        { IFM_ETHER|IFM_1000_T,         "1000T" },                      \
        !           412:        { IFM_ETHER|IFM_1000_T,         "1000baseTX" },                 \
        !           413:        { IFM_ETHER|IFM_1000_T,         "1000TX" },                     \
        !           414:        { IFM_ETHER|IFM_HPNA_1,         "HomePNA1" },                   \
        !           415:        { IFM_ETHER|IFM_HPNA_1,         "HPNA1" },                      \
        !           416:        { IFM_ETHER|IFM_10G_LR,         "10GbaseLR" },                  \
        !           417:        { IFM_ETHER|IFM_10G_LR,         "10GLR" },                      \
        !           418:        { IFM_ETHER|IFM_10G_LR,         "10GBASE-LR" },                 \
        !           419:        { IFM_ETHER|IFM_10G_SR,         "10GbaseSR" },                  \
        !           420:        { IFM_ETHER|IFM_10G_SR,         "10GSR" },                      \
        !           421:        { IFM_ETHER|IFM_10G_SR,         "10GBASE-SR" },                 \
        !           422:        { IFM_ETHER|IFM_10G_CX4,        "10GbaseCX4" },                 \
        !           423:        { IFM_ETHER|IFM_10G_CX4,        "10GCX4" },                     \
        !           424:        { IFM_ETHER|IFM_10G_CX4,        "10GBASE-CX4" },                \
        !           425:                                                                        \
        !           426:        { IFM_FDDI|IFM_FDDI_SMF,        "Single-mode" },                \
        !           427:        { IFM_FDDI|IFM_FDDI_SMF,        "SMF" },                        \
        !           428:        { IFM_FDDI|IFM_FDDI_MMF,        "Multi-mode" },                 \
        !           429:        { IFM_FDDI|IFM_FDDI_MMF,        "MMF" },                        \
        !           430:        { IFM_FDDI|IFM_FDDI_UTP,        "UTP" },                        \
        !           431:        { IFM_FDDI|IFM_FDDI_UTP,        "CDDI" },                       \
        !           432:                                                                        \
        !           433:        { IFM_IEEE80211|IFM_IEEE80211_FH1,      "FH1" },                \
        !           434:        { IFM_IEEE80211|IFM_IEEE80211_FH2,      "FH2" },                \
        !           435:        { IFM_IEEE80211|IFM_IEEE80211_DS2,      "DS2" },                \
        !           436:        { IFM_IEEE80211|IFM_IEEE80211_DS5,      "DS5" },                \
        !           437:        { IFM_IEEE80211|IFM_IEEE80211_DS11,     "DS11" },               \
        !           438:        { IFM_IEEE80211|IFM_IEEE80211_DS1,      "DS1" },                \
        !           439:        { IFM_IEEE80211|IFM_IEEE80211_DS22,     "DS22" },               \
        !           440:        { IFM_IEEE80211|IFM_IEEE80211_OFDM6,    "OFDM6" },              \
        !           441:        { IFM_IEEE80211|IFM_IEEE80211_OFDM9,    "OFDM9" },              \
        !           442:        { IFM_IEEE80211|IFM_IEEE80211_OFDM12,   "OFDM12" },             \
        !           443:        { IFM_IEEE80211|IFM_IEEE80211_OFDM18,   "OFDM18" },             \
        !           444:        { IFM_IEEE80211|IFM_IEEE80211_OFDM24,   "OFDM24" },             \
        !           445:        { IFM_IEEE80211|IFM_IEEE80211_OFDM36,   "OFDM36" },             \
        !           446:        { IFM_IEEE80211|IFM_IEEE80211_OFDM48,   "OFDM48" },             \
        !           447:        { IFM_IEEE80211|IFM_IEEE80211_OFDM54,   "OFDM54" },             \
        !           448:        { IFM_IEEE80211|IFM_IEEE80211_OFDM72,   "OFDM72" },             \
        !           449:                                                                        \
        !           450:        { IFM_TDM|IFM_TDM_T1,           "t1" },                         \
        !           451:        { IFM_TDM|IFM_TDM_T1_AMI,       "t1-ami" },                     \
        !           452:        { IFM_TDM|IFM_TDM_E1,           "e1" },                         \
        !           453:        { IFM_TDM|IFM_TDM_E1_G704,      "e1-g.704" },                   \
        !           454:        { IFM_TDM|IFM_TDM_E1_AMI,       "e1-ami" },                     \
        !           455:        { IFM_TDM|IFM_TDM_E1_AMI_G704,  "e1-ami-g.704" },               \
        !           456:        { IFM_TDM|IFM_TDM_T3,           "t3" },                         \
        !           457:        { IFM_TDM|IFM_TDM_T3_M13,       "t3-m13" },                     \
        !           458:        { IFM_TDM|IFM_TDM_E3,           "e3" },                         \
        !           459:        { IFM_TDM|IFM_TDM_E3_G751,      "e3-g.751" },                   \
        !           460:        { IFM_TDM|IFM_TDM_E3_G832,      "e3-g.832" },                   \
        !           461:        { IFM_TDM|IFM_TDM_E1_G704_CRC4, "e1-g.704-crc4" },              \
        !           462:                                                                        \
        !           463:        { 0, NULL },                                                    \
        !           464: }
        !           465:
        !           466: #define IFM_MODE_DESCRIPTIONS {                                                \
        !           467:        { IFM_AUTO,                             "autoselect" },         \
        !           468:        { IFM_AUTO,                             "auto" },               \
        !           469:        { IFM_IEEE80211|IFM_IEEE80211_11A,      "11a" },                \
        !           470:        { IFM_IEEE80211|IFM_IEEE80211_11B,      "11b" },                \
        !           471:        { IFM_IEEE80211|IFM_IEEE80211_11G,      "11g" },                \
        !           472:        { IFM_IEEE80211|IFM_IEEE80211_FH,       "fh" },                 \
        !           473:        { IFM_TDM|IFM_TDM_MASTER,               "master" },             \
        !           474:        { 0, NULL },                                                    \
        !           475: }
        !           476:
        !           477: #define        IFM_OPTION_DESCRIPTIONS {                                       \
        !           478:        { IFM_FDX,                      "full-duplex" },                \
        !           479:        { IFM_FDX,                      "fdx" },                        \
        !           480:        { IFM_HDX,                      "half-duplex" },                \
        !           481:        { IFM_HDX,                      "hdx" },                        \
        !           482:        { IFM_FLAG0,                    "flag0" },                      \
        !           483:        { IFM_FLAG1,                    "flag1" },                      \
        !           484:        { IFM_FLAG2,                    "flag2" },                      \
        !           485:        { IFM_LOOP,                     "loopback" },                   \
        !           486:        { IFM_LOOP,                     "hw-loopback"},                 \
        !           487:        { IFM_LOOP,                     "loop" },                       \
        !           488:                                                                        \
        !           489:        { IFM_ETHER|IFM_ETH_MASTER,     "master" },                     \
        !           490:        { IFM_ETHER|IFM_ETH_RXPAUSE,    "rxpause" },                    \
        !           491:        { IFM_ETHER|IFM_ETH_TXPAUSE,    "txpause" },                    \
        !           492:                                                                        \
        !           493:        { IFM_FDDI|IFM_FDDI_DA,         "dual-attach" },                \
        !           494:        { IFM_FDDI|IFM_FDDI_DA,         "das" },                        \
        !           495:                                                                        \
        !           496:        { IFM_IEEE80211|IFM_IEEE80211_ADHOC,    "adhoc" },              \
        !           497:        { IFM_IEEE80211|IFM_IEEE80211_HOSTAP,   "hostap" },             \
        !           498:        { IFM_IEEE80211|IFM_IEEE80211_IBSS,     "ibss" },               \
        !           499:        { IFM_IEEE80211|IFM_IEEE80211_IBSSMASTER, "ibss-master" },      \
        !           500:        { IFM_IEEE80211|IFM_IEEE80211_MONITOR,  "monitor" },            \
        !           501:        { IFM_IEEE80211|IFM_IEEE80211_TURBO,    "turbo" },              \
        !           502:                                                                        \
        !           503:        { IFM_TDM|IFM_TDM_HDLC_CRC16,   "hdlc-crc16" },                 \
        !           504:        { IFM_TDM|IFM_TDM_PPP,          "ppp" },                        \
        !           505:        { IFM_TDM|IFM_TDM_FR_ANSI,      "framerelay-ansi" },            \
        !           506:        { IFM_TDM|IFM_TDM_FR_CISCO,     "framerelay-cisco" },           \
        !           507:        { IFM_TDM|IFM_TDM_FR_ANSI,      "framerelay-itu" },             \
        !           508:                                                                        \
        !           509:        { 0, NULL },                                                    \
        !           510: }
        !           511:
        !           512: /*
        !           513:  * Baudrate descriptions for the various media types.
        !           514:  */
        !           515: struct ifmedia_baudrate {
        !           516:        int     ifmb_word;              /* media word */
        !           517:        int     ifmb_baudrate;          /* corresponding baudrate */
        !           518: };
        !           519:
        !           520: #define        IFM_BAUDRATE_DESCRIPTIONS {                                     \
        !           521:        { IFM_ETHER|IFM_10_T,           IF_Mbps(10) },                  \
        !           522:        { IFM_ETHER|IFM_10_2,           IF_Mbps(10) },                  \
        !           523:        { IFM_ETHER|IFM_10_5,           IF_Mbps(10) },                  \
        !           524:        { IFM_ETHER|IFM_100_TX,         IF_Mbps(100) },                 \
        !           525:        { IFM_ETHER|IFM_100_FX,         IF_Mbps(100) },                 \
        !           526:        { IFM_ETHER|IFM_100_T4,         IF_Mbps(100) },                 \
        !           527:        { IFM_ETHER|IFM_100_VG,         IF_Mbps(100) },                 \
        !           528:        { IFM_ETHER|IFM_100_T2,         IF_Mbps(100) },                 \
        !           529:        { IFM_ETHER|IFM_1000_SX,        IF_Mbps(1000) },                \
        !           530:        { IFM_ETHER|IFM_10_STP,         IF_Mbps(10) },                  \
        !           531:        { IFM_ETHER|IFM_10_FL,          IF_Mbps(10) },                  \
        !           532:        { IFM_ETHER|IFM_1000_LX,        IF_Mbps(1000) },                \
        !           533:        { IFM_ETHER|IFM_1000_CX,        IF_Mbps(1000) },                \
        !           534:        { IFM_ETHER|IFM_1000_T,         IF_Mbps(1000) },                \
        !           535:        { IFM_ETHER|IFM_HPNA_1,         IF_Mbps(1) },                   \
        !           536:        { IFM_ETHER|IFM_10G_LR,         IF_Mbps(1000) },                \
        !           537:        { IFM_ETHER|IFM_10G_SR,         IF_Mbps(1000) },                \
        !           538:        { IFM_ETHER|IFM_10G_CX4,        IF_Mbps(1000) },                \
        !           539:                                                                        \
        !           540:        { IFM_FDDI|IFM_FDDI_SMF,        IF_Mbps(100) },                 \
        !           541:        { IFM_FDDI|IFM_FDDI_MMF,        IF_Mbps(100) },                 \
        !           542:        { IFM_FDDI|IFM_FDDI_UTP,        IF_Mbps(100) },                 \
        !           543:                                                                        \
        !           544:        { IFM_IEEE80211|IFM_IEEE80211_FH1, IF_Mbps(1) },                \
        !           545:        { IFM_IEEE80211|IFM_IEEE80211_FH2, IF_Mbps(2) },                \
        !           546:        { IFM_IEEE80211|IFM_IEEE80211_DS1, IF_Mbps(1) },                \
        !           547:        { IFM_IEEE80211|IFM_IEEE80211_DS2, IF_Mbps(2) },                \
        !           548:        { IFM_IEEE80211|IFM_IEEE80211_DS5, IF_Mbps(5) },                \
        !           549:        { IFM_IEEE80211|IFM_IEEE80211_DS11, IF_Mbps(11) },              \
        !           550:        { IFM_IEEE80211|IFM_IEEE80211_DS22, IF_Mbps(22) },              \
        !           551:        { IFM_IEEE80211|IFM_IEEE80211_OFDM6, IF_Mbps(6) },              \
        !           552:        { IFM_IEEE80211|IFM_IEEE80211_OFDM9, IF_Mbps(9) },              \
        !           553:        { IFM_IEEE80211|IFM_IEEE80211_OFDM12, IF_Mbps(12) },            \
        !           554:        { IFM_IEEE80211|IFM_IEEE80211_OFDM18, IF_Mbps(18) },            \
        !           555:        { IFM_IEEE80211|IFM_IEEE80211_OFDM24, IF_Mbps(24) },            \
        !           556:        { IFM_IEEE80211|IFM_IEEE80211_OFDM36, IF_Mbps(36) },            \
        !           557:        { IFM_IEEE80211|IFM_IEEE80211_OFDM48, IF_Mbps(48) },            \
        !           558:        { IFM_IEEE80211|IFM_IEEE80211_OFDM54, IF_Mbps(54) },            \
        !           559:        { IFM_IEEE80211|IFM_IEEE80211_OFDM72, IF_Mbps(72) },            \
        !           560:                                                                        \
        !           561:        { IFM_TDM|IFM_TDM_T1,           IF_Kbps(1536) },                \
        !           562:        { IFM_TDM|IFM_TDM_T1_AMI,       IF_Kbps(1536) },                \
        !           563:        { IFM_TDM|IFM_TDM_E1,           IF_Kbps(2048) },                \
        !           564:        { IFM_TDM|IFM_TDM_E1_G704,      IF_Kbps(2048) },                \
        !           565:        { IFM_TDM|IFM_TDM_E1_AMI,       IF_Kbps(2048) },                \
        !           566:        { IFM_TDM|IFM_TDM_E1_AMI_G704,  IF_Kbps(2048) },                \
        !           567:        { IFM_TDM|IFM_TDM_T3,           IF_Kbps(44736) },               \
        !           568:        { IFM_TDM|IFM_TDM_T3_M13,       IF_Kbps(44736) },               \
        !           569:        { IFM_TDM|IFM_TDM_E3,           IF_Kbps(34368) },               \
        !           570:        { IFM_TDM|IFM_TDM_E3_G751,      IF_Kbps(34368) },               \
        !           571:        { IFM_TDM|IFM_TDM_E3_G832,      IF_Kbps(34368) },               \
        !           572:        { IFM_TDM|IFM_TDM_E1_G704_CRC4, IF_Kbps(2048) },                \
        !           573:                                                                        \
        !           574:        { 0, 0 },                                                       \
        !           575: }
        !           576:
        !           577: /*
        !           578:  * Status bit descriptions for the various media types.
        !           579:  */
        !           580: struct ifmedia_status_description {
        !           581:        int     ifms_type;
        !           582:        int     ifms_valid;
        !           583:        int     ifms_bit;
        !           584:        const char *ifms_string[2];
        !           585: };
        !           586:
        !           587: #define        IFM_STATUS_DESC(ifms, bit)                                      \
        !           588:        (ifms)->ifms_string[((ifms)->ifms_bit & (bit)) ? 1 : 0]
        !           589:
        !           590: #define        IFM_STATUS_DESCRIPTIONS {                                       \
        !           591:        { IFM_ETHER,            IFM_AVALID,     IFM_ACTIVE,             \
        !           592:            { "no carrier", "active" } },                               \
        !           593:        { IFM_FDDI,             IFM_AVALID,     IFM_ACTIVE,             \
        !           594:            { "no ring", "inserted" } },                                \
        !           595:        { IFM_IEEE80211,        IFM_AVALID,     IFM_ACTIVE,             \
        !           596:            { "no network", "active" } },                               \
        !           597:        { IFM_TDM,              IFM_AVALID,     IFM_ACTIVE,             \
        !           598:            { "no carrier", "active" } },                               \
        !           599:        { IFM_CARP,             IFM_AVALID,     IFM_ACTIVE,             \
        !           600:            { "backup", "master" } },                                   \
        !           601:        { 0,                    0,              0,                      \
        !           602:            { NULL, NULL } }                                            \
        !           603: }
        !           604: #endif /* _NET_IF_MEDIA_H_ */

CVSweb