xref: /csrg-svn/sys/netiso/eonvar.h (revision 37469)
136378Ssklower /***********************************************************
236378Ssklower 		Copyright IBM Corporation 1987
336378Ssklower 
436378Ssklower                       All Rights Reserved
536378Ssklower 
636378Ssklower Permission to use, copy, modify, and distribute this software and its
736378Ssklower documentation for any purpose and without fee is hereby granted,
836378Ssklower provided that the above copyright notice appear in all copies and that
936378Ssklower both that copyright notice and this permission notice appear in
1036378Ssklower supporting documentation, and that the name of IBM not be
1136378Ssklower used in advertising or publicity pertaining to distribution of the
1236378Ssklower software without specific, written prior permission.
1336378Ssklower 
1436378Ssklower IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
1536378Ssklower ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
1636378Ssklower IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
1736378Ssklower ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
1836378Ssklower WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
1936378Ssklower ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
2036378Ssklower SOFTWARE.
2136378Ssklower 
2236378Ssklower ******************************************************************/
2336378Ssklower 
2436378Ssklower /*
2536378Ssklower  * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
26*37469Ssklower  *	@(#)eonvar.h	7.2 (Berkeley) 04/22/89
2736378Ssklower  */
2836378Ssklower 
2936378Ssklower #define EON_986_VERSION 0x3
3036378Ssklower #define EON_VERSION 0x1
3136378Ssklower 
3236378Ssklower #define EON_CACHESIZE 30
3336378Ssklower 
3436378Ssklower #define E_FREE 	1
3536378Ssklower #define E_LINK	2
3636378Ssklower #define E_ES 	3
3736378Ssklower #define E_IS 	4
3836378Ssklower 
3936378Ssklower 
4036378Ssklower /*
4136378Ssklower  * this overlays a sockaddr_iso
4236378Ssklower  */
4336378Ssklower 
4436378Ssklower struct sockaddr_eon {
45*37469Ssklower 	u_char 			seon_len;	/* Length */
46*37469Ssklower 	u_char 			seon_family;	/* AF_ISO */
47*37469Ssklower 	u_char			seon_status;	/* overlays session suffixlen */
4836378Ssklower #define EON_ESLINK_UP		0x1
4936378Ssklower #define EON_ESLINK_DOWN		0x2
5036378Ssklower #define EON_ISLINK_UP		0x10
5136378Ssklower #define EON_ISLINK_DOWN		0x20
5236378Ssklower /* no change is neither up or down */
53*37469Ssklower 	u_char			seon_pad1;	/* 0, overlays tsfxlen */
54*37469Ssklower 	u_char			seon_adrlen;
5536378Ssklower 	u_char			seon_afi;		/* 47 */
5636378Ssklower 	u_char			seon_idi[2];	/* 0006 */
5736378Ssklower 	u_char			seon_vers;		/* 03 */
58*37469Ssklower 	u_char			seon_glbnum[2];	/* see RFC 1069 */
59*37469Ssklower 	u_char			seon_RDN[2];	/* see RFC 1070 */
60*37469Ssklower 	u_char			seon_pad2[3];	/* see RFC 1070 */
61*37469Ssklower 	u_char			seon_LAREA[2];	/* see RFC 1070 */
62*37469Ssklower 	u_char			seon_pad3[2];	/* see RFC 1070 */
6336378Ssklower 		/* right now ip addr is  aligned  -- be careful --
6436378Ssklower 		 * future revisions may have it u_char[4]
6536378Ssklower 		 */
6636378Ssklower 	u_int			seon_ipaddr;	/* a.b.c.d */
67*37469Ssklower 	u_char			seon_protoid;	/* NSEL */
6836378Ssklower };
6936378Ssklower 
70*37469Ssklower #ifdef EON_TEMPLATE
7136378Ssklower struct sockaddr_eon eon_template = {
72*37469Ssklower 	sizeof (eon_template), AF_ISO, 0, 0, 0x14,
73*37469Ssklower 	0x47, 0x0, 0x6, 0x3, 0
7436378Ssklower };
75*37469Ssklower #endif
7636378Ssklower 
7736378Ssklower #define DOWNBITS ( EON_ESLINK_DOWN | EON_ISLINK_DOWN )
7836378Ssklower #define UPBITS ( EON_ESLINK_UP | EON_ISLINK_UP )
7936378Ssklower 
80*37469Ssklower #define	SIOCSEONCORE _IOWR('i',10, struct iso_ifreq) /* EON core member */
81*37469Ssklower #define	SIOCGEONCORE _IOWR('i',11, struct iso_ifreq) /* EON core member */
82*37469Ssklower 
8336378Ssklower struct eon_hdr {
8436378Ssklower 	u_char 	eonh_vers; /* value 1 */
8536378Ssklower 	u_char 	eonh_class;  /* address multicast class, below */
8636378Ssklower #define		EON_NORMAL_ADDR		0x0
8736378Ssklower #define		EON_MULTICAST_ES	0x1
8836378Ssklower #define		EON_MULTICAST_IS	0x2
8936378Ssklower #define		EON_BROADCAST		0x3
9036378Ssklower 	u_short eonh_csum;  /* osi checksum (choke)*/
9136378Ssklower };
92*37469Ssklower #define EONIPLEN (sizeof(struct eon_hdr) + sizeof(struct ip))
9336378Ssklower 
9436378Ssklower /* stole these 2 fields of the flags for I-am-ES and I-am-IS */
9536378Ssklower #define	IFF_ES	0x400
9636378Ssklower #define	IFF_IS	0x800
9736378Ssklower 
9836378Ssklower struct eon_stat {
9936378Ssklower 	int	es_in_multi_es;
10036378Ssklower 	int	es_in_multi_is;
10136378Ssklower 	int	es_in_broad;
10236378Ssklower 	int	es_in_normal;
10336378Ssklower 	int	es_out_multi_es;
10436378Ssklower 	int	es_out_multi_is;
10536378Ssklower 	int	es_out_broad;
10636378Ssklower 	int	es_out_normal;
10736378Ssklower 	int	es_ipout;
10836378Ssklower 
10936378Ssklower 	int	es_icmp[PRC_NCMDS];
11036378Ssklower 	/* errors */
11136378Ssklower 	int	es_badcsum;
11236378Ssklower 	int	es_badhdr;
11336378Ssklower } eonstat;
11436378Ssklower 
11536378Ssklower #undef IncStat
11636378Ssklower #define IncStat(xxx) eonstat.xxx++
117*37469Ssklower 
118*37469Ssklower typedef struct qhdr {
119*37469Ssklower 	struct qhdr *link, *rlink;
120*37469Ssklower } *queue_t;
121