home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / sys / netiso / iso.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-05-06  |  6.6 KB  |  191 lines

  1. /*-
  2.  * Copyright (c) 1991 The Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. All advertising materials mentioning features or use of this software
  14.  *    must display the following acknowledgement:
  15.  *    This product includes software developed by the University of
  16.  *    California, Berkeley and its contributors.
  17.  * 4. Neither the name of the University nor the names of its contributors
  18.  *    may be used to endorse or promote products derived from this software
  19.  *    without specific prior written permission.
  20.  *
  21.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31.  * SUCH DAMAGE.
  32.  *
  33.  *    @(#)iso.h    7.6 (Berkeley) 5/6/91
  34.  */
  35.  
  36. /***********************************************************
  37.         Copyright IBM Corporation 1987
  38.  
  39.                       All Rights Reserved
  40.  
  41. Permission to use, copy, modify, and distribute this software and its 
  42. documentation for any purpose and without fee is hereby granted, 
  43. provided that the above copyright notice appear in all copies and that
  44. both that copyright notice and this permission notice appear in 
  45. supporting documentation, and that the name of IBM not be
  46. used in advertising or publicity pertaining to distribution of the
  47. software without specific, written prior permission.  
  48.  
  49. IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  50. ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  51. IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  52. ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  53. WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  54. ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  55. SOFTWARE.
  56.  
  57. ******************************************************************/
  58.  
  59. /*
  60.  * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
  61.  */
  62. /* $Header: iso.h,v 4.9 88/09/11 18:06:38 hagens Exp $ */
  63. /* $Source: /usr/argo/sys/netiso/RCS/iso.h,v $ */
  64.  
  65. #ifndef __ISO__
  66. #define __ISO__
  67.  
  68. /*
  69.  *    Return true if this is a multicast address
  70.  *    This assumes that the bit transmission is lsb first. This 
  71.  *    assumption is valid for 802.3 but not 802.5. There is a
  72.  *    kludge to get around this for 802.5 -- see if_lan.c
  73.  *    where subnetwork header is setup.
  74.  */
  75. #define    IS_MULTICAST(snpa)\
  76.     ((snpa)[0] & 0x01)
  77.     
  78. /*
  79.  * Protocols
  80.  */
  81. #define    ISOPROTO_TP0    25        /* connection oriented transport protocol */
  82. #define    ISOPROTO_TP1    26        /* not implemented */
  83. #define    ISOPROTO_TP2    27        /* not implemented */
  84. #define    ISOPROTO_TP3    28        /* not implemented */
  85. #define    ISOPROTO_TP4    29        /* connection oriented transport protocol */
  86. #define    ISOPROTO_TP        ISOPROTO_TP4     /* tp-4 with negotiation */
  87. #define    ISOPROTO_CLTP    30        /* connectionless transport (not yet impl.) */
  88. #define    ISOPROTO_CLNP    31        /* connectionless internetworking protocol */
  89. #define    ISOPROTO_X25    32        /* cons */
  90. #define    ISOPROTO_INACT_NL    33    /* inactive network layer! */
  91. #define    ISOPROTO_ESIS    34        /* ES-IS protocol */
  92. #define    ISOPROTO_INTRAISIS    35        /* IS-IS protocol */
  93.  
  94. #define    ISOPROTO_RAW    255        /* raw clnp */
  95. #define    ISOPROTO_MAX    256
  96.  
  97. #define    ISO_PORT_RESERVED        1024
  98. #define    ISO_PORT_USERRESERVED    5000
  99. /*
  100.  * Port/socket numbers: standard network functions
  101.  * NOT PRESENTLY USED
  102.  */
  103. #define    ISO_PORT_MAINT        501
  104. #define    ISO_PORT_ECHO        507
  105. #define    ISO_PORT_DISCARD    509
  106. #define    ISO_PORT_SYSTAT        511
  107. #define    ISO_PORT_NETSTAT    515
  108. /*
  109.  * Port/socket numbers: non-standard application functions
  110.  */
  111. #define ISO_PORT_LOGIN        513
  112. /*
  113.  * Port/socket numbers: public use
  114.  */
  115. #define ISO_PORT_PUBLIC        1024        /* high bit set --> public */
  116.  
  117. /*
  118.  *    Network layer protocol identifiers
  119.  */
  120. #define ISO8473_CLNP    0x81
  121. #define    ISO9542_ESIS    0x82
  122. #define ISO9542X25_ESIS    0x8a
  123. #define ISO10589_ISIS        0x83
  124.  
  125.  
  126. #ifndef IN_CLASSA_NET
  127. #include "../netinet/in.h"
  128. #endif IN_CLASSA_NET
  129.  
  130.  
  131.  
  132. /* The following looks like a sockaddr
  133.  * to facilitate using tree lookup routines */
  134. struct iso_addr {
  135.     u_char    isoa_len;                        /* length (in bytes) */
  136.     char    isoa_genaddr[20];                /* general opaque address */
  137. };
  138.  
  139. struct sockaddr_iso {
  140.     u_char                 siso_len;            /* length */
  141.     u_char                 siso_family;        /* family */
  142.     u_char                siso_plen;            /* presentation selector length */
  143.     u_char                siso_slen;            /* session selector length */
  144.     u_char                siso_tlen;            /* transport selector length */
  145.     struct     iso_addr    siso_addr;            /* network address */
  146.     u_char                siso_pad[6];        /* space for gosip v2 sels */
  147.                                             /* makes struct 32 bytes long */
  148. };
  149. #define siso_nlen siso_addr.isoa_len
  150. #define siso_data siso_addr.isoa_genaddr
  151.  
  152. #define TSEL(s) ((caddr_t)((s)->siso_data + (s)->siso_nlen))
  153.  
  154. #define SAME_ISOADDR(a, b) \
  155.     (bcmp((a)->siso_data, (b)->siso_data, (unsigned)(a)->siso_nlen)==0)
  156. /*
  157.  * The following are specific values for siso->siso_data[0],
  158.  * otherwise known as the AFI:
  159.  */
  160. #define    AFI_37        0x37    /* bcd of "37" */
  161. #define AFI_OSINET    0x47    /* bcd of "47" */
  162. #define AFI_RFC986    0x47    /* bcd of "47" */
  163. #define    AFI_SNA        0x00    /* SubNetwork Address; invalid really...*/
  164.  
  165. #ifdef KERNEL
  166.  
  167. extern int iso_netmatch();
  168. extern int iso_hash(); 
  169. extern int iso_addrmatch();
  170. extern struct iso_ifaddr *iso_iaonnetof();
  171. extern    struct domain isodomain;
  172. extern    struct protosw isosw[];
  173.  
  174. #else
  175. /* user utilities definitions from the iso library */
  176.  
  177. #include <sys/cdefs.h>
  178.  
  179. __BEGIN_DECLS
  180. struct iso_addr *iso_addr __P((const char *));
  181. char *iso_ntoa __P((const struct iso_addr *));
  182.  
  183. /* THESE DON'T EXIST YET */
  184. struct hostent *iso_gethostbyname(), *iso_gethostbyaddr();
  185. __END_DECLS
  186.  
  187. #endif /* KERNEL */
  188.  
  189. #define _offsetof(t, m) ((int)((caddr_t)&((t *)0)->m))
  190. #endif __ISO__
  191.