home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 3 Comm / 03-Comm.zip / CK5A188S.ZIP / ckolat.h < prev    next >
C/C++ Source or Header  |  1992-11-23  |  11KB  |  288 lines

  1. /* Definitions for the C interface to the DECnet LAT protocol */
  2. /* Part of DEC PathWorks 2.0 for OS/2 */
  3.  
  4. #define uchar unsigned char
  5. #define uint  unsigned int
  6. #define ulong unsigned long
  7.  
  8. #define def_num_sessions    4        /* default number of sessions */
  9. #define max_num_sessions    10        /* maximum number of sessions */
  10. #define min_num_sessions    4        /* minimum number of sessions */
  11.  
  12. #define def_num_buffers        4        /* default number of buffers */
  13. #define max_num_buffers        8        /* maximum number of buffers */
  14. #define min_num_buffers        2        /* minimun number of buffers */
  15.  
  16. #define def_num_services    50        /* default number of services */
  17. #define max_num_services    2048        /* maximum number of services */
  18. #define min_num_services    10        /* minimum number of services */
  19.  
  20. #define def_num_retx        8        /* default number of retransmit */
  21. #define max_num_retx        255        /* maximum number of retransmit */
  22. #define min_num_retx        4        /* minimum number of retransmit */
  23.  
  24. #define SEND_CHAR    1        /* send a character */
  25. #define GET_CHAR    2        /* read a character */
  26. #define GET_CHAR_BLK    3        /* read a block of characters */
  27. #define GET_STATUS    4        /* slot status */
  28. #define START_SESSION    5        /* start a session */
  29. #define    START_SESS_PSW    6        /* start a session with specified password */
  30. #define STOP_SESSION    7        /* stop a session */
  31. #define SEND_BREAK    8        /* send a break signal */
  32. #define ADD_PREFER_NODE    9        /* add preferred node */
  33. #define DEL_PREFER_NODE 10        /* delete preferred node */
  34. #define RESET_COUNTERS    11        /* reset lat counter */
  35. #define READ_COUNTERS    12        /* read lat internal counters */
  36. #define RESET_SERVICES    13        /* reset service index */
  37. #define READ_SERVICES    14        /* read a service entry */
  38. #define READ_SCB    15        /* read all of the scbs */
  39. #define READ_VCB    16        /* read all of the vcbs */
  40. #define READ_LMCB    17        /* read the lmcb */
  41. #define READ_LATINFO    18        /* read lat info */
  42. #define READ_SERVICE_ENTRY 19        /* read service entry info */
  43. #define SET_RETX_LIMIT    20        /* set retransmit limit in lmcb */
  44. #define SET_MULTI_STATE    21        /* set the state of the multicast receiver */
  45. #define SET_GROUP_CODE    22        /* enable a specific group code     */
  46. #define CLEAR_GROUP_CODE 23        /* clear a specific group code    */
  47.  
  48. /* Bit defination of LatStatus in LAT_CB */
  49. #define LS_NoError        0x0000        /* No error for this function */
  50. #define LS_NoChar        0x8000        /* No character read */
  51. #define LS_CharNotSent        0x8000        /* Character not sent */
  52. #define LS_BrkNotSent        0x8000        /* Break not sent */
  53. #define LS_NotInRun        0x4000        /* Slot session not in run state */
  54. #define LS_TxBufEmpty        0x2000        /* Transmit buffer empty */
  55. #define LS_InvalidSize        0x1000        /* Bad size specified */
  56. #define LS_SesStart        0x0800        /* Session in starting state */
  57. #define LS_InvalidHdl        0x0400        /* Invalid session handle */
  58. #define LS_NoMoreSession     0x0400        /* No more slot session available */
  59. #define LS_TxBufBusy        0x0200        /* Unable to queue transmit data */
  60. #define LS_NoCircuit        0x0200        /* No more virtual circuit */
  61. #define LS_RxData        0x0100        /* Receive data available */
  62. #define LS_NoService        0x0100        /* Service name not found */
  63. #define LS_NoMoreService    0x0080        /* no more new service */
  64. #define LS_NoDLL        0x0040        /* No DLL handle    */
  65. #define LS_OtherError        0x0020        /* another error has happened */
  66. #define LS_IllegalFnc        0xFFFF        /* illegal function */
  67.  
  68. /* LAT_CB Session Status Word */
  69. #define SS_TxBufBusy        0x00        /* Slot session tx buffer busy */
  70. #define SS_Stopped        0x08        /* Slot session stopped! */
  71. #define SS_HostStop        0x10        /* Host sent stop slot */
  72.  
  73. #define IS_InitOK        0x0001        /* LAT driver init'ed */
  74. #define IS_SessionErr        0x0002        /* Session specifier error */
  75. #define IS_BufferErr        0x0004        /* Buffer specifier error */
  76. #define IS_ServiceErr        0x0008        /* Service specifier error */
  77. #define IS_ReTxErr        0x0010        /* Retransmit specifier error */
  78. #define IS_GetMemErr        0x0800        /* Allocate memory error */
  79. #define IS_LatPortailFailed    0x2000        /* Unable to open LAT portal */
  80. #define IS_NeedDll        0x4000        /* DLL driver needed */
  81. #define IS_AlreadyInit        0x8000        /* LAT driver already init'ed */
  82.  
  83. struct  lat_init {
  84.     uint    MaxSessions;        /* Maximum number of slot sessions */
  85.     uint    MaxBuffers;        /* Maximum number of buffers per session */
  86.     uint    MaxServices;        /* Maximum number of services */
  87.     uint    ReTxLimit;        /* Retransmit limit */
  88.     uint    InitStatus;        /* Initialization status */
  89. };
  90.  
  91. struct  lat_info {
  92.     uchar    vermjr;
  93.     uchar    vermir;
  94.     uint    NSessions;
  95.     uint    NBuffers;
  96.     uint    NServices;
  97.     uint    scbsize;
  98. };
  99.  
  100. struct service_info {
  101.     uchar    node_leng;        /* node name length */
  102.     uchar    node_name[16];        /* node name string */
  103.     uchar    node_addr[6];        /* node address */
  104.     uchar    node_status;        /* node status */
  105.     uchar    serv_rate;        /* service rating */
  106.     uchar    serv_leng;        /* service length */
  107.     uchar    serv_name[16];        /* service string */
  108.     uchar    serv_status;        /* service status */
  109. };
  110.  
  111. struct    scb_info {
  112.     uint    scb_inuse;        /* scb inuse flag */
  113.     uint    reserved1;        /* reserved */
  114.     uint    reserved2;        /* reserved */
  115. };
  116.  
  117. struct    lat_cb    {
  118.     uchar    LatFunction;        /* function code */
  119.     uint    SessionHandle;        /* lat handle */
  120.     uint    SessionStatus;        /* Session status */
  121.     uint    StopReason;        /* Stop reason */
  122.     uint    BufferSize;        /* size of buffer */
  123.     ulong    *BufferPtr;        /* pointer to buffer */
  124.     ulong    WaitTime;        /* waiting time */
  125.     uchar    CharByte;        /* I/O character */
  126.     uint    LatStatus;        /* function returned status */
  127. };
  128.  
  129. struct lat_count {
  130.     uint    n_count;    /* number of counters */
  131.     uint    ids[12];
  132.     ulong    c1;
  133.     ulong    c2;
  134.     ulong    c3;
  135.     ulong    c4;
  136.     ulong    c5;
  137.     ulong    c6;
  138.     ulong    c7;
  139.     ulong    c8;
  140.     ulong    c9;
  141.     ulong    c10;
  142.     ulong    c11;
  143.     ulong    c12;
  144.     ulong    c13;
  145.     ulong    c14;
  146. };
  147.  
  148.  
  149. struct    lat_counter
  150. {
  151.     ulong    second_since_zeroed;
  152.     ulong    messages_transmitted;
  153.     ulong    messages_received;
  154.     ulong    messages_retransmitted;
  155.     ulong    out_of_seq_mess_received;
  156.     ulong    illegal_messages_received;
  157.     ulong    illegal_slots_received;
  158.     ulong    buf_que_entry_unavailable;
  159.     ulong    transmit_buffer_unavailable;
  160.     ulong    invalid_messages_received;
  161.     ulong    invalid_slot_received;
  162.     ulong    invalid_multicast_received;
  163. };
  164.  
  165. struct    lmcb_struct {
  166.     uchar    lat_mess_retrans_limit;        /* retransmit limit */
  167.     uchar    group_enable[32];        /* group code */
  168.     uchar    num_active_circuit;        /* number of active circuits */
  169.     uchar    num_active_session;        /* number of active sessions */
  170.     uint    lat_min_rcv_datagram_size;    /* minimun datagram size */
  171.     uchar    protocol_version;        /* protocol version */
  172.     uchar    protocol_eco;
  173.     uchar    max_sim_slots;            /* maximum slots on this circuit */
  174.     uchar    nbr_dl_bufs;            /* number of datalink buffers minus 1 */
  175.     uchar    server_circuit_timer;        /* data transfer timer */
  176.     uchar    lat_keep_alive_timer;        /* keep alive timer (sec)*/
  177.     uint    facility_number;        /* Not used */
  178.     uint    product_code;            /* PC LAT server assigned code */
  179.     uchar    server_retransmit_timer;    /* unacked retransmit timer(sec) */
  180.     uchar    lat_min_rcv_slot_size;        /* minimum slot size */
  181.     uchar    lat_min_rcv_att_slot_size;    /* minimum attention slot size */
  182.     uchar    server_name_len;        /* lat server name length */
  183.     uchar    server_name[16];        /* lat server name */
  184.  };
  185.  
  186. struct    service_entry {
  187.     uint    node_pointer;
  188.     uchar    service_rating;
  189.     uchar    service_name_len;
  190.     uchar    service_name[16];
  191.     uchar    service_status_flags;
  192. };
  193.  
  194. struct    node_entry {
  195.     uchar    node_name_len;
  196.     uchar    node_name[16];
  197.     uchar    node_address[6];
  198.     uchar    status_flag;
  199.     uchar    msg_incarnation;
  200.     uchar    node_change_flags;
  201. };
  202.  
  203. struct    vcb_struct {
  204.     uint    vc_state;            /* VC state         */
  205.     uchar    circuit_name[18];        /* circuit name     */
  206.     uchar    vc_type;            /* DCB type        */
  207.     uchar    vc_format;            /* FORMAT of portal    */
  208.     uchar    rem_address[6];            /* Remote adapter address */
  209.     uchar    loc_address[6];            /* local adapter address  */
  210.     uint    cp_typ;                /* Protocol type      */
  211.     uint    cpad;                /* padding          */
  212.     uchar    cctl;                /* mo' paddin'          */
  213.     uchar    cp_ident[5];            /* even mo' paddin'      */
  214.     uint    cportal_id;            /* portal number      */
  215.     ulong    unacked_xmtb;            /* unacked message */
  216.     uint    unacked_xmtb_len;
  217.     uchar    param_len[5];            /* even mo' paddin'      */
  218.     uchar    msg_typ;            /* message type */
  219.     uint    loc_cir_id;            /* local circuit ID */
  220.     uint    rem_cir_id;            /* remote circuit ID */
  221.     uchar    nxmt;                /* next message number to tx */
  222.     uchar    ack;                /* most recent message acked */
  223.     uchar    rrf;                /* response request flag */
  224.     uchar    dwf;                /* data waiting flag */
  225.     uchar    vc_status;            /* number of sessions */
  226.     uint    slot_index;            /* index to first slot session on this circ */
  227.     uint    last_xmit;            /* index to last slot tx'ed on this circuit */
  228.     uchar    retransmit_counter;        /* retransmits on this message */
  229.     uchar    uxmt;                /* unack'ed message # */
  230.     uchar    retransmit_timer_on;        /* re-transmit timer turned on */
  231.     uchar    retransmit_timer;        /* count down for retransmit */
  232.     uchar    balanced_mode_on;        /* balance mode active flag */
  233.     uint    balanced_mode_timer;        /* tick counts for lat_keep_alive */
  234.     uint    max_buf_size;            /* max tx buffer size */
  235.     uchar    max_circuit_sessions;        /* max circuits */
  236.     uint    disconnect_reason;        /* disconnect reason */
  237. };
  238.  
  239. struct    scb_struct {
  240.     uchar    service[18];            /* service name */
  241.     uchar    node[18];
  242.     uchar    port[18];
  243.     ulong    scb_sem;            /**/
  244.     uint    session_status;            /* session status word */
  245.     uint    stop_reason;            /* session stop reason */
  246.     uint    slot_state;            /* slot state 0=halted */
  247.     uchar    local_credits;            /* available credits to tx slots */
  248.     uint    vcb_offset;
  249.     uint    vcb_segment;
  250.     uint    back_slot;            /* index to back slot on this circ */
  251.     uint    forward_slot;            /* index to forward slot */
  252.     uchar    rem_slot_id;            /* remote slot connect ID */
  253.     uchar    loc_slot_id;            /* local slot ID */
  254.     uchar    slot_byte_count;        /* number of bytes in tx_slot_data */
  255.     uchar    remote_credits;            /* credits from remote node */
  256.     uchar     tx_slot_data[255];        /* data to be tx'ed */
  257.     uchar    num_slots;            /* number of slots in this buffer */
  258.     uchar    num_occupied;            /* number of slots in use */
  259.     uchar    next_rx_slot;            /* index to next slot to be used */
  260.     uchar    cur_buf_slot;            /* index to current slot in use */
  261.     uint    rx_slot_pntr;            /* offset to next char to be taken */
  262.     uint    slot_ptr_table[2];        /* pointers to the slots */
  263. };
  264.  
  265. struct flagbits {
  266.     unsigned SW_duplicate : 1;
  267.     unsigned SW_invalid_value : 1;
  268.     unsigned SW_found : 1;
  269. };
  270.  
  271. struct SIB {
  272.     char schar;        /* switch character */
  273.     int value;        /* switch value */
  274.     int defv;        /* default value */
  275.     int minv;        /* min value */
  276.     int maxv;        /* max value */
  277.     struct flagbits flags;        /* switch status flags */
  278. };
  279.  
  280. struct decnode {
  281.     unsigned char decnode_flags;
  282.     unsigned int decnode_address;
  283.     char decnode_name[7];
  284.     long decnode_pointer;
  285.     };
  286.  
  287.  
  288.