xref: /csrg-svn/sys/netiso/eonvar.h (revision 36378)
1*36378Ssklower /***********************************************************
2*36378Ssklower 		Copyright IBM Corporation 1987
3*36378Ssklower 
4*36378Ssklower                       All Rights Reserved
5*36378Ssklower 
6*36378Ssklower Permission to use, copy, modify, and distribute this software and its
7*36378Ssklower documentation for any purpose and without fee is hereby granted,
8*36378Ssklower provided that the above copyright notice appear in all copies and that
9*36378Ssklower both that copyright notice and this permission notice appear in
10*36378Ssklower supporting documentation, and that the name of IBM not be
11*36378Ssklower used in advertising or publicity pertaining to distribution of the
12*36378Ssklower software without specific, written prior permission.
13*36378Ssklower 
14*36378Ssklower IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
15*36378Ssklower ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
16*36378Ssklower IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
17*36378Ssklower ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
18*36378Ssklower WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
19*36378Ssklower ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
20*36378Ssklower SOFTWARE.
21*36378Ssklower 
22*36378Ssklower ******************************************************************/
23*36378Ssklower 
24*36378Ssklower /*
25*36378Ssklower  * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
26*36378Ssklower  */
27*36378Ssklower 
28*36378Ssklower #define EON_986_VERSION 0x3
29*36378Ssklower #define EON_VERSION 0x1
30*36378Ssklower 
31*36378Ssklower #define EON_CACHESIZE 30
32*36378Ssklower 
33*36378Ssklower #define E_FREE 	1
34*36378Ssklower #define E_LINK	2
35*36378Ssklower #define E_ES 	3
36*36378Ssklower #define E_IS 	4
37*36378Ssklower 
38*36378Ssklower 
39*36378Ssklower /*
40*36378Ssklower  * this overlays a sockaddr_iso
41*36378Ssklower  */
42*36378Ssklower 
43*36378Ssklower struct sockaddr_eon {
44*36378Ssklower 	short 			seon_family;	/* AF_ISO */
45*36378Ssklower 	u_short			seon_status;	/* overlays transport suffix */
46*36378Ssklower #define EON_ESLINK_UP		0x1
47*36378Ssklower #define EON_ESLINK_DOWN		0x2
48*36378Ssklower #define EON_ISLINK_UP		0x10
49*36378Ssklower #define EON_ISLINK_DOWN		0x20
50*36378Ssklower /* no change is neither up or down */
51*36378Ssklower 
52*36378Ssklower 	u_char			seon_afi;		/* 47 */
53*36378Ssklower 	u_char			seon_idi[2];	/* 0006 */
54*36378Ssklower 	u_char			seon_vers;		/* 03 */
55*36378Ssklower 		/* right now ip addr is  aligned  -- be careful --
56*36378Ssklower 		 * future revisions may have it u_char[4]
57*36378Ssklower 		 */
58*36378Ssklower 	u_int			seon_ipaddr;	/* a.b.c.d */
59*36378Ssklower 	u_char			seon_protoid[1]; /* */
60*36378Ssklower 	u_char			seon_adrlen;
61*36378Ssklower 	u_short			seon_netype[2];
62*36378Ssklower };
63*36378Ssklower 
64*36378Ssklower struct sockaddr_eon eon_template = {
65*36378Ssklower 	AF_ISO, 0, 0x47, 0x0, 0x6, 0x3,
66*36378Ssklower 	0,
67*36378Ssklower 	0,
68*36378Ssklower 	0xa,
69*36378Ssklower 	0
70*36378Ssklower };
71*36378Ssklower 
72*36378Ssklower #define DOWNBITS ( EON_ESLINK_DOWN | EON_ISLINK_DOWN )
73*36378Ssklower #define UPBITS ( EON_ESLINK_UP | EON_ISLINK_UP )
74*36378Ssklower 
75*36378Ssklower struct eon_hdr {
76*36378Ssklower 	u_char 	eonh_vers; /* value 1 */
77*36378Ssklower 	u_char 	eonh_class;  /* address multicast class, below */
78*36378Ssklower #define		EON_NORMAL_ADDR		0x0
79*36378Ssklower #define		EON_MULTICAST_ES	0x1
80*36378Ssklower #define		EON_MULTICAST_IS	0x2
81*36378Ssklower #define		EON_BROADCAST		0x3
82*36378Ssklower 	u_short eonh_csum;  /* osi checksum (choke)*/
83*36378Ssklower };
84*36378Ssklower 
85*36378Ssklower /* stole these 2 fields of the flags for I-am-ES and I-am-IS */
86*36378Ssklower #define	IFF_ES	0x400
87*36378Ssklower #define	IFF_IS	0x800
88*36378Ssklower 
89*36378Ssklower struct eon_stat {
90*36378Ssklower 	int	es_in_multi_es;
91*36378Ssklower 	int	es_in_multi_is;
92*36378Ssklower 	int	es_in_broad;
93*36378Ssklower 	int	es_in_normal;
94*36378Ssklower 	int	es_out_multi_es;
95*36378Ssklower 	int	es_out_multi_is;
96*36378Ssklower 	int	es_out_broad;
97*36378Ssklower 	int	es_out_normal;
98*36378Ssklower 	int	es_ipout;
99*36378Ssklower 
100*36378Ssklower 	int	es_icmp[PRC_NCMDS];
101*36378Ssklower 	/* errors */
102*36378Ssklower 	int	es_badcsum;
103*36378Ssklower 	int	es_badhdr;
104*36378Ssklower } eonstat;
105*36378Ssklower 
106*36378Ssklower #undef IncStat
107*36378Ssklower #define IncStat(xxx) eonstat.xxx++
108