home *** CD-ROM | disk | FTP | other *** search
/ Network Support Encyclopedia 96-1 / novell-nsepro-1996-1-cd2.iso / download / netware / glttst.exe / NXTW.H < prev   
C/C++ Source or Header  |  1995-08-23  |  11KB  |  270 lines

  1. /*    (c) COPYRIGHT 1990,1991 by Novell, Inc.  All Rights Reserved.   */
  2. #ifndef _NXT_H
  3.     #define _NXT_H
  4.     /*_______________________________________________________________________
  5.        Definitions and structures  for the Netware API Communications logic
  6.      _______________________________________________________________________*/
  7.  
  8.     /* assigned socket types */
  9.  
  10.     #define SOC_DIAGNOSTICS
  11.  
  12.  
  13.     typedef struct IPXAddress
  14.         {
  15.         BYTE    network[4];              /* high-low */
  16.         BYTE    node[6];                  /* high-low */
  17.         BYTE    socket[2];              /* high-low */
  18.         }IPXAddress;
  19.  
  20.  
  21.     typedef struct IPXHeader
  22.         {
  23.         WORD        checkSum;               /* high-low */
  24.         WORD        length;                 /* high-low */
  25.         BYTE        transportControl;
  26.         BYTE        packetType;
  27.         IPXAddress  destination;
  28.         IPXAddress  source;
  29.         }IPXHeader;
  30.  
  31.  
  32.     typedef struct SPXHeader
  33.         {
  34.         WORD        checksum;               /* high-low 1's complement */
  35.         WORD        length;                 /* high-low unsigned int */
  36.         BYTE        transportControl;
  37.         BYTE        packetType;
  38.         IPXAddress  destination;
  39.         IPXAddress  source;
  40.         BYTE        connectionControl;      /* bit flags */
  41.         BYTE        dataStreamType;
  42.         WORD        sourceConnectionID;     /* high-low unsigned */
  43.         WORD        destConnectionID;       /* high-low unsigned */
  44.         WORD        sequenceNumber;         /* high-low unsigned */
  45.         WORD        acknowledgeNumber;      /* high-low unsigned */
  46.         WORD        allocationNumber;       /* high-low unsigned */
  47.         }SPXHeader;
  48.  
  49.     typedef struct CONNECTION_INFO
  50.         {
  51.         BYTE        connectionState;
  52.         BYTE        connectionFlags;
  53.         WORD        sourceConnectionID;               /* hi-lo */
  54.         WORD        destinationConnectionID;          /* hi-lo */
  55.         WORD        sequenceNumber;                   /* hi-lo */
  56.         WORD        acknowledgeNumber;                /* hi-lo */
  57.         WORD        allocationNumber;                 /* hi-lo */
  58.         WORD        remoteAcknowledgeNumber;          /* hi-lo */
  59.         WORD        remoteAllocationNumber;           /* hi-lo */
  60.         WORD        connectionSocket;                 /* hi-lo */
  61.         BYTE        immediateAddress[6];
  62.         IPXAddress  destination;
  63.         WORD        retransmissionCount;              /* hi-lo */
  64.         WORD        estimatedRoundTripDelay;          /* hi-lo */
  65.         WORD        retransmittedPackets;             /* hi-lo */
  66.         WORD        suppressedPackets;                /* hi-lo */
  67.         } CONNECTION_INFO;
  68.  
  69.  
  70.     #ifndef ECB_STRUCTURES_DEFINED
  71.         #define ECB_STRUCTURES_DEFINED
  72.  
  73.         typedef struct ECBFragment
  74.             {
  75.             void far *address;
  76.             WORD    size;                /* low-high */
  77.             }ECBFragment;
  78.  
  79.         typedef struct ECB
  80.             {
  81.             void far *linkAddress;
  82.             void (far *ESRAddress)();
  83.             BYTE        inUseFlag;
  84.             BYTE        completionCode;
  85.             WORD        socketNumber;               /* high-low */
  86.             BYTE        IPXWorkspace[4];            /* N/A */
  87.             BYTE        driverWorkspace[12];        /* N/A */
  88.             BYTE        immediateAddress[6];        /* high-low */
  89.             WORD        fragmentCount;              /* low-high */
  90.             ECBFragment fragmentDescriptor[5];
  91.             }ECB;
  92.  
  93.         typedef struct AGLT
  94.         {
  95.            ECB ecb;
  96.            DWORD taskID;
  97.            WORD retry;
  98.            HANDLE hWnd;
  99.         } AGLT;
  100.     #endif /* ECB_STRUCTURES_DEFINED */
  101.  
  102.  
  103.     /* Completion Codes */
  104.  
  105.     #ifndef SUCCESSFUL
  106.     #define SUCCESSFUL                      0x00
  107.     #endif
  108.  
  109.     #define SPX_NOT_INSTALLED               0x00
  110.     #define SPX_INSTALLED                   0xFF    
  111.     #define SPX_CONNECTION_OK               0x00
  112.     #define SPX_CONNECTION_STARTED          0x00
  113.     #define SPX_CONNECTION_ESTABLISHED      0x00
  114.     #define SPX_PACKET_SUCCESSFUL           0x00
  115.     #define SPX_SOCKET_NOT_OPENED           0xFF
  116.     #define SPX_MALFORMED_PACKET            0xFD
  117.     #define SPX_PACKET_OVERFLOW             0xFD
  118.     #define SPX_LISTEN_CANCELED             0xFC
  119.     #define SPX_CONNECTION_TABLE_FULL       0xEF
  120.     #define SPX_INVALID_CONNECTION          0xEE
  121.     #define SPX_NO_ANSWER_FROM_TARGET       0xED
  122.     #define SPX_CONNECTION_FAILED           0xED
  123.     #define SPX_CONNECTION_TERMINATED       0xED
  124.     #define SPX_TERMINATED_POORLY           0xEC
  125.  
  126.     #define NO_MGMT_MEMORY                  0xF0
  127.     #define IPXSPX_NOT_INIT                 0xF1
  128.     #define IPX_NOT_INIT                    0xF1
  129.     #define NO_DOS_MEMORY                   0xF2
  130.     #define NO_FREE_ECB                     0xF3
  131.     #define WINLOCK_FAILED                  0xF4
  132.     #define OVER_MAX_LIMIT                  0xF5    /* The packet size specified in init is too large. */
  133.     #define IPXSPX_PREV_INIT                0xF6
  134.  
  135.     #define CANCEL_FAILURE                  0xF9
  136.     #define NO_PATH_TO_DESTINATION_FOUND    0xFA
  137.     #define ECB_CANCELLED                   0xFC
  138.     #define PACKET_OVERFLOW                 0xFD
  139.     #define PACKET_UNDELIVERABLE            0xFE
  140.     #define SOCKET_NOT_OPEN                 0xFF
  141.     #define TRANSMIT_FAILURE                0xFF
  142.     #define ECB_NOT_IN_USE                  0xFF
  143.     #define SOCKET_ALREADY_OPEN             0xFF
  144.     #define IMMEDIATE_ADDRESS_FAILED        0x6666
  145.     #define IMMEDIATE_ADDRESS_COMPLETE      0x7777
  146.  
  147.  
  148.    /*----------------------------  PROTOTYPES  ----------------------------*/
  149.  
  150. #ifdef __cplusplus
  151.    extern "C" {
  152. #endif /* __cplusplus */
  153.  
  154.     extern void PASCAL     CloseIPXWindow(void);
  155.  
  156.     extern int FAR PASCAL  IPXCancelEvent(
  157.                                        DWORD IPXTaskID, 
  158.                                        ECB FAR *eventControlBlock);
  159.  
  160.     extern void FAR PASCAL IPXCloseSocket(
  161.                                        DWORD IPXTaskID,
  162.                                        WORD socket);
  163.  
  164.     extern void FAR PASCAL IPXDisconnectFromTarget(
  165.                                        DWORD IPXTaskID, 
  166.                                        BYTE FAR *internetAddress);
  167.  
  168.     extern void FAR PASCAL IPXGetInternetworkAddress(
  169.                                        DWORD IPXTaskID, 
  170.                                        BYTE FAR *internetAddress);
  171.  
  172.     extern WORD FAR PASCAL IPXGetIntervalMarker(
  173.                                        DWORD IPXTaskID );
  174.  
  175.     extern int  FAR PASCAL IPXGetLocalTarget(
  176.                                        DWORD IPXTaskID, 
  177.                                        BYTE FAR *destination, 
  178.                                        BYTE FAR *immediateAddress, 
  179.                                        int FAR *transportTime);
  180.  
  181.     extern WORD FAR PASCAL IPXGetLocalTargetAsync(
  182.                                        AGLT FAR *listenAGLT,
  183.                                        AGLT FAR *sendAGLT,
  184.                                        BYTE FAR *destAddr);
  185.  
  186.     extern WORD FAR PASCAL IPXGetMaxPacketSize(void);
  187.  
  188.     extern WORD FAR PASCAL IPXGetRetryCount(void);
  189.  
  190.     extern int  FAR PASCAL IPXInitialize(
  191.                                        DWORD FAR *IPXTaskID, 
  192.                                        WORD maxECBs, 
  193.                                        WORD maxPacketSize);
  194.  
  195.     extern int  FAR PASCAL IPXSPXDeinit(DWORD IPXTaskID);
  196.  
  197.     extern void FAR PASCAL IPXListenForPacket(
  198.                                        DWORD IPXTaskID, 
  199.                                        ECB FAR *eventControlBlock);
  200.  
  201.     extern int  FAR PASCAL IPXOpenSocket(
  202.                                        DWORD IPXTaskID,
  203.                                        WORD FAR *socket, 
  204.                                        BYTE socketType);
  205.  
  206.     extern void FAR PASCAL IPXRelinquishControl(void);
  207.  
  208.     extern void FAR PASCAL IPXScheduleIPXEvent(
  209.                                        DWORD IPXTaskID, 
  210.                                        WORD timeDelay, 
  211.                                        ECB FAR *eventControlBlock);
  212.  
  213.     extern void FAR PASCAL IPXSendPacket(
  214.                                        DWORD IPXTaskID, 
  215.                                        ECB FAR *eventControlBlock);
  216.  
  217.     extern void FAR PASCAL IPXYield(void);
  218.  
  219.     extern BOOL PASCAL     SetUpIPXWindow(void);
  220.  
  221.     extern void FAR PASCAL SPXAbortConnection(
  222.                                        WORD SPXConnID);
  223.  
  224.     extern int  FAR PASCAL SPXEstablishConnection(
  225.                                        DWORD IPXTaskID, 
  226.                                        BYTE retryCount, 
  227.                                        BYTE watchDog, 
  228.                                        WORD FAR *SPXConnID, 
  229.                                        ECB FAR *eventControlBlock);
  230.  
  231.     extern int  FAR PASCAL SPXGetConnectionStatus(
  232.                                        DWORD IPXTaskID, 
  233.                                        WORD SPXConnID, 
  234.                                        CONNECTION_INFO FAR *connectionInfo);
  235.  
  236.     extern int  FAR PASCAL SPXInitialize(  
  237.                                        DWORD FAR *IPXTaskID, 
  238.                                        WORD maxECBs, 
  239.                                        WORD maxPacketSize, 
  240.                                        BYTE FAR *majorRevisionNumber, 
  241.                                        BYTE FAR *minorRevisionNumber, 
  242.                                        WORD FAR *maxConnections, 
  243.                                        WORD FAR *availableConnections);
  244.  
  245.     extern void FAR PASCAL SPXListenForConnection(
  246.                                        DWORD IPXTaskID, 
  247.                                        BYTE retryCount, 
  248.                                        BYTE watchDog, 
  249.                                        ECB FAR *eventControlBlock);
  250.  
  251.     extern void FAR PASCAL SPXListenForSequencedPacket(
  252.                                        DWORD IPXTaskID, 
  253.                                        ECB FAR *eventControlBlock);
  254.  
  255.     extern void FAR PASCAL SPXSendSequencedPacket(
  256.                                        DWORD IPXTaskID, 
  257.                                        WORD SPXConnID, 
  258.                                        ECB FAR *eventControlBlock);
  259.  
  260.     extern void FAR PASCAL SPXTerminateConnection(
  261.                                        DWORD IPXTaskID, 
  262.                                        WORD SPXConnID, 
  263.                                        ECB FAR *eventControlBlock);
  264.  
  265. #ifdef __cplusplus
  266.    }
  267. #endif /* __cplusplus */
  268.  
  269. #endif /* _NXT_H */
  270.