Annotation of embedaddon/quagga/isisd/include-netbsd/esis.h, revision 1.1.1.1

1.1       misho       1: /*     $NetBSD: esis.h,v 1.11 1997/11/03 15:01:19 is Exp $     */
                      2: 
                      3: /*-
                      4:  * Copyright (c) 1991, 1993
                      5:  *     The Regents of the University of California.  All rights reserved.
                      6:  *
                      7:  * Redistribution and use in source and binary forms, with or without
                      8:  * modification, are permitted provided that the following conditions
                      9:  * are met:
                     10:  * 1. Redistributions of source code must retain the above copyright
                     11:  *    notice, this list of conditions and the following disclaimer.
                     12:  * 2. Redistributions in binary form must reproduce the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer in the
                     14:  *    documentation and/or other materials provided with the distribution.
                     15:  * 3. All advertising materials mentioning features or use of this software
                     16:  *    must display the following acknowledgement:
                     17:  *     This product includes software developed by the University of
                     18:  *     California, Berkeley and its contributors.
                     19:  * 4. Neither the name of the University nor the names of its contributors
                     20:  *    may be used to endorse or promote products derived from this software
                     21:  *    without specific prior written permission.
                     22:  *
                     23:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     24:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     25:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     26:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     27:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     28:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     29:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     30:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     31:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     32:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     33:  * SUCH DAMAGE.
                     34:  *
                     35:  *     @(#)esis.h      8.1 (Berkeley) 6/10/93
                     36:  */
                     37: 
                     38: /***********************************************************
                     39:                Copyright IBM Corporation 1987
                     40: 
                     41:                       All Rights Reserved
                     42: 
                     43: Permission to use, copy, modify, and distribute this software and its
                     44: documentation for any purpose and without fee is hereby granted,
                     45: provided that the above copyright notice appear in all copies and that
                     46: both that copyright notice and this permission notice appear in
                     47: supporting documentation, and that the name of IBM not be
                     48: used in advertising or publicity pertaining to distribution of the
                     49: software without specific, written prior permission.
                     50: 
                     51: IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
                     52: ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
                     53: IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
                     54: ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
                     55: WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
                     56: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
                     57: SOFTWARE.
                     58: 
                     59: ******************************************************************/
                     60: 
                     61: /*
                     62:  * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
                     63:  */
                     64: 
                     65: #include <machine/endian.h>
                     66: 
                     67: #define        SNPAC_AGE               60      /* seconds */
                     68: #define        ESIS_CONFIG             60      /* seconds */
                     69: #define        ESIS_HT                 (ESIS_CONFIG * 2)
                     70: 
                     71: /*
                     72:  *     Fixed part of an ESIS header
                     73:  */
                     74: struct esis_fixed {
                     75:        u_char          esis_proto_id;  /* network layer protocol identifier */
                     76:        u_char          esis_hdr_len;   /* length indicator (octets) */
                     77:        u_char          esis_vers;      /* version/protocol identifier
                     78:                                         * extension */
                     79:        u_char          esis_res1;      /* reserved */
                     80:        u_char          esis_type;      /* type code */
                     81:        /* technically, type should be &='d 0x1f */
                     82: #define ESIS_ESH       0x02    /* End System Hello */
                     83: #define ESIS_ISH       0x04    /* Intermediate System Hello */
                     84: #define ESIS_RD                0x06    /* Redirect */
                     85:        u_char          esis_ht_msb;    /* holding time (seconds) high byte */
                     86:        u_char          esis_ht_lsb;    /* holding time (seconds) low byte */
                     87:        u_char          esis_cksum_msb; /* checksum high byte */
                     88:        u_char          esis_cksum_lsb; /* checksum low byte */
                     89: } __attribute__((packed));
                     90: /*
                     91:  * Values for ESIS datagram options
                     92:  */
                     93: #define ESISOVAL_NETMASK       0xe1    /* address mask option, RD PDU only */
                     94: #define ESISOVAL_SNPAMASK      0xe2    /* snpa mask option, RD PDU only */
                     95: #define ESISOVAL_ESCT          0xc6    /* end system conf. timer, ISH PDU
                     96:                                         * only */
                     97: 
                     98: 
                     99: #define        ESIS_CKSUM_OFF          0x07
                    100: #define ESIS_CKSUM_REQUIRED(pdu)\
                    101:        ((pdu->esis_cksum_msb != 0) || (pdu->esis_cksum_lsb != 0))
                    102: 
                    103: #define        ESIS_VERSION    1
                    104: 
                    105: struct esis_stat {
                    106:        u_short         es_nomem;       /* insufficient memory to send hello */
                    107:        u_short         es_badcsum;     /* incorrect checksum */
                    108:        u_short         es_badvers;     /* incorrect version number */
                    109:        u_short         es_badtype;     /* unknown pdu type field */
                    110:        u_short         es_toosmall;    /* packet too small */
                    111:        u_short         es_eshsent;     /* ESH sent */
                    112:        u_short         es_eshrcvd;     /* ESH rcvd */
                    113:        u_short         es_ishsent;     /* ISH sent */
                    114:        u_short         es_ishrcvd;     /* ISH rcvd */
                    115:        u_short         es_rdsent;      /* RD sent */
                    116:        u_short         es_rdrcvd;      /* RD rcvd */
                    117: };
                    118: 
                    119: #ifdef _KERNEL
                    120: struct esis_stat esis_stat;
                    121: struct socket;
                    122: struct mbuf;
                    123: struct snpa_hdr;
                    124: struct clnp_optidx;
                    125: struct iso_addr;
                    126: struct rtentry;
                    127: struct sockaddr_dl;
                    128: 
                    129: void esis_init __P((void));
                    130: int esis_usrreq __P((struct socket *, int, struct mbuf *, struct mbuf *,
                    131:                     struct mbuf *, struct proc *));
                    132: void esis_input __P((struct mbuf *, ...));
                    133: void esis_rdoutput __P((struct snpa_hdr *, struct mbuf *, struct clnp_optidx *,
                    134:                        struct iso_addr *, struct rtentry *));
                    135: int esis_insert_addr __P((caddr_t *, int *, struct iso_addr *, struct mbuf *,
                    136:                          int));
                    137: void esis_eshinput __P((struct mbuf *, struct snpa_hdr *));
                    138: void esis_ishinput __P((struct mbuf *, struct snpa_hdr *));
                    139: void esis_rdinput __P((struct mbuf *, struct snpa_hdr *));
                    140: void esis_config __P((void *));
                    141: void esis_shoutput __P((struct ifnet *, int, int, caddr_t, int,
                    142:                       struct iso_addr *));
                    143: void isis_input __P((struct mbuf *, ...));
                    144: int isis_output __P((struct mbuf *, ...));
                    145: void *esis_ctlinput __P((int, struct sockaddr *, void *));
                    146: #endif /* _KERNEL */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>