Annotation of XNU/bsd/net/if_atm.h, revision 1.1.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.