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

Annotation of sys/net/if_atm.h, Revision 1.1.1.1

1.1       nbrk        1: /*      $OpenBSD: if_atm.h,v 1.12 2006/06/17 10:22:06 henning Exp $       */
                      2:
                      3: /*
                      4:  *
                      5:  * Copyright (c) 1996 Charles D. Cranor and Washington University.
                      6:  * All rights reserved.
                      7:  *
                      8:  * Redistribution and use in source and binary forms, with or without
                      9:  * modification, are permitted provided that the following conditions
                     10:  * are met:
                     11:  * 1. Redistributions of source code must retain the above copyright
                     12:  *    notice, this list of conditions and the following disclaimer.
                     13:  * 2. Redistributions in binary form must reproduce the above copyright
                     14:  *    notice, this list of conditions and the following disclaimer in the
                     15:  *    documentation and/or other materials provided with the distribution.
                     16:  * 3. All advertising materials mentioning features or use of this software
                     17:  *    must display the following acknowledgement:
                     18:  *      This product includes software developed by Charles D. Cranor and
                     19:  *     Washington University.
                     20:  * 4. The name of the author may not be used to endorse or promote products
                     21:  *    derived from this software without specific prior written permission.
                     22:  *
                     23:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     24:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     25:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     26:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
                     27:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     28:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     29:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
                     30:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                     31:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
                     32:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     33:  */
                     34:
                     35: /*
                     36:  * net/if_atm.h
                     37:  */
                     38: #ifndef _NET_IF_ATM_H_
                     39: #define _NET_IF_ATM_H_
                     40:
                     41: #define RTALLOC1(A,B)          rtalloc1((A),(B), 0)
                     42:
                     43: /*
                     44:  * pseudo header for packet transmission
                     45:  */
                     46:
                     47: struct atm_pseudohdr {
                     48:   u_int8_t atm_ph[4];  /* flags+VPI+VCI1(msb)+VCI2(lsb) */
                     49: };
                     50:
                     51: #define ATM_PH_FLAGS(X)        ((X)->atm_ph[0])
                     52: #define ATM_PH_VPI(X)  ((X)->atm_ph[1])
                     53: #define ATM_PH_VCI(X)  ((((X)->atm_ph[2]) << 8) | ((X)->atm_ph[3]))
                     54: #define ATM_PH_SETVCI(X,V) { \
                     55:        (X)->atm_ph[2] = ((V) >> 8) & 0xff; \
                     56:        (X)->atm_ph[3] = ((V) & 0xff); \
                     57: }
                     58:
                     59: #define ATM_PH_AAL5    0x01    /* use AAL5? (0 == aal0) */
                     60: #define ATM_PH_LLCSNAP 0x02    /* use the LLC SNAP encoding (iff aal5) */
                     61:
                     62: #define ATM_PH_DRIVER7  0x40   /* reserve for driver's use */
                     63: #define ATM_PH_DRIVER8  0x80   /* reserve for driver's use */
                     64:
                     65: #define ATMMTU         9180    /* ATM MTU size for IP */
                     66:                                /* XXX: could be 9188 with LLC/SNAP according
                     67:                                        to comer */
                     68:
                     69: /* user's ioctl hook for raw atm mode */
                     70: #define SIOCRAWATM     _IOWR('a', 122, int)    /* set driver's raw mode */
                     71:
                     72: /* atm_pseudoioctl: turns on and off RX VCIs  [for internal use only!] */
                     73: struct atm_pseudoioctl {
                     74:   struct atm_pseudohdr aph;
                     75:   void *rxhand;
                     76: };
                     77: #define SIOCATMENA     _IOWR('a', 123, struct atm_pseudoioctl) /* enable */
                     78: #define SIOCATMDIS     _IOWR('a', 124, struct atm_pseudoioctl) /* disable */
                     79:
                     80: /*
                     81:  * XXX forget all the garbage in if_llc.h and do it the easy way
                     82:  */
                     83:
                     84: #define ATMLLC_HDR "\252\252\3\0\0\0"
                     85: struct atmllc {
                     86:   u_int8_t llchdr[6];  /* aa.aa.03.00.00.00 */
                     87:   u_int8_t type[2];    /* "ethernet" type */
                     88: };
                     89:
                     90: /* ATM_LLC macros: note type code in host byte order */
                     91: #define ATM_LLC_TYPE(X) (((X)->type[0] << 8) | ((X)->type[1]))
                     92: #define ATM_LLC_SETTYPE(X,V) { \
                     93:        (X)->type[0] = ((V) >> 8) & 0xff; \
                     94:        (X)->type[1] = ((V) & 0xff); \
                     95: }
                     96:
                     97: #ifdef _KERNEL
                     98: void   atm_ifattach(struct ifnet *);
                     99: void   atm_input(struct ifnet *, struct atm_pseudohdr *,
                    100:                struct mbuf *, void *);
                    101: int    atm_output(struct ifnet *, struct mbuf *, struct sockaddr *,
                    102:                struct rtentry *);
                    103: #endif /* _KERNEL */
                    104: #endif /* _NET_IF_ATM_H_ */

CVSweb