home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / nwnet / root / usr / include / sys / spx_app.h / spx_app
Text File  |  1998-08-19  |  11KB  |  260 lines

  1. /*
  2.  * Copyright (c) 1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  3.  *                                                                         
  4.  *        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  5.  *                   SANTA CRUZ OPERATION INC.                             
  6.  *                                                                         
  7.  *   The copyright notice above does not evidence any actual or intended   
  8.  *   publication of such source code.                                      
  9.  */
  10.  
  11. /* $Novell-NWU: $Header: /proj6/ncps/nwu_top/nwnet/include/sys/spx_app.h,v 1.2 1996/04/05 21:56:18 vtag Exp $ */
  12. /*    Copyright (c) 1990, 1991, 1992, 1993 Novell, Inc. All Rights Reserved.    */
  13. /*    Copyright (c) 1984, 1985, 1986, 1987, 1988, 1989, 1990 Novell, Inc. All Rights Reserved.    */
  14. /*      All Rights Reserved      */
  15.  
  16. /*    THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF Novell Inc.    */
  17. /*    The copyright notice above does not evidence any       */
  18. /*    actual or intended publication of such source code.    */
  19.  
  20. #ifndef _NET_NW_SPX_APP_H  /* wrapper symbol for kernel use */
  21. #define _NET_NW_SPX_APP_H  /* subject to change without notice */
  22.  
  23. #ident "@(#)spx_app.h    1.2"
  24.  
  25.  
  26. /*
  27.  * Copyright 1991, 1992 Novell, Inc.
  28.  * All Rights Reserved.
  29.  *
  30.  * This work is subject to U.S. and International copyright laws and
  31.  * treaties.  No part of this work may be used, practiced, performed,
  32.  * copied, distributed, revised, modified, translated, abridged,
  33.  * condensed, expanded, collected, compiled, linked, recast,
  34.  * transformed or adapted without the prior written consent
  35.  * of Novell.  Any use or exploitation of this work without
  36.  * authorization could subject the perpetrator to criminal and
  37.  * civil liability.
  38.  */
  39.  
  40. /*
  41.  *   The parts of SPX exposed to the application programmer.
  42.  */
  43.  
  44. #ifdef _KERNEL_HEADERS
  45. #include <nwu/nwnet/include/ipx_app.h>
  46. #else
  47. #include <sys/ipx_app.h>
  48. #endif /* _KERNEL_HEADERS */
  49.  
  50. #define TLI_SPX_CONNECTION_FAILED ((uint8) 0xED)
  51. #define TLI_SPX_CONNECTION_TERMINATED ((uint8) 0xEC)
  52. #define TLI_SPX_PACKET_OVERFLOW ((uint8) 0xFD)
  53. #define TLI_SPX_MALFORMED_PACKET ((uint8) 0xFE)
  54. #define SPX_GET_CONN_INFO  ( ( 's' << 8 ) | 1 ) 
  55. #define SPX_GS_MAX_PACKET_SIZE  ( ( 's' << 8 ) | 2 ) 
  56. #define SPX_GS_DATASTREAM_TYPE  ( ( 's' << 8 ) | 3 ) 
  57. #define SPX_T_SYNCDATA_IOCTL  ( ( 's' << 8 ) | 4 )
  58. #define SPX_CHECK_QUEUE  ( ( 's' << 8 ) | 5 )
  59. #define SPX_GET_STATS  ( ( 's' << 8 ) | 6 )
  60. #define SPX_SET_PARAM  ( ( 's' << 8 ) | 7 )
  61. #define SPX_SPX2_OPTIONS  ( ( 's' << 8 ) | 8 )
  62. #define SPX_GET_CON_STATS  ( ( 's' << 8 ) | 9 )
  63.  
  64. /* cant conflict with TPI primitive numbers */
  65. #define SPX_T_SYNCDATA_REQ 0x0000FFFF 
  66.  
  67. typedef struct spx_optmgmt {
  68.     uint8 spxo_retry_count;
  69.     uint8 spxo_watchdog_flag;
  70.     uint16 spxo_min_retry_delay;
  71. } SPX_OPTMGMT;
  72.  
  73. typedef struct spxopt_s {
  74.     unsigned char spx_connectionID[2];
  75.     unsigned char spx_allocationNumber[2];
  76. } SPX_OPTS;
  77.  
  78.  
  79. /* New SPXII structure is used for calls t_listen, t_accept, t_connect and
  80.  * t_optmgmt.  This structure is expanable in future versions of SPXII
  81.  * and therefore a variable should never be declared directly (ie.
  82.  * "struct spx2_options localoptions;" should not be done) and the size of
  83.  * the structure should never be taken (ie. "sizeof(SPX2_OPTIONS);" ).  The
  84.  * function t_alloc should always be used to allocate the structure and
  85.  * the options field of the "struct t_info" should be used to determine the
  86.  * size of the structure (t_getinfo). If the tli calls are not used to 
  87.  * allocate and determine the size, a TBUFOVFLW error could be generated when
  88.  * an application is run with a newer version of SPXII.        
  89.  */
  90. #define OPTIONS_VERSION 1 
  91. #define VERSION1SPX2OPTSIZE (13 * sizeof(uint32))
  92. #define SPX2_NO_NEGOTIATE_OPTIONS 0xAAAA 
  93. #define SPX2_NEGOTIATE_OPTIONS 0x5555 
  94.  
  95. /* spxII Sessions Flags */
  96. #define SPX_SF_NONE            0x00
  97. #define SPX_SF_IPX_CHECKSUM    0x01
  98. #define SPX_SF_SPX2_SESSION    0x02
  99.  
  100.  
  101.  
  102. typedef struct spx2_options {
  103.     uint32    versionNumber;            /* Must be set to OPTION_VERSION */
  104.  
  105.     uint32    spxIIOptionNegotiate;    /* Exchange options and negotiate
  106.                                         packet size*/
  107.  
  108.     uint32    spxIIRetryCount;        /*  Number of Transmit retries on 
  109.                                        data packets*/
  110.  
  111.     uint32    spxIIMinimumRetryDelay;    /* Minimum retry timeout, in millisec */
  112.  
  113.     uint32    spxIIMaximumRetryDelta;    /* Maximum retry delta, in milliseconds */
  114.  
  115.     uint32    spxIIWatchdogTimeout;    /* This is a SYSTEM Parameter for NWU. 
  116.                                        This value can only be changed in 
  117.                                        spx_tune.h    */
  118.  
  119.     uint32    spxIIConnectionTimeout;    /* Number of milliseconds to wait for full
  120.                                        connection setup */
  121.  
  122.     uint32    spxIILocalWindowSize;    /* Number of data packets in recieve 
  123.                                        window */
  124.  
  125.     uint32    spxIIRemoteWindowSize;    /* Remote endpoints initial receive window 
  126.                                        size */
  127.  
  128.     uint32    spxIIConnectionID;        /* Valid only after connection is 
  129.                                        established */
  130.  
  131.     uint32    spxIIInboundPacketSize;    /* Maximum recieve packet size */
  132.  
  133.     uint32    spxIIOutboundPacketSize;/* Maximum transmit packet size */
  134.  
  135.     uint32    spxIISessionFlags;        /* Session characteristic options */
  136.                                     /* END of VERSION 1 */
  137. } SPX2_OPTIONS;
  138.  
  139.  
  140. typedef struct spxConStatisics {
  141.     time_t    con_startTime;                /* Time of connection open() */
  142.     uint16    con_connection_id;            /* connection id number */
  143.     long    con_state;                    /* current connection state */
  144.     uint16    con_retry_count;            /* # of retries befor disconnect */
  145.     uint16    con_retry_time;                /* min  milliseconds between retries */
  146.     ipxAddr_t con_addr;                    /* IPX address of this endpoint */
  147.  
  148.     /* following statics are only valid if in DATAXFER state or higher */
  149.     ipxAddr_t o_addr;                    /* IPX address of other endpoint */
  150.     uint16    o_connection_id;            /* conn id number of other endpoint */
  151.     uint8    con_type;                    /* connection info byte
  152.                                            bits 0-1  other endpoint type 
  153.                                              0 = unknown/not connected
  154.                                              1 = SPX, 2 = SPXII
  155.                                            bits 2-6 unused
  156.                                            bit 7 
  157.                                             1- multiple open on device
  158.                                               NVT uses this mode
  159.                                          */
  160.     uint8    con_window_size;            /* current receive window size */
  161.     uint8    con_remote_window_size;        /* current transmit window size */
  162.     uint8    con_ipxChecksum;            /* if non-zero ipxchecksums are used */
  163.     uint16    con_send_packet_size;        /* current max transmit packet size */
  164.     uint16    con_rcv_packet_size;        /* current max receive packet size */
  165.     uint32    con_round_trip_time;        /* last round trip time in msec */
  166.  
  167.     /* the reset are counters */
  168.     uint32    con_window_choke;            /* # of times the connection was in flow
  169.                                         ** control due to other endpoint window
  170.                                         ** closure */
  171.     uint32    con_canput_fail;            /* # of times canput failed to IPX */
  172.     uint32    con_send_mesg_count;        /* # of messages sent to SPX by app */
  173.     uint16    con_unknown_mesg_count;        /* # unknown msgs sent to SPX by app */
  174.     uint16    con_send_bad_mesg;            /* # of bad packets SPX asked to send */
  175.     uint32    con_send_packet_count;        /* # of packets sent to IPX by SPX */
  176.     uint16    con_send_packet_timeout;    /* # of packets resent due to timeout */
  177.     uint16    con_send_packet_nak;        /* # of packets resent due to NAK */
  178.     uint32    con_send_ack;                /* # of ACK packets sent */
  179.     uint16    con_send_nak;                /* # of NACK packets sent */
  180.     uint16    con_send_watchdog;            /* # of watch dog packets sent */
  181.  
  182.     uint32    con_rcv_packet_count;        /* # of SPX packets received */
  183.     uint16    con_rcv_bad_packet;            /* # of bad packets SPX received */
  184.     uint16    con_rcv_bad_data_packet;    /* # of bad data packets SPX received */
  185.     uint16    con_rcv_dup_packet;            /* # of duplicate packets received */
  186.     uint16    con_rcv_packet_qued;        /* # packets qued due to app too slow */
  187.     uint16    con_rcv_packet_outseq;        /* # packets rcved out of sequence */
  188.     uint16    con_rcv_watchdog;            /* # of watch dog packets received */
  189.     uint32    con_rcv_packet_sentup;        /* # packets rcved sent upstream */
  190.     uint32    con_rcv_ack;                /* # of ACK packets received */
  191.     uint32    con_rcv_nak;                /* # of NACK packets received */
  192. } spxConStats_t;
  193.  
  194. typedef struct spxStatisics {
  195.     uint16    spx_major_version;            /* Major Version */ 
  196.     uint16    spx_minor_version;            /* Minor Version */ 
  197.     char    spx_revision[2];            /* Revision */ 
  198.     time_t    spx_startTime;                /* Time driver loaded */
  199.     uint16    spx_max_connections;        /* Max configured SPX connections */ 
  200.     uint16    spx_current_connections;    /* current SPX connections (opens) */ 
  201.     uint16    spx_max_used_connections;    /* Max SPX simutaneously connections */
  202.     uint16    spx_alloc_failures;            /* # of mem alloc (allocb) failures */
  203.     uint16    spx_open_failures;            /* # of open failures */
  204.     uint16    spx_connect_req_count;        /* # Connect Requests Rcved from apps */
  205.     uint16    spx_connect_req_fails;        /* # of Connect Requests Failures */
  206.     uint16    spx_listen_req;                /* # of Listens posted by application */
  207.     uint16    spx_listen_req_fails;        /* # of Listens Failures */
  208.     uint16    spx_ioctls;                    /* # of IOCTL sent to SPX by app */
  209.     uint32    spx_send_mesg_count;        /* # of messages sent to SPX by app */
  210.     uint16    spx_unknown_mesg_count;        /* # unknown msgs sent to SPX by app */
  211.     uint16    spx_send_bad_mesg;            /* # of bad msgs SPX asked to send */
  212.     uint32    spx_send_packet_count;        /* # of packets sent to IPX by SPX */
  213.     uint16    spx_send_packet_timeout;    /* # of packets resent due to timeout */
  214.     uint16    spx_send_packet_nak;        /* # of packets resent due to NAK */
  215.  
  216.     uint32    spx_rcv_packet_count;        /* # of SPX packets received */
  217.     uint16    spx_rcv_bad_packet;            /* # of bad packets SPX received */
  218.     uint16    spx_rcv_bad_data_packet;    /* # of bad data packets SPX received */
  219.     uint16    spx_rcv_dup_packet;            /* # of duplicate packets received */
  220.     uint32    spx_rcv_packet_sentup;        /* # packets rcved sent upstream */
  221.     uint16    spx_rcv_conn_req;            /* # Connect Requests Rcved from wire*/
  222.  
  223.     uint16    spx_abort_connection;        /* # of SPX connection aborted */
  224.     uint16    spx_max_retries_abort;        /* # of SPX conn. aborted due to 
  225.                                         ** max retries exceeded */
  226.     uint16    spx_no_listeners;            /* # of Conn. Req with no Listeners */
  227. } spxStats_t;
  228.  
  229. typedef struct spxParameters {
  230.     uint16    spx_max_connections;    /* max # of SPX connections simultaneously
  231.                                        active */
  232.     uint16    spx_max_sockets;        /* max # of sockets open simultaneously
  233.                                        should be larger than max connections */
  234. } spxParam_t;
  235.  
  236. typedef struct SpxIIHdr {
  237.     ipxHdr_t ipxHdr;
  238.     uint8   connectionControl;
  239.     uint8   dataStreamType;
  240.     uint16  sourceConnectionId;
  241.     uint16  destinationConnectionId;
  242.     uint16  sequenceNumber;
  243.     uint16  acknowledgeNumber;
  244.     uint16  allocationNumber;
  245.     uint16  negotiateSize;
  246.     } spxIIHdr_t;
  247.  
  248. typedef struct SpxHdr {
  249.     ipxHdr_t ipxHdr;
  250.     uint8     connectionControl;
  251.     uint8     dataStreamType;
  252.     uint16     sourceConnectionId;
  253.     uint16     destinationConnectionId;
  254.     uint16     sequenceNumber;
  255.     uint16     acknowledgeNumber;
  256.     uint16     allocationNumber;
  257.     } spxHdr_t;
  258.  
  259. #endif /* _NET_NW_SPX_APP_H */
  260.