home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 15 / 15.iso / s / s053 / 9.ddi / usr / include / sys / tihdr.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-12-08  |  12.1 KB  |  380 lines

  1. /*    Copyright (c) 1990 UNIX System Laboratories, Inc.    */
  2. /*    Copyright (c) 1984, 1986, 1987, 1988, 1989, 1990 AT&T    */
  3. /*      All Rights Reserved      */
  4.  
  5. /*    THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF         */
  6. /*    UNIX System Laboratories, Inc.                         */
  7. /*    The copyright notice above does not evidence any       */
  8. /*    actual or intended publication of such source code.    */
  9.  
  10. #ifndef _SYS_TIHDR_H
  11. #define _SYS_TIHDR_H
  12.  
  13. #ident    "@(#)/usr/include/sys/tihdr.h.sl 1.1 4.0 12/08/90 23690 AT&T-USL"
  14.  
  15. /*
  16.  * The following is all the information
  17.  * needed by the Transport Service Interface.
  18.  */
  19.  
  20.  
  21.  
  22. /* 
  23.  * The following are the definitions of the Transport
  24.  * Service Interface primitives.
  25.  */
  26.  
  27. /* 
  28.  * Primitives that are initiated by the transport user.
  29.  */
  30.  
  31. #define    T_CONN_REQ    0    /* connection request     */
  32. #define T_CONN_RES    1    /* connection response    */
  33. #define T_DISCON_REQ    2    /* disconnect request     */
  34. #define T_DATA_REQ    3    /* data request              */
  35. #define T_EXDATA_REQ    4    /* expedited data request */
  36. #define T_INFO_REQ    5    /* information request    */
  37. #define T_BIND_REQ    6    /* bind request          */
  38. #define T_UNBIND_REQ    7    /* unbind request      */
  39. #define T_UNITDATA_REQ    8    /* unitdata request       */
  40. #define T_OPTMGMT_REQ   9    /* manage options req     */
  41. #define T_ORDREL_REQ   10       /* orderly release req    */
  42.  
  43. /* 
  44.  * Primitives that are initiated by the transport provider.
  45.  */
  46.  
  47. #define T_CONN_IND    11    /* connection indication      */
  48. #define T_CONN_CON    12    /* connection confirmation    */
  49. #define T_DISCON_IND    13    /* disconnect indication      */
  50. #define T_DATA_IND    14    /* data indication          */
  51. #define T_EXDATA_IND    15    /* expeditied data indication */
  52. #define T_INFO_ACK    16    /* information acknowledgment */
  53. #define T_BIND_ACK    17    /* bind acknowledment          */
  54. #define T_ERROR_ACK    18    /* error acknowledgment       */
  55. #define T_OK_ACK    19    /* ok acknowledgment          */
  56. #define T_UNITDATA_IND    20    /* unitdata indication          */
  57. #define T_UDERROR_IND    21    /* unitdata error indication  */
  58. #define T_OPTMGMT_ACK   22      /* manage options ack         */
  59. #define T_ORDREL_IND    23      /* orderly release ind           */
  60.  
  61. /*
  62.  * The following are the events that drive the state machine
  63.  */
  64. /* Initialization events */
  65. #define TE_BIND_REQ    0    /* bind request                  */
  66. #define TE_UNBIND_REQ    1    /* unbind request              */
  67. #define TE_OPTMGMT_REQ  2    /* manage options req             */
  68. #define TE_BIND_ACK    3    /* bind acknowledment                  */
  69. #define TE_OPTMGMT_ACK  4       /* manage options ack                 */
  70. #define TE_ERROR_ACK    5    /* error acknowledgment               */
  71. #define TE_OK_ACK1    6    /* ok ack  seqcnt == 0               */
  72. #define TE_OK_ACK2    7    /* ok ack  seqcnt == 1, q == resq          */
  73. #define TE_OK_ACK3    8    /* ok ack  seqcnt == 1, q != resq       */
  74. #define TE_OK_ACK4    9    /* ok ack  seqcnt > 1                */
  75.  
  76. /* Connection oriented events */
  77. #define    TE_CONN_REQ    10    /* connection request             */
  78. #define TE_CONN_RES    11    /* connection response            */
  79. #define TE_DISCON_REQ    12    /* disconnect request             */
  80. #define TE_DATA_REQ    13    /* data request                      */
  81. #define TE_EXDATA_REQ    14    /* expedited data request         */
  82. #define TE_ORDREL_REQ   15      /* orderly release req            */
  83. #define TE_CONN_IND    16    /* connection indication              */
  84. #define TE_CONN_CON    17    /* connection confirmation            */
  85. #define TE_DATA_IND    18    /* data indication                  */
  86. #define TE_EXDATA_IND    19    /* expedited data indication         */
  87. #define TE_ORDREL_IND   20      /* orderly release ind                   */
  88. #define TE_DISCON_IND1    21    /* disconnect indication seq == 0          */
  89. #define TE_DISCON_IND2    22    /* disconnect indication seq == 1       */
  90. #define TE_DISCON_IND3    23    /* disconnect indication seq > 1      */
  91. #define TE_PASS_CONN    24    /* pass connection                   */
  92.  
  93. /* Unit data events */
  94. #define TE_UNITDATA_REQ    25    /* unitdata request               */
  95. #define TE_UNITDATA_IND    26    /* unitdata indication                  */
  96. #define TE_UDERROR_IND    27    /* unitdata error indication          */
  97.  
  98. #define TE_NOEVENTS    28
  99. /*
  100.  * The following are the possible states of the Transport
  101.  * Service Interface
  102.  */
  103.  
  104. #define TS_UNBND        0    /* unbound                    */
  105. #define    TS_WACK_BREQ        1    /* waiting ack of BIND_REQ      */
  106. #define TS_WACK_UREQ        2    /* waiting ack of UNBIND_REQ    */
  107. #define TS_IDLE            3    /* idle                 */
  108. #define TS_WACK_OPTREQ        4    /* wait ack options request     */
  109. #define TS_WACK_CREQ        5    /* waiting ack of CONN_REQ      */
  110. #define TS_WCON_CREQ        6    /* waiting confirm of CONN_REQ  */
  111. #define    TS_WRES_CIND        7    /* waiting response of CONN_IND */
  112. #define TS_WACK_CRES        8    /* waiting ack of CONN_RES      */
  113. #define TS_DATA_XFER        9    /* data transfer        */
  114. #define TS_WIND_ORDREL         10    /* releasing rd but not wr      */
  115. #define TS_WREQ_ORDREL        11      /* wait to release wr but not rd*/
  116. #define TS_WACK_DREQ6        12    /* waiting ack of DISCON_REQ    */
  117. #define TS_WACK_DREQ7        13    /* waiting ack of DISCON_REQ    */
  118. #define TS_WACK_DREQ9        14    /* waiting ack of DISCON_REQ    */
  119. #define TS_WACK_DREQ10        15    /* waiting ack of DISCON_REQ    */
  120. #define TS_WACK_DREQ11        16    /* waiting ack of DISCON_REQ    */
  121.  
  122. #define TS_NOSTATES        17
  123.  
  124. /*
  125.  * The following are the different flags available to
  126.  * the transport provider to set in the PROVIDER_flag
  127.  * field of the T_info_ack structure.
  128.  */
  129. #define TP_SNDZERO    0x0001    /* provider can handle 0-length TSDU's */
  130. #define TP_EXPINLINE    0x0002    /* provider wants ETSDU's in band 0 */
  131.  
  132. /* 
  133.  * The following structure definitions define the format of the
  134.  * stream message block of the above primitives.
  135.  * (everything is declared long to ensure proper alignment
  136.  *  across different machines)
  137.  */
  138.  
  139. /* connection request */
  140.  
  141. struct T_conn_req {
  142.     long    PRIM_type;    /* always T_CONN_REQ  */
  143.     long    DEST_length;    /* dest addr length   */
  144.     long    DEST_offset;    /* dest addr offset   */
  145.     long    OPT_length;    /* options length     */
  146.     long    OPT_offset;    /* options offset     */
  147. };
  148.  
  149. /* connect response */
  150.  
  151. struct T_conn_res {
  152.     long    PRIM_type;    /* always T_CONN_RES       */
  153.     queue_t *QUEUE_ptr;    /* responding queue ptr    */
  154.     long    OPT_length;    /* options length          */
  155.     long    OPT_offset;    /* options offset          */
  156.     long    SEQ_number;    /* sequence number          */
  157. };
  158.  
  159. /* disconnect request */
  160.  
  161. struct T_discon_req {
  162.     long    PRIM_type;    /* always T_DISCON_REQ */
  163.     long    SEQ_number;    /* sequnce number      */
  164. };
  165.  
  166. /* data request */
  167.  
  168. struct T_data_req {
  169.     long    PRIM_type;    /* always T_DATA_REQ */
  170.     long    MORE_flag;    /* more data         */
  171. };
  172.  
  173. /* expedited data request */
  174.  
  175. struct T_exdata_req {
  176.     long    PRIM_type;    /* always T_EXDATA_REQ */
  177.     long    MORE_flag;    /* more data           */
  178. #define    MORE_type    MORE_flag    /* 3.2 source compatibility */
  179. };
  180.  
  181. /* information request */
  182.  
  183. struct T_info_req {
  184.     long    PRIM_type;    /* always T_INFO_REQ */
  185. };
  186.  
  187. /* bind request */
  188.  
  189. struct T_bind_req {
  190.     long        PRIM_type;    /* always T_BIND_REQ            */
  191.     long        ADDR_length;    /* addr length                    */
  192.     long        ADDR_offset;    /* addr offset                    */
  193.     unsigned long    CONIND_number;    /*connect indications requested */
  194. };
  195.  
  196. /* unbind request */
  197.  
  198. struct T_unbind_req {
  199.     long    PRIM_type;    /* always T_UNBIND_REQ */
  200. };
  201.  
  202. /* unitdata request */
  203.  
  204. struct T_unitdata_req {
  205.     long    PRIM_type;    /* always T_UNITDATA_REQ  */
  206.     long    DEST_length;    /* dest addr length       */
  207.     long    DEST_offset;    /* dest addr offset       */
  208.     long    OPT_length;    /* options length         */
  209.     long    OPT_offset;    /* options offset         */
  210. };
  211.  
  212. /* manage options request */
  213.  
  214. struct T_optmgmt_req {
  215.     long    PRIM_type;    /* always T_OPTMGMT_REQ   */
  216.     long    OPT_length;    /* options length         */
  217.     long    OPT_offset;    /* options offset         */
  218.     long    MGMT_flags;    /* options flags          */
  219. };
  220.  
  221. /* orderly release request */
  222.  
  223. struct T_ordrel_req {
  224.     long    PRIM_type;    /* always T_ORDREL_REQ */
  225. };
  226.  
  227. /* connect indication */
  228.  
  229. struct T_conn_ind {
  230.     long    PRIM_type;    /* always T_CONN_IND */
  231.     long    SRC_length;    /* src addr length   */
  232.     long    SRC_offset;    /* src addr offset   */
  233.     long    OPT_length;    /* option length     */
  234.     long    OPT_offset;    /* option offset     */
  235.     long    SEQ_number;    /* sequnce number    */
  236. };
  237.  
  238. /* connect confirmation */
  239.  
  240. struct T_conn_con {
  241.     long    PRIM_type;    /* always T_CONN_CON      */
  242.     long    RES_length;    /* responding addr length */
  243.     long    RES_offset;    /* responding addr offset */
  244.     long    OPT_length;    /* option length          */
  245.     long    OPT_offset;    /* option offset          */
  246. };
  247.  
  248. /* disconnect indication */
  249.  
  250. struct T_discon_ind {
  251.     long    PRIM_type;    /* always T_DISCON_IND     */
  252.     long    DISCON_reason;    /* disconnect reason    */
  253.     long    SEQ_number;    /* sequnce number       */
  254. };
  255.  
  256. /* data indication */
  257.  
  258. struct T_data_ind {
  259.     long     PRIM_type;    /* always T_DATA_IND */
  260.     long    MORE_flag;    /* more data          */
  261. };
  262.  
  263. /* expedited data indication */
  264.  
  265. struct T_exdata_ind {
  266.     long    PRIM_type;    /* always T_EXDATA_IND */
  267.     long    MORE_flag;    /* more data           */
  268. };
  269.  
  270. /* information acknowledgment */
  271.  
  272. struct T_info_ack {
  273.     long    PRIM_type;    /* always T_INFO_ACK     */
  274.     long    TSDU_size;    /* max TSDU size         */
  275.     long    ETSDU_size;    /* max ETSDU size        */
  276.     long    CDATA_size;    /* max connect data size */
  277.     long    DDATA_size;    /* max discon data size  */
  278.     long    ADDR_size;    /* address size         */
  279.     long    OPT_size;    /* options size         */
  280.     long    TIDU_size;    /* max TIDU size         */
  281.     long    SERV_type;    /* provider service type */
  282.     long    CURRENT_state;  /* current state         */
  283.     long    PROVIDER_flag;  /* provider flags        */
  284. };
  285.  
  286. /* bind acknowledgment */
  287.  
  288. struct T_bind_ack {
  289.     long        PRIM_type;    /* always T_BIND_ACK        */
  290.     long        ADDR_length;    /* addr length              */
  291.     long        ADDR_offset;    /* addr offset              */
  292.     unsigned long    CONIND_number;    /* connect ind to be queued */
  293. };
  294.  
  295. /* error acknowledgment */
  296.  
  297. struct T_error_ack { 
  298.     long     PRIM_type;    /* always T_ERROR_ACK  */
  299.     long    ERROR_prim;    /* primitive in error  */
  300.     long    TLI_error;    /* TLI error code      */
  301.     long    UNIX_error;    /* UNIX error code     */
  302. };
  303.  
  304. /* ok acknowledgment */
  305.  
  306. struct T_ok_ack {
  307.     long     PRIM_type;    /* always T_OK_ACK   */
  308.     long    CORRECT_prim;    /* correct primitive */
  309. };
  310.  
  311. /* unitdata indication */
  312.  
  313. struct T_unitdata_ind {
  314.     long    PRIM_type;    /* always T_UNITDATA_IND  */
  315.     long    SRC_length;    /* source addr length     */
  316.     long    SRC_offset;    /* source addr offset     */
  317.     long    OPT_length;    /* options length         */
  318.     long    OPT_offset;    /* options offset         */
  319. };
  320.  
  321. /* unitdata error indication */
  322.  
  323. struct T_uderror_ind {
  324.     long    PRIM_type;    /* always T_UDERROR_IND   */
  325.     long    DEST_length;    /* dest addr length       */
  326.     long    DEST_offset;    /* dest addr offset       */
  327.     long    OPT_length;    /* options length         */
  328.     long    OPT_offset;    /* options offset         */
  329.     long    ERROR_type;    /* error type              */
  330. };
  331.  
  332. /* manage options ack */
  333.  
  334. struct T_optmgmt_ack {
  335.     long    PRIM_type;    /* always T_OPTMGMT_ACK   */
  336.     long    OPT_length;    /* options length         */
  337.     long    OPT_offset;    /* options offset         */
  338.     long    MGMT_flags;    /* managment flags        */
  339. };
  340.  
  341. /* orderly release indication */
  342.  
  343. struct T_ordrel_ind {
  344.     long    PRIM_type;    /* always T_ORDREL_IND */
  345. };
  346.  
  347. /*
  348.  * The following is a union of the primitives
  349.  */
  350. union T_primitives {
  351.     long            type;        /* primitive type     */
  352.     struct T_conn_req    conn_req;    /* connect request    */
  353.     struct T_conn_res    conn_res;    /* connect response   */
  354.     struct T_discon_req    discon_req;    /* disconnect request */
  355.     struct T_data_req    data_req;    /* data request       */
  356.     struct T_exdata_req    exdata_req;    /* expedited data req */
  357.     struct T_info_req    info_req;    /* information req    */
  358.     struct T_bind_req    bind_req;    /* bind request       */
  359.     struct T_unbind_req    unbind_req;    /* unbind request     */
  360.     struct T_unitdata_req    unitdata_req;    /* unitdata requset   */
  361.     struct T_optmgmt_req    optmgmt_req;    /* manage opt req     */
  362.     struct T_ordrel_req    ordrel_req;    /* orderly rel req    */
  363.     struct T_conn_ind    conn_ind;    /* connect indication */
  364.     struct T_conn_con    conn_con;    /* connect corfirm    */
  365.     struct T_discon_ind    discon_ind;    /* discon indication  */
  366.     struct T_data_ind    data_ind;    /* data indication    */
  367.     struct T_exdata_ind    exdata_ind;    /* expedited data ind */
  368.     struct T_info_ack    info_ack;    /* info ack          */
  369.     struct T_bind_ack    bind_ack;    /* bind ack          */
  370.     struct T_error_ack    error_ack;    /* error ack          */
  371.     struct T_ok_ack        ok_ack;        /* ok ack          */
  372.     struct T_unitdata_ind    unitdata_ind;    /* unitdata ind       */
  373.     struct T_uderror_ind    uderror_ind;    /* unitdata error ind */
  374.     struct T_optmgmt_ack    optmgmt_ack;    /* manage opt ack     */
  375.     struct T_ordrel_ind    ordrel_ind;    /* orderly rel ind    */
  376. };
  377.  
  378.  
  379. #endif    /* _SYS_TIHDR_H */
  380.