|
|
1.1 ! root 1: /*********************************************************** ! 2: Copyright IBM Corporation 1987 ! 3: ! 4: All Rights Reserved ! 5: ! 6: Permission to use, copy, modify, and distribute this software and its ! 7: documentation for any purpose and without fee is hereby granted, ! 8: provided that the above copyright notice appear in all copies and that ! 9: both that copyright notice and this permission notice appear in ! 10: supporting documentation, and that the name of IBM not be ! 11: used in advertising or publicity pertaining to distribution of the ! 12: software without specific, written prior permission. ! 13: ! 14: IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ! 15: ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ! 16: IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ! 17: ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, ! 18: WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ! 19: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS ! 20: SOFTWARE. ! 21: ! 22: ******************************************************************/ ! 23: ! 24: /* ! 25: * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison ! 26: */ ! 27: /* $Header: iso.h,v 4.9 88/09/11 18:06:38 hagens Exp $ */ ! 28: /* $Source: /usr/argo/sys/netiso/RCS/iso.h,v $ */ ! 29: /* @(#)iso.h 7.4 (Berkeley) 6/22/90 */ ! 30: ! 31: #ifndef __ISO__ ! 32: #define __ISO__ ! 33: ! 34: /* ! 35: * Return true if this is a multicast address ! 36: * This assumes that the bit transmission is lsb first. This ! 37: * assumption is valid for 802.3 but not 802.5. There is a ! 38: * kludge to get around this for 802.5 -- see if_lan.c ! 39: * where subnetwork header is setup. ! 40: */ ! 41: #define IS_MULTICAST(snpa)\ ! 42: ((snpa)[0] & 0x01) ! 43: ! 44: /* ! 45: * Protocols ! 46: */ ! 47: #define ISOPROTO_TP0 25 /* connection oriented transport protocol */ ! 48: #define ISOPROTO_TP1 26 /* not implemented */ ! 49: #define ISOPROTO_TP2 27 /* not implemented */ ! 50: #define ISOPROTO_TP3 28 /* not implemented */ ! 51: #define ISOPROTO_TP4 29 /* connection oriented transport protocol */ ! 52: #define ISOPROTO_TP ISOPROTO_TP4 /* tp-4 with negotiation */ ! 53: #define ISOPROTO_CLTP 30 /* connectionless transport (not yet impl.) */ ! 54: #define ISOPROTO_CLNP 31 /* connectionless internetworking protocol */ ! 55: #define ISOPROTO_X25 32 /* cons */ ! 56: #define ISOPROTO_INACT_NL 33 /* inactive network layer! */ ! 57: #define ISOPROTO_ESIS 34 /* ES-IS protocol */ ! 58: #define ISOPROTO_INTRAISIS 35 /* IS-IS protocol */ ! 59: ! 60: #define ISOPROTO_RAW 255 /* raw clnp */ ! 61: #define ISOPROTO_MAX 256 ! 62: ! 63: #define ISO_PORT_RESERVED 1024 ! 64: #define ISO_PORT_USERRESERVED 5000 ! 65: /* ! 66: * Port/socket numbers: standard network functions ! 67: * NOT PRESENTLY USED ! 68: */ ! 69: #define ISO_PORT_MAINT 501 ! 70: #define ISO_PORT_ECHO 507 ! 71: #define ISO_PORT_DISCARD 509 ! 72: #define ISO_PORT_SYSTAT 511 ! 73: #define ISO_PORT_NETSTAT 515 ! 74: /* ! 75: * Port/socket numbers: non-standard application functions ! 76: */ ! 77: #define ISO_PORT_LOGIN 513 ! 78: /* ! 79: * Port/socket numbers: public use ! 80: */ ! 81: #define ISO_PORT_PUBLIC 1024 /* high bit set --> public */ ! 82: ! 83: /* ! 84: * Network layer protocol identifiers ! 85: */ ! 86: #define ISO8473_CLNP 0x81 ! 87: #define ISO9542_ESIS 0x82 ! 88: #define ISO9542X25_ESIS 0x8a ! 89: #define ISO10589_ISIS 0x83 ! 90: ! 91: ! 92: #ifndef IN_CLASSA_NET ! 93: #include "../netinet/in.h" ! 94: #endif IN_CLASSA_NET ! 95: ! 96: ! 97: ! 98: /* The following looks like a sockaddr ! 99: * to facilitate using tree lookup routines */ ! 100: struct iso_addr { ! 101: u_char isoa_len; /* length (in bytes) */ ! 102: char isoa_genaddr[20]; /* general opaque address */ ! 103: }; ! 104: ! 105: struct sockaddr_iso { ! 106: u_char siso_len; /* length */ ! 107: u_char siso_family; /* family */ ! 108: u_char siso_plen; /* presentation selector length */ ! 109: u_char siso_slen; /* session selector length */ ! 110: u_char siso_tlen; /* transport selector length */ ! 111: struct iso_addr siso_addr; /* network address */ ! 112: u_char siso_pad[6]; /* space for gosip v2 sels */ ! 113: /* makes struct 32 bytes long */ ! 114: }; ! 115: #define siso_nlen siso_addr.isoa_len ! 116: #define siso_data siso_addr.isoa_genaddr ! 117: ! 118: #define TSEL(s) ((caddr_t)((s)->siso_data + (s)->siso_nlen)) ! 119: ! 120: #define SAME_ISOADDR(a, b) \ ! 121: (bcmp((a)->siso_data, (b)->siso_data, (unsigned)(a)->siso_nlen)==0) ! 122: /* ! 123: * The following are specific values for siso->siso_data[0], ! 124: * otherwise known as the AFI: ! 125: */ ! 126: #define AFI_37 0x37 /* bcd of "37" */ ! 127: #define AFI_OSINET 0x47 /* bcd of "47" */ ! 128: #define AFI_RFC986 0x47 /* bcd of "47" */ ! 129: #define AFI_SNA 0x00 /* SubNetwork Address; invalid really...*/ ! 130: ! 131: #ifdef KERNEL ! 132: ! 133: extern int iso_netmatch(); ! 134: extern int iso_hash(); ! 135: extern int iso_addrmatch(); ! 136: extern struct iso_ifaddr *iso_iaonnetof(); ! 137: extern struct domain isodomain; ! 138: extern struct protosw isosw[]; ! 139: ! 140: #else ! 141: /* user utilities definitions from the iso library */ ! 142: ! 143: char *iso_ntoa(); ! 144: struct hostent *iso_gethostbyname(), *iso_gethostbyaddr(); ! 145: ! 146: #endif KERNEL ! 147: ! 148: #define _offsetof(t, m) ((int)((caddr_t)&((t *)0)->m)) ! 149: #endif __ISO__
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.