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