|
|
1.1 root 1: /*
2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
7: * Reserved. This file contains Original Code and/or Modifications of
8: * Original Code as defined in and that are subject to the Apple Public
9: * Source License Version 1.1 (the "License"). You may not use this file
10: * except in compliance with the License. Please obtain a copy of the
11: * License at http://www.apple.com/publicsource and read it before using
12: * this file.
13: *
14: * The Original Code and all software distributed under the License are
15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
19: * License for the specific language governing rights and limitations
20: * under the License.
21: *
22: * @APPLE_LICENSE_HEADER_END@
23: */
24:
25: /*-
26: * Copyright (c) 1991, 1993
27: * The Regents of the University of California. 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 the University of
40: * California, Berkeley and its contributors.
41: * 4. Neither the name of the University nor the names of its contributors
42: * may be used to endorse or promote products derived from this software
43: * without specific prior written permission.
44: *
45: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
46: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
47: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
48: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
49: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
50: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
51: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
52: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
53: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
54: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
55: * SUCH DAMAGE.
56: *
57: * @(#)eonvar.h 8.1 (Berkeley) 6/10/93
58: */
59:
60: /***********************************************************
61: Copyright IBM Corporation 1987
62:
63: All Rights Reserved
64:
65: Permission to use, copy, modify, and distribute this software and its
66: documentation for any purpose and without fee is hereby granted,
67: provided that the above copyright notice appear in all copies and that
68: both that copyright notice and this permission notice appear in
69: supporting documentation, and that the name of IBM not be
70: used in advertising or publicity pertaining to distribution of the
71: software without specific, written prior permission.
72:
73: IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
74: ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
75: IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
76: ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
77: WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
78: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
79: SOFTWARE.
80:
81: ******************************************************************/
82:
83: /*
84: * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
85: */
86:
87: #define EON_986_VERSION 0x3
88: #define EON_VERSION 0x1
89:
90: #define EON_CACHESIZE 30
91:
92: #define E_FREE 1
93: #define E_LINK 2
94: #define E_ES 3
95: #define E_IS 4
96:
97:
98: /*
99: * this overlays a sockaddr_iso
100: */
101:
102: struct sockaddr_eon {
103: u_char seon_len; /* Length */
104: u_char seon_family; /* AF_ISO */
105: u_char seon_status; /* overlays session suffixlen */
106: #define EON_ESLINK_UP 0x1
107: #define EON_ESLINK_DOWN 0x2
108: #define EON_ISLINK_UP 0x10
109: #define EON_ISLINK_DOWN 0x20
110: /* no change is neither up or down */
111: u_char seon_pad1; /* 0, overlays tsfxlen */
112: u_char seon_adrlen;
113: u_char seon_afi; /* 47 */
114: u_char seon_idi[2]; /* 0006 */
115: u_char seon_vers; /* 03 */
116: u_char seon_glbnum[2]; /* see RFC 1069 */
117: u_char seon_RDN[2]; /* see RFC 1070 */
118: u_char seon_pad2[3]; /* see RFC 1070 */
119: u_char seon_LAREA[2]; /* see RFC 1070 */
120: u_char seon_pad3[2]; /* see RFC 1070 */
121: /* right now ip addr is aligned -- be careful --
122: * future revisions may have it u_char[4]
123: */
124: u_int seon_ipaddr; /* a.b.c.d */
125: u_char seon_protoid; /* NSEL */
126: };
127:
128: #ifdef EON_TEMPLATE
129: struct sockaddr_eon eon_template = {
130: sizeof (eon_template), AF_ISO, 0, 0, 0x14,
131: 0x47, 0x0, 0x6, 0x3, 0
132: };
133: #endif
134:
135: #define DOWNBITS ( EON_ESLINK_DOWN | EON_ISLINK_DOWN )
136: #define UPBITS ( EON_ESLINK_UP | EON_ISLINK_UP )
137:
138: #define SIOCSEONCORE _IOWR('i',10, struct iso_ifreq) /* EON core member */
139: #define SIOCGEONCORE _IOWR('i',11, struct iso_ifreq) /* EON core member */
140:
141: struct eon_hdr {
142: u_char eonh_vers; /* value 1 */
143: u_char eonh_class; /* address multicast class, below */
144: #define EON_NORMAL_ADDR 0x0
145: #define EON_MULTICAST_ES 0x1
146: #define EON_MULTICAST_IS 0x2
147: #define EON_BROADCAST 0x3
148: u_short eonh_csum; /* osi checksum (choke)*/
149: };
150: struct eon_iphdr {
151: struct ip ei_ip;
152: struct eon_hdr ei_eh;
153: };
154: #define EONIPLEN (sizeof(struct eon_hdr) + sizeof(struct ip))
155:
156: /* stole these 2 fields of the flags for I-am-ES and I-am-IS */
157: #define IFF_ES 0x400
158: #define IFF_IS 0x800
159:
160: struct eon_stat {
161: int es_in_multi_es;
162: int es_in_multi_is;
163: int es_in_broad;
164: int es_in_normal;
165: int es_out_multi_es;
166: int es_out_multi_is;
167: int es_out_broad;
168: int es_out_normal;
169: int es_ipout;
170:
171: int es_icmp[PRC_NCMDS];
172: /* errors */
173: int es_badcsum;
174: int es_badhdr;
175: } eonstat;
176:
177: #undef IncStat
178: #define IncStat(xxx) eonstat.xxx++
179:
180: typedef struct qhdr {
181: struct qhdr *link, *rlink;
182: } *queue_t;
183:
184: struct eon_llinfo {
185: struct qhdr el_qhdr; /* keep all in a list */
186: int el_flags; /* cache valid ? */
187: int el_snpaoffset; /* IP address contained in dst nsap */
188: struct rtentry *el_rt; /* back pointer to parent route */
189: struct eon_iphdr el_ei; /* precomputed portion of hdr */
190: struct route el_iproute; /* if direct route cache IP info */
191: /* if gateway, cache secondary route */
192: };
193: #define el_iphdr el_ei.ei_ip
194: #define el_eonhdr el_ei.ei_eh
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.