Annotation of embedaddon/quagga/isisd/include-netbsd/esis.h, revision 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>