Annotation of XNU/bsd/net/if_atm.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * The contents of this file constitute Original Code as defined in and
        !             7:  * are subject to the Apple Public Source License Version 1.1 (the
        !             8:  * "License").  You may not use this file except in compliance with the
        !             9:  * License.  Please obtain a copy of the License at
        !            10:  * http://www.apple.com/publicsource and read it before using this file.
        !            11:  * 
        !            12:  * This Original Code and all software distributed under the License are
        !            13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            17:  * License for the specific language governing rights and limitations
        !            18:  * under the License.
        !            19:  * 
        !            20:  * @APPLE_LICENSE_HEADER_END@
        !            21:  */
        !            22: /*      $NetBSD: if_atm.h,v 1.7 1996/11/09 23:02:27 chuck Exp $       */
        !            23: 
        !            24: /*
        !            25:  *
        !            26:  * Copyright (c) 1996 Charles D. Cranor and Washington University.
        !            27:  * All rights reserved.
        !            28:  *
        !            29:  * Redistribution and use in source and binary forms, with or without
        !            30:  * modification, are permitted provided that the following conditions
        !            31:  * are met:
        !            32:  * 1. Redistributions of source code must retain the above copyright
        !            33:  *    notice, this list of conditions and the following disclaimer.
        !            34:  * 2. Redistributions in binary form must reproduce the above copyright
        !            35:  *    notice, this list of conditions and the following disclaimer in the
        !            36:  *    documentation and/or other materials provided with the distribution.
        !            37:  * 3. All advertising materials mentioning features or use of this software
        !            38:  *    must display the following acknowledgement:
        !            39:  *      This product includes software developed by Charles D. Cranor and
        !            40:  *     Washington University.
        !            41:  * 4. The name of the author may not be used to endorse or promote products
        !            42:  *    derived from this software without specific prior written permission.
        !            43:  *
        !            44:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            45:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            46:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            47:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
        !            48:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
        !            49:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
        !            50:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
        !            51:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
        !            52:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
        !            53:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        !            54:  */
        !            55: 
        !            56: /*
        !            57:  * net/if_atm.h
        !            58:  */
        !            59: 
        !            60: 
        !            61: #ifndef NO_ATM_PVCEXT
        !            62: /*
        !            63:  * ATM_PVCEXT enables PVC extention: VP/VC shaping
        !            64:  * and PVC shadow interfaces.
        !            65:  */
        !            66: #define ATM_PVCEXT     /* enable pvc extention */
        !            67: #endif
        !            68: 
        !            69: #if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__)
        !            70: #define RTALLOC1(A,B)          rtalloc1((A),(B))
        !            71: #elif defined(__FreeBSD__)
        !            72: #define RTALLOC1(A,B)          rtalloc1((A),(B),0UL)
        !            73: #endif
        !            74: 
        !            75: /*
        !            76:  * pseudo header for packet transmission
        !            77:  */
        !            78: struct atm_pseudohdr {
        !            79:   u_int8_t atm_ph[4];  /* flags+VPI+VCI1(msb)+VCI2(lsb) */
        !            80: };
        !            81: 
        !            82: #define ATM_PH_FLAGS(X)        ((X)->atm_ph[0])
        !            83: #define ATM_PH_VPI(X)  ((X)->atm_ph[1])
        !            84: #define ATM_PH_VCI(X)  ((((X)->atm_ph[2]) << 8) | ((X)->atm_ph[3]))
        !            85: #define ATM_PH_SETVCI(X,V) { \
        !            86:        (X)->atm_ph[2] = ((V) >> 8) & 0xff; \
        !            87:        (X)->atm_ph[3] = ((V) & 0xff); \
        !            88: }
        !            89: 
        !            90: #define ATM_PH_AAL5    0x01    /* use AAL5? (0 == aal0) */
        !            91: #define ATM_PH_LLCSNAP 0x02    /* use the LLC SNAP encoding (iff aal5) */
        !            92: 
        !            93: #if ATM_PVCEXT
        !            94: #define ATM_PH_INERNAL  0x20   /* reserve for kernel internal use */
        !            95: #endif
        !            96: #define ATM_PH_DRIVER7  0x40   /* reserve for driver's use */
        !            97: #define ATM_PH_DRIVER8  0x80   /* reserve for driver's use */
        !            98: 
        !            99: #define ATMMTU         9180    /* ATM MTU size for IP */
        !           100:                                /* XXX: could be 9188 with LLC/SNAP according
        !           101:                                        to comer */
        !           102: 
        !           103: /* user's ioctl hook for raw atm mode */
        !           104: #define SIOCRAWATM     _IOWR('a', 122, int)    /* set driver's raw mode */
        !           105: 
        !           106: /* atm_pseudoioctl: turns on and off RX VCIs  [for internal use only!] */
        !           107: struct atm_pseudoioctl {
        !           108:   struct atm_pseudohdr aph;
        !           109:   void *rxhand;
        !           110: };
        !           111: #define SIOCATMENA     _IOWR('a', 123, struct atm_pseudoioctl) /* enable */
        !           112: #define SIOCATMDIS     _IOWR('a', 124, struct atm_pseudoioctl) /* disable */
        !           113: 
        !           114: #if ATM_PVCEXT
        !           115: 
        !           116: /* structure to control PVC transmitter */
        !           117: struct pvctxreq {
        !           118:     /* first entry must be compatible with struct ifreq */
        !           119:     char pvc_ifname[IFNAMSIZ];         /* if name, e.g. "en0" */
        !           120:     struct atm_pseudohdr pvc_aph;      /* (flags) + vpi:vci */
        !           121:     struct atm_pseudohdr pvc_joint;    /* for vp shaping: another vc
        !           122:                                           to share the shaper */
        !           123:     int pvc_pcr;                       /* peak cell rate (shaper value) */
        !           124: };
        !           125: 
        !           126: /* use ifioctl for now */
        !           127: #define SIOCSPVCTX     _IOWR('i', 95, struct pvctxreq)
        !           128: #define SIOCGPVCTX     _IOWR('i', 96, struct pvctxreq)
        !           129: #define SIOCSPVCSIF    _IOWR('i', 97, struct ifreq)
        !           130: #define SIOCGPVCSIF    _IOWR('i', 98, struct ifreq)
        !           131: 
        !           132: #ifdef KERNEL
        !           133: #define ATM_PH_PVCSIF  ATM_PH_INERNAL  /* pvc shadow interface */
        !           134: #endif
        !           135: #endif /* ATM_PVCEXT */
        !           136: 
        !           137: /*
        !           138:  * XXX forget all the garbage in if_llc.h and do it the easy way
        !           139:  */
        !           140: 
        !           141: #define ATMLLC_HDR "\252\252\3\0\0\0"
        !           142: struct atmllc {
        !           143:   u_int8_t llchdr[6];  /* aa.aa.03.00.00.00 */
        !           144:   u_int8_t type[2];    /* "ethernet" type */
        !           145: };
        !           146: 
        !           147: /* ATM_LLC macros: note type code in host byte order */
        !           148: #define ATM_LLC_TYPE(X) (((X)->type[0] << 8) | ((X)->type[1]))
        !           149: #define ATM_LLC_SETTYPE(X,V) { \
        !           150:        (X)->type[1] = ((V) >> 8) & 0xff; \
        !           151:        (X)->type[0] = ((V) & 0xff); \
        !           152: }
        !           153: 
        !           154: #ifdef KERNEL
        !           155: void   atm_ifattach __P((struct ifnet *));
        !           156: void   atm_input __P((struct ifnet *, struct atm_pseudohdr *,
        !           157:                struct mbuf *, void *));
        !           158: int    atm_output __P((struct ifnet *, struct mbuf *, struct sockaddr *, 
        !           159:                struct rtentry *));
        !           160: #endif
        !           161: #if ATM_PVCEXT
        !           162: char *shadow2if __P((char *));
        !           163: #ifdef KERNEL
        !           164: struct ifnet *pvc_attach __P((struct ifnet *));
        !           165: int pvc_setaph __P((struct ifnet *, struct atm_pseudohdr *));
        !           166: #endif
        !           167: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.