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

  1. /*
  2.  * Copyright (c) University of British Columbia, 1984
  3.  * Copyright (c) 1990 The Regents of the University of California.
  4.  * All rights reserved.
  5.  *
  6.  * This code is derived from software contributed to Berkeley by
  7.  * the Laboratory for Computation Vision and the Computer Science Department
  8.  * of the University of British Columbia.
  9.  *
  10.  * Redistribution and use in source and binary forms, with or without
  11.  * modification, are permitted provided that the following conditions
  12.  * are met:
  13.  * 1. Redistributions of source code must retain the above copyright
  14.  *    notice, this list of conditions and the following disclaimer.
  15.  * 2. Redistributions in binary form must reproduce the above copyright
  16.  *    notice, this list of conditions and the following disclaimer in the
  17.  *    documentation and/or other materials provided with the distribution.
  18.  * 3. All advertising materials mentioning features or use of this software
  19.  *    must display the following acknowledgement:
  20.  *    This product includes software developed by the University of
  21.  *    California, Berkeley and its contributors.
  22.  * 4. Neither the name of the University nor the names of its contributors
  23.  *    may be used to endorse or promote products derived from this software
  24.  *    without specific prior written permission.
  25.  *
  26.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  27.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  28.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  29.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  30.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  31.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  32.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  33.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  34.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  35.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  36.  * SUCH DAMAGE.
  37.  *
  38.  *    @(#)x25.h    7.8 (Berkeley) 5/29/91
  39.  */
  40.  
  41. #ifdef KERNEL
  42. #define PRC_IFUP    3
  43. #define PRC_LINKUP    4
  44. #define PRC_LINKDOWN    5
  45. #define PRC_LINKRESET    6
  46. #define PRC_LINKDONTCOPY    7
  47. #endif
  48.  
  49. #define CCITTPROTO_HDLC        1
  50. #define CCITTPROTO_X25        2    /* packet level protocol */
  51. #define IEEEPROTO_802LLC    3    /* doesn't belong here */
  52.  
  53. #define HDLCPROTO_LAP        1
  54. #define HDLCPROTO_LAPB        2
  55. #define HDLCPROTO_UNSET        3
  56. #define HDLCPROTO_LAPD        4
  57.  
  58. /* socket options */
  59. #define PK_ACCTFILE        1    /* use level = CCITTPROTO_X25 */
  60. #define PK_FACILITIES        2    /* use level = CCITTPROTO_X25 */
  61. #define PK_RTATTACH        3    /* use level = CCITTPROTO_X25 */
  62. #define PK_PRLISTEN        4    /* use level = CCITTPROTO_X25 */
  63.  
  64. #define MAX_FACILITIES        109     /* maximum size for facilities */
  65.  
  66. /*
  67.  *  X.25 Socket address structure.  It contains the  X.121 or variation of
  68.  *  X.121, facilities information, higher level protocol value (first four
  69.  *  bytes of the User Data field), and the last  12 characters of the User
  70.  *  Data field.
  71.  */
  72.  
  73. struct x25_sockaddr {        /* obsolete - use sockaddr_x25 */
  74.     short  xaddr_len;        /* Length of xaddr_addr.        */
  75.     u_char xaddr_addr[15];    /* Network dependent or X.121 address.    */
  76.     u_char xaddr_facilities;    /* Facilities information.        */
  77. #define XS_REVERSE_CHARGE    0x01
  78. #define XS_HIPRIO        0x02
  79.     u_char xaddr_proto[4];    /* Protocol ID (4 bytes of user data).    */
  80.     u_char xaddr_userdata[12];    /* Remaining User data field.        */
  81. };
  82.  
  83. /*
  84.  *  X.25 Socket address structure.  It contains the network id, X.121
  85.  *  address, facilities information, higher level protocol value (first four
  86.  *  bytes of the User Data field), and up to 12 characters of User Data.
  87.  */
  88.  
  89. struct    sockaddr_x25 {
  90.     u_char    x25_len;
  91.     u_char    x25_family;    /* must be AF_CCITT */
  92.     short    x25_net;    /* network id code (usually a dnic) */
  93.     char    x25_addr[16];    /* X.121 address (null terminated) */
  94.     struct    x25opts {
  95.         char    op_flags;    /* miscellaneous options */
  96.                     /* pk_var.h defines other lcd_flags */
  97. #define X25_REVERSE_CHARGE    0x01    /* remote DTE pays for call */
  98. #define X25_DBIT        0x02    /* not yet supported */
  99. #define X25_MQBIT        0x04    /* prepend M&Q bit status byte to packet data */
  100. #define X25_OLDSOCKADDR        0x08    /* uses old sockaddr structure */
  101. #define X25_DG_CIRCUIT        0x10    /* lcd_flag: used for datagrams */
  102. #define X25_DG_ROUTING        0x20    /* lcd_flag: peer addr not yet known */
  103. #define X25_MBS_HOLD        0x40    /* lcd_flag: collect m-bit sequences */
  104.         char    op_psize;    /* requested packet size */
  105. #define X25_PS128        7
  106. #define X25_PS256        8
  107. #define X25_PS512        9
  108.         char    op_wsize;    /* window size (1 .. 7) */
  109.         char    op_speed;    /* throughput class */
  110.     } x25_opts;
  111.     short    x25_udlen;    /* user data field length */
  112.     char    x25_udata[16];    /* user data field */
  113. };
  114.  
  115. /*
  116.  * network configuration info
  117.  * this structure must be 16 bytes long
  118.  */
  119.  
  120. struct    x25config {
  121.     struct    sockaddr_x25 xc_addr;
  122.     /* link level parameters */
  123.     u_short    xc_lproto:4,    /* link level protocol eg. CCITTPROTO_HDLC */
  124.         xc_lptype:4,    /* protocol type eg. HDLCPROTO_LAPB */
  125.         xc_lwsize:5,    /* link level window size */
  126.         xc_ltrace:1,    /* link level tracing flag */
  127.         xc_rsvd1:2;    /* for use by other link-level protocols */
  128.     /* packet level parameters */
  129.     u_short    xc_pwsize:3,    /* default window size */
  130.         xc_psize:4,    /* default packet size 7=128, 8=256, ... */
  131.         xc_type:3,    /* network type */
  132. #define X25_1976    0
  133. #define X25_1980    1
  134. #define X25_1984    2
  135. #define X25_DDN        3
  136. #define X25_BASIC    4
  137.         xc_ptrace:1,    /* packet level tracing flag */
  138.         xc_nodnic:1,    /* remove our dnic when calling on net */
  139.         xc_prepnd0:1,    /* prepend 0 when making offnet calls */
  140.         xc_rsvd2:3;
  141.     u_short    xc_maxlcn;    /* max logical channels */
  142.     u_short    xc_dg_idletimo;    /* timeout for idle datagram circuits. */
  143. };
  144.  
  145. #ifdef IFNAMSIZ
  146. struct ifreq_x25 {
  147.     char    ifr_name[IFNAMSIZ];        /* if name, e.g. "en0" */
  148.     struct    x25config ifr_xc;
  149. };
  150. #define    SIOCSIFCONF_X25    _IOW('i', 12, struct ifreq_x25)    /* set ifnet config */
  151. #define    SIOCGIFCONF_X25    _IOWR('i',13, struct ifreq_x25)    /* get ifnet config */
  152. #endif
  153.