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