[BACK]Return to natm.h CVS log [TXT][DIR] Up to [local] / sys / netnatm

Annotation of sys/netnatm/natm.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: natm.h,v 1.6 2002/03/14 01:27:12 millert 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:  * natm.h: native mode atm
        !            37:  */
        !            38:
        !            39:
        !            40: /*
        !            41:  * supported protocols
        !            42:  */
        !            43:
        !            44: #define PROTO_NATMAAL0         1
        !            45: #define PROTO_NATMAAL5         2
        !            46:
        !            47: /*
        !            48:  * sockaddr_natm
        !            49:  */
        !            50:
        !            51: struct sockaddr_natm {
        !            52:   u_int8_t     snatm_len;              /* length */
        !            53:   u_int8_t     snatm_family;           /* AF_NATM */
        !            54:   char         snatm_if[IFNAMSIZ];     /* interface name */
        !            55:   u_int16_t    snatm_vci;              /* vci */
        !            56:   u_int8_t     snatm_vpi;              /* vpi */
        !            57: };
        !            58:
        !            59:
        !            60: #if defined(__FreeBSD__) && defined(KERNEL)
        !            61:
        !            62: #ifndef _KERNEL
        !            63: #define _KERNEL
        !            64: #endif
        !            65:
        !            66: #define SPLSOFTNET() splnet()
        !            67:
        !            68: #elif defined(__NetBSD__) || defined(__OpenBSD__)
        !            69:
        !            70: #define SPLSOFTNET() splsoftnet()
        !            71:
        !            72: #endif
        !            73:
        !            74: #ifdef _KERNEL
        !            75:
        !            76: /*
        !            77:  * natm protocol control block
        !            78:  */
        !            79:
        !            80: struct natmpcb {
        !            81:   LIST_ENTRY(natmpcb) pcblist;         /* list pointers */
        !            82:   u_int        npcb_inq;                       /* # of our pkts in proto q */
        !            83:   struct socket        *npcb_socket;           /* backpointer to socket */
        !            84:   struct ifnet *npcb_ifp;              /* pointer to hardware */
        !            85:   struct in_addr ipaddr;               /* remote IP address, if NPCB_IP */
        !            86:   u_int16_t npcb_vci;                  /* VCI */
        !            87:   u_int8_t npcb_vpi;                   /* VPI */
        !            88:   u_int8_t npcb_flags;                 /* flags */
        !            89: };
        !            90:
        !            91: /* flags */
        !            92: #define NPCB_FREE      0x01            /* free (not on any list) */
        !            93: #define NPCB_CONNECTED 0x02            /* connected */
        !            94: #define NPCB_IP                0x04            /* used by IP */
        !            95: #define NPCB_DRAIN     0x08            /* destory as soon as inq == 0 */
        !            96: #define NPCB_RAW       0x10            /* in 'raw' mode? */
        !            97:
        !            98: /* flag arg to npcb_free */
        !            99: #define NPCB_REMOVE    0               /* remove from global list */
        !           100: #define NPCB_DESTROY   1               /* destroy and be free */
        !           101:
        !           102: /*
        !           103:  * NPCB_RAWCC is a hack which applies to connections in 'raw' mode.   it
        !           104:  * is used to override the sbspace() macro when you *really* don't want
        !           105:  * to drop rcv data.   the recv socket buffer size is raised to this value.
        !           106:  *
        !           107:  * XXX: socket buffering needs to be looked at.
        !           108:  */
        !           109:
        !           110: #define NPCB_RAWCC (1024*1024)         /* 1MB */
        !           111:
        !           112: LIST_HEAD(npcblist, natmpcb);
        !           113:
        !           114: /* global data structures */
        !           115:
        !           116: struct npcblist natm_pcbs;             /* global list of pcbs */
        !           117: extern struct ifqueue natmintrq;       /* natm packet input queue */
        !           118: #define        NATM_STAT
        !           119: #ifdef NATM_STAT
        !           120: extern u_int natm_sodropcnt,
        !           121:                natm_sodropbytes;       /* account of droppage */
        !           122: extern u_int natm_sookcnt,
        !           123:                natm_sookbytes;         /* account of ok */
        !           124: #endif
        !           125:
        !           126: /* atm_rawioctl: kernel's version of SIOCRAWATM [for internal use only!] */
        !           127: struct atm_rawioctl {
        !           128:   struct natmpcb *npcb;
        !           129:   int rawvalue;
        !           130: };
        !           131: #define SIOCXRAWATM     _IOWR('a', 125, struct atm_rawioctl)
        !           132:
        !           133: /* external functions */
        !           134:
        !           135: /* natm_pcb.c */
        !           136: struct natmpcb *npcb_alloc(int);
        !           137: void   npcb_free(struct natmpcb *, int);
        !           138: struct natmpcb *npcb_add(struct natmpcb *, struct ifnet *, int, int);
        !           139:
        !           140: /* natm.c */
        !           141: #if defined(__NetBSD__)
        !           142: int    natm_usrreq(struct socket *, int, struct mbuf *,
        !           143:                              struct mbuf *, struct mbuf *, struct proc *);
        !           144: #elif defined(__OpenBSD__) || defined(FreeBSD)
        !           145: int    natm_usrreq(struct socket *, int, struct mbuf *,
        !           146:                              struct mbuf *, struct mbuf *);
        !           147: #endif
        !           148: int    natm0_sysctl(int *, u_int, void *, size_t *, void *, size_t);
        !           149: int    natm5_sysctl(int *, u_int, void *, size_t *, void *, size_t);
        !           150: void   natmintr(void);
        !           151:
        !           152: #endif

CVSweb