home *** CD-ROM | disk | FTP | other *** search
/ Network Support Encyclopedia 96-1 / novell-nsepro-1996-1-cd2.iso / download / netware / os232.exe / INCLUDE / NXTW.H < prev    next >
C/C++ Source or Header  |  1993-07-08  |  11KB  |  269 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_COMPLETE      0x7777
  145.  
  146.  
  147.    /*----------------------------  PROTOTYPES  ----------------------------*/
  148.  
  149. #ifdef __cplusplus
  150.    extern "C" {
  151. #endif /* __cplusplus */
  152.  
  153.     extern void PASCAL     CloseIPXWindow(void);
  154.  
  155.     extern int FAR PASCAL  IPXCancelEvent(
  156.                                        DWORD IPXTaskID, 
  157.                                        ECB FAR *eventControlBlock);
  158.  
  159.     extern void FAR PASCAL IPXCloseSocket(
  160.                                        DWORD IPXTaskID,
  161.                                        WORD socket);
  162.  
  163.     extern void FAR PASCAL IPXDisconnectFromTarget(
  164.                                        DWORD IPXTaskID, 
  165.                                        BYTE FAR *internetAddress);
  166.  
  167.     extern void FAR PASCAL IPXGetInternetworkAddress(
  168.                                        DWORD IPXTaskID, 
  169.                                        BYTE FAR *internetAddress);
  170.  
  171.     extern WORD FAR PASCAL IPXGetIntervalMarker(
  172.                                        DWORD IPXTaskID );
  173.  
  174.     extern int  FAR PASCAL IPXGetLocalTarget(
  175.                                        DWORD IPXTaskID, 
  176.                                        BYTE FAR *destination, 
  177.                                        BYTE FAR *immediateAddress, 
  178.                                        int FAR *transportTime);
  179.  
  180.     extern WORD FAR PASCAL IPXGetLocalTargetAsync(
  181.                                        AGLT FAR *listenAGLT,
  182.                                        AGLT FAR *sendAGLT,
  183.                                        BYTE FAR *destAddr);
  184.  
  185.     extern WORD FAR PASCAL IPXGetMaxPacketSize(void);
  186.  
  187.     extern WORD FAR PASCAL IPXGetRetryCount(void);
  188.  
  189.     extern int  FAR PASCAL IPXInitialize(
  190.                                        DWORD FAR *IPXTaskID, 
  191.                                        WORD maxECBs, 
  192.                                        WORD maxPacketSize);
  193.  
  194.     extern int  FAR PASCAL IPXSPXDeinit(DWORD IPXTaskID);
  195.  
  196.     extern void FAR PASCAL IPXListenForPacket(
  197.                                        DWORD IPXTaskID, 
  198.                                        ECB FAR *eventControlBlock);
  199.  
  200.     extern int  FAR PASCAL IPXOpenSocket(
  201.                                        DWORD IPXTaskID,
  202.                                        WORD FAR *socket, 
  203.                                        BYTE socketType);
  204.  
  205.     extern void FAR PASCAL IPXRelinquishControl(void);
  206.  
  207.     extern void FAR PASCAL IPXScheduleIPXEvent(
  208.                                        DWORD IPXTaskID, 
  209.                                        WORD timeDelay, 
  210.                                        ECB FAR *eventControlBlock);
  211.  
  212.     extern void FAR PASCAL IPXSendPacket(
  213.                                        DWORD IPXTaskID, 
  214.                                        ECB FAR *eventControlBlock);
  215.  
  216.     extern void FAR PASCAL IPXYield(void);
  217.  
  218.     extern BOOL PASCAL     SetUpIPXWindow(void);
  219.  
  220.     extern void FAR PASCAL SPXAbortConnection(
  221.                                        WORD SPXConnID);
  222.  
  223.     extern int  FAR PASCAL SPXEstablishConnection(
  224.                                        DWORD IPXTaskID, 
  225.                                        BYTE retryCount, 
  226.                                        BYTE watchDog, 
  227.                                        WORD FAR *SPXConnID, 
  228.                                        ECB FAR *eventControlBlock);
  229.  
  230.     extern int  FAR PASCAL SPXGetConnectionStatus(
  231.                                        DWORD IPXTaskID, 
  232.                                        WORD SPXConnID, 
  233.                                        CONNECTION_INFO FAR *connectionInfo);
  234.  
  235.     extern int  FAR PASCAL SPXInitialize(  
  236.                                        DWORD FAR *IPXTaskID, 
  237.                                        WORD maxECBs, 
  238.                                        WORD maxPacketSize, 
  239.                                        BYTE FAR *majorRevisionNumber, 
  240.                                        BYTE FAR *minorRevisionNumber, 
  241.                                        WORD FAR *maxConnections, 
  242.                                        WORD FAR *availableConnections);
  243.  
  244.     extern void FAR PASCAL SPXListenForConnection(
  245.                                        DWORD IPXTaskID, 
  246.                                        BYTE retryCount, 
  247.                                        BYTE watchDog, 
  248.                                        ECB FAR *eventControlBlock);
  249.  
  250.     extern void FAR PASCAL SPXListenForSequencedPacket(
  251.                                        DWORD IPXTaskID, 
  252.                                        ECB FAR *eventControlBlock);
  253.  
  254.     extern void FAR PASCAL SPXSendSequencedPacket(
  255.                                        DWORD IPXTaskID, 
  256.                                        WORD SPXConnID, 
  257.                                        ECB FAR *eventControlBlock);
  258.  
  259.     extern void FAR PASCAL SPXTerminateConnection(
  260.                                        DWORD IPXTaskID, 
  261.                                        WORD SPXConnID, 
  262.                                        ECB FAR *eventControlBlock);
  263.  
  264. #ifdef __cplusplus
  265.    }
  266. #endif /* __cplusplus */
  267.  
  268. #endif /* _NXT_H */
  269.