Metropoli BBS
VIEWER: nwsipx32.h MODE: TEXT (ASCII)
//*++======================================================================
// Program Name:     Ipx/Spx 32-bit API
//
// File Name:        NWSIPX32.H
//
// Version:          v1.00
//
// Abstract:         This module defines the 32-bit API for IPX/SPX
//
// Copyright (C) 1995  Novell, Inc.  All Rights Reserved.
//
// No part of this file may be duplicated, revised, translated, localized,
// or modified in any manner or compiled, linked or uploaded or downloaded
// to or from any computer system without the prior written consent of
// Novell, Inc.
//=====================================================================--*/

#ifndef NWSIPX32_H
#define NWSIPX32_H

//===[ Manifest constants ]================================================

//
// Current API version
//

#define NWSIPX32_API_VERSION	0x00000001


//
// NWTCB Synchronization Types
//
// These types are used to control the request completion notification to
// the application. They are passed as a parameter to the
// NWSipxAllocControlBlock and NWSipxChangeControlBlock API primitives.
//

#define SIPX_API_EVENT					0x00000001 // Request allocs event
#define SIPX_API_MUX_EVENT				0x00000002 // Request allocs mux event
#define SIPX_BLOCKING               0x00000003 // Request is synchronous
#define SIPX_POLLING                0x00000004 // Request will poll
#define SIPX_USER_EVENT             0x00000005 // Request uses app event
#define SIPX_CALLBACK					0x00000006 // Request uses app callback


//
// Event Timeout Constant Definitions.
//
// These constants are used as parameters to the NWSipxWaitForSingleEvent
// and NWSipxWaitForMultipleEvents API primitives.  The SIPX_NO_WAIT
// causes the API primitives to check the signaled status of the events but
// not wait for event completion.  The SIPX_INFINITE_WAIT constant causes
// the wait API primitives to wait forever for the event to be signalled.
//

#define SIPX_NO_WAIT						0x00000000 // Return immediately.
#define SIPX_INFINITE_WAIT				0xFFFFFFFF // Wait forever


//
// Mulitiple API Event Constants
//
// This constant is used when calling NWSipxAllocControlBlock and 
// NWSipxChangeControlBlock with the SIPX_API_MUX_EVENT synchronization type
// specified. A pointer to this constant is passed as a parameter to tell 
// the system to allocate the multiple events from a new event group and pass 
// the event group identifier back in its place.
//

#define SIPX_ALLOC_MUX_GROUP			(SIPXMUXGRP_HANDLE) 0xFFFFFFFF 


//
// Query Service Types
//
// These type are used when calling the NWSipxQueryServices API primitive.
// They are passed in the queryType parameter to specify the type of SAP 
// query to perform.  
//

#define SIPX_ALL_SERVERS				0x00000001 // Query for all servers
#define SIPX_NEAREST_SERVER			0x00000002 // Query for nearest server


//
// Establish Connection Flags
//
// These flags are set when calling the NWSipxEstablishConnection API
// primitive.  They are passed by the application in the NWTCB structure
// in the TCBFlags field.  The SIPX_CONNECT_NO_WATCHDOG flag disables the
// connection keep-alive protocol.
//

#define SIPX_CONNECT_NO_WATCHDOG		0x00000001 // Don't enable the watchdog


//
// Listen For Connection Flags
//
// These flags are set when calling the NWSipxListenForConnection and
// the NWSipxAcceptConnection API primitives.  They are passed by the
// application in the NWTCB structure in the TCBFlags field.  The
// SIPX_LISTEN_DELAY_ACCEPT flag forces the listen request to return
// immediately upon receiving a connection request without replying to the
// request.  The connection request can be satisified later by calling
// NWSipxAcceptConnection.  The SIPX_LISTEN_NO_WATCHDOG flag disables the
// connection keep-alive protocol.
//

#define SIPX_LISTEN_DELAY_ACCEPT		0x00000001 // Delayed connection accept
#define SIPX_LISTEN_NO_WATCHDOG		0x00000002 // Don't enable the watchdog


//
// Terminate Connection Flags
//
// These flags are set when calling the NWSipxTerminateConnection API
// primitive.  They are passed by the application in the NWTCB structure
// in the TCBFlags field.  The SIPX_TERM_ABORT flags causes the local
// connection endpoint to be closed without informing the remote connection
// endpoint.  The SIPX_TERM_ACKED flag cause the remote connection endpoint
//  to be notified that the local endpoint is closing.
//

#define SIPX_TERM_ABORT					0x00000001 // Abort connection
#define SIPX_TERM_ACKED					0x00000002 // SPX terminate
#define SIPX_TERM_REJECT				0x00000004 // Reject connection


//
// Send Message Flags
//
// These flags are set when calling the NWSipxSendMessage API primitive.
// They are passed by the application in the NWTCB structure in the TCBFlags
// field.  The SIPX_SNDMSG_PARTIAL flag tells the SPX driver not to set the
// end-of-message bit in the SPX packet header.  Setting the end-of-message
// bit implies that the entire message was represented in the send request.
// The SIPX_SNDMSG_DSTRM_TYPE flag sets the value in the TCBDatastreamType
// field of the NWTCB in the datastream field of the SPX packet header.  The
// SIPX_SNDMSG_ATTN flag tell the SPX driver to set the SPX attention bit
// in the SPX header of send packet.
//

#define SIPX_SNDMSG_PARTIAL			0x00000001 // Message is not all here
#define SIPX_SNDMSG_DSTRM_TYPE		0x00000002 // Set datastream type
#define SIPX_SNDMSG_ATTN				0x00000004 // Set SPX ATTN bit


//
// Send Datagram Flags
//
// These flags are set when calling the NWSipxSendDatagram API primitive.
// They are passed by the application in the NWTCB structure in the TCBFlags
// field.  The SIPX_SNDDG_PACKET_TYPE flag sets the value in the
// TCBPacketType field of the NWTCB in the packet type field of the IPX
// header.  The SIPX_SNDDG_VERIFY_ROUTE causes IPX to rediscover the route
// to the remote endpoint.  The SIPX_SNDDG_SPECIFIC_ROUTE tells the IPX
// driver to use the subnetwork handle in the TCBSubnetworkHandle field of 
// the NWTCB structure to send the packet.  The SIPX_SNDDG_BEST_ROUTE flag 
// tells the IPX driver to select the best route based on the packet size.  
// The handle of the subnetwork used to send the packet will be returned in 
// the TCBSubnetworkHandle field of the NWTCB structure when the 
// NWSipxSendDatagram request completes.  The SIPX_SNDDG_SPECIFIC_ROUTE and 
// the SIPX_SNDDG_BEST_ROUTE flags are mutually exclusive.  The 
// SIPX_SNDDG_GENERATE_CHKSUM flag causes a checksum to be generated using 
// the IPX packet and set in the checksum field of the IPX header.
//

#define SIPX_SNDDG_PACKET_TYPE		0x00000001 // Set the packet type
#define SIPX_SNDDG_VERIFY_ROUTE		0x00000002 // Get the route again
#define SIPX_SNDDG_SPECIFIC_ROUTE	0x00000004 // Subnetwork specified
#define SIPX_SNDDG_BEST_ROUTE			0x00000008 // Ipx choose best route
#define SIPX_SNDDG_GENERATE_CHKSUM	0x00000010 // Send with checksum


//
// Receive Message Flags
//
// These flags are returned when calling the NWSipxReceiveMessage API
// primitive.  They are returned by the system in the TCBFlags field of the
// NWTCB structure.  The SIPX_RCVMSG_PARTIAL is returned when the
// end-of-message bit in the received SPX header is not set or if the
// received data overflows the application's buffer.  If the
// SIPX_RCVMSG_PARTIAL bit is not set, end-of-message is implied and the
// entire message has been received.  The SIPX_RCVMSG_ATTN flag is returned
// when the SPX attention bit is set in the received SPX header.
//

#define SIPX_RCVMSG_PARTIAL			0x00000001 // More data to receive
#define SIPX_RCVMSG_ATTN				0x00000002 // Received SPX ATTN bit


//
// Receive Datagram Flags
//
// These flags are set when calling the NWSipxReceiveDatagram API primitive.
// They are passed by the application in the TCBFlags field of the NWTCB
// structure.  The SIPX_RCVDG_VALIDATE_CHKSUM flag causes the checksum
// received in the IPX packet header to be verified.
//

#define SIPX_RCVDG_VALIDATE_CHKSUM	0x00000001 // Validate received checksum


//
// Query For Services Flags
//
// The SIPX_QUERY_SPECIFIC_ROUTE is used to tell the query process which
// subnetwork to send the query request out on.
//

#define SIPX_QUERY_SPECIFIC_ROUTE	0x00000001 // Use specified subnetwork 


//
// Transport events.
//
// These are events that the application may register to receive
// notification for when calling the NWSipxRegisterForTransportEvent API
// primitive.  They are passed by the application in the TCBTransportEvent
// field of the NWTCB structure.
//

#define SIPX_LISTEN_FOR_DISCONNECT	0x00000001	// Listen for remote term
#define SIPX_SCHEDULE_TIMER_EVENT	0x00000002	// Schedule timer event
#define SIPX_SUBNET_STATUS_CHANGE	0x00000003	// Subnet status change


//
// Information Levels
//
// Each level causes different information to be set or retrieved.  These
// levels are passed by the application as parameters to the
// NWSipxGetInfomation and NWSipxSetInformation API primitives.
// 
//

#define SIPX_API_INFORMATION			0x00000001
#define SIPX_SOCKET_INFORMATION		0x00000002
#define SIPX_CONN_INFORMATION			0x00000003
#define SIPX_NWTCB_INFORMATION		0x00000004


//
// Maximum Transport Address Length
//
// This is the maximum length of a transport address.  It is used in the
// NETADDR structure.
//

#define SIPX_MAX_TRANS_ADDR_LEN		32


//
// Connection States
//
// These values are retrieved in the SIPX_CONN_INFO structure by the
// NWSipxGetInformation API primitive and represent the current state of
// the specified connection.
//

#define SIPX_ALLOCATED					0x00000001
#define SIPX_CONNECTING					0x00000002
#define SIPX_LISTENING					0x00000003
#define SIPX_WAITING_ACCEPT			0x00000004
#define SIPX_CONNECTED					0x00000005
#define SIPX_TERMINATING				0x00000006
#define SIPX_TERMINATED					0x00000007


//
// NWTCB State Parameters
//
// These values are retrieved in the SIPX_NWTCB_INFO structure by the
// NWSipxGetInformation API primitive and describe the current state of the
// specified NWTCB.
//

#define	SIPX_TCB_ALLOCATED			0x00000000 // Control block is allocated
#define	SIPX_TCB_IN_USE				0x00000001 // Control block is in use


//
//
// Connection Parameters.
//
// These values are set and retreived in the SIPX_CONN_INFO structure by the
// NWSipxGetInformation and NWSipxSetInformation API primitives.
// SIPX_CONN_STREAM tells the SPX driver to ignore the end-of-message bit
// and hand up any received data as soon as it arrives, even if the buffer
// is not full.  SIPX_CONN_MESSAGE value causes the SPX driver to respect
// the end-of-message bit.  The SIPX_CONN_LONG_TERM and SIPX_CONN_SHORT_TERM
// values specifies to the SPX driver the lifetime of the connection.
//

#define SIPX_CONN_STREAM				0x00000001 // Ignore the EOM bit
#define SIPX_CONN_MESSAGE				0x00000002 // Respect the EOM bit
#define SIPX_CONN_LONG_TERM			0x00000003 // Long lived connection
#define SIPX_CONN_SHORT_TERM			0x00000004 // Short lived connection


//
// Socket Parameters
//
// These values are set and retreived in the SIPX_SOCKET_INFO structure by
// the NWSipxGetInformation and NWSipxSetInformation API primitives.  The
// SIPX_SOCK_STATIC and the SIPX_SOCK_DYNAMIC flags tells whether the
// specified socket is a named socket or a dynamic socket.
//

#define SIPX_SOCK_STATIC				0x00000001 // Named socket
#define SIPX_SOCK_DYNAMIC				0x00000002 // Dynamic socket


//
// SUBNET Parameters
//				
// These values are retreived in the SIPX_SUBNET_INFO structure by
// the NWSipxGetInformation API primitive.  The SIPX_SN_XSUM_FLAG
// tells whether the SUBNET supports checksumming.  The SIPX_SN_DEFAULT_FLAG
// indicates that this SUBNET is the default subnetwork.  
//

#define SIPX_SN_XSUM_FLAG				0x00000001 // Checksum supported
#define SIPX_SN_DEFAULT_FLAG			0x00000002 // This is the default subnet
#define SIPX_SN_ACTIVE_FLAG			0x00000004 // Subnet is active


//
// Status Code Definitions
//
// These status codes are returned by the API primitives.  Macros are
// defined to quickly check whether the status is informational or
// indicates an error.
//

#define SIPX_SUCCESS(x)	!(((nuint32)(x)) & 0x80000000)
#define SIPX_ERROR(x)	 (((nuint32)(x)) & 0x80000000)


//
// If the most significant bit of the return status code is set, this
// indicates an error condition.  If the second most significant bit is
// set, this indicates a warning or informational status.  If both these
// bits are clear, the operation was successful.
//

#define SIPX_SUCCESSFUL						0x00000000
#define SIPX_PENDING							0x00000001

#define SIPX_ACCESS_DENIED					0x80000001
#define SIPX_ACCESS_VIOLATION				0x80000002
#define SIPX_CANCELED               	0x80000003
#define SIPX_CONNECTION_ABORTED			0x80000004
#define SIPX_CANNOT_CANCEL					0x80000005
#define SIPX_CONNECTION_TERMINATED		0x80000006
#define SIPX_INSUFFICIENT_RESOURCES		0x80000007
#define SIPX_INVALID_SUBNETWORK_HANDLE	0x80000008
#define SIPX_INVALID_CHECKSUM				0x80000009
#define SIPX_INVALID_CONNECTION_HANDLE	0x8000000A
#define SIPX_INVALID_FRAGMENT_COUNT		0x8000000B
#define SIPX_INVALID_FRAGMENT_LIST		0x8000000C
#define SIPX_INVALID_HANDLE				0x8000000D
#define SIPX_INVALID_IOCTL_BUFFER_LEN	0x8000000E
#define SIPX_INVALID_IOCTL_FUNCTION		0x8000000F
#define SIPX_INVALID_INFO_TYPE			0x80000010
#define SIPX_INVALID_MUX_GROUP_HANDLE	0x80000012
#define SIPX_INVALID_NETWORK_ADDRESS	0x80000013
#define SIPX_INVALID_NWTCB					0x80000014
#define SIPX_INVALID_NWTCB_FLAGS			0x80000015
#define SIPX_INVALID_PARAMETER			0x80000016
#define SIPX_INVALID_PARAMETER_MIX		0x80000017
#define SIPX_INVALID_QUERY_TYPE			0x80000018
#define SIPX_INVALID_SERVICE_TYPE		0x80000019
#define SIPX_INVALID_SOCKET_HANDLE		0x8000001A
#define SIPX_INVALID_STATE					0x8000001B
#define SIPX_INVALID_SYNC_TYPE			0x8000001C
#define SIPX_INVALID_TRANSPORT_EVENT	0x8000001D
#define SIPX_MEMORY_LOCK_ERROR			0x8000001E
#define SIPX_NO_SUBNETS_BOUND_TO_IPX	0x8000001F
#define SIPX_NO_RESPONSE_FROM_TARGET	0x80000020 
#define SIPX_NO_ROUTE_TO_TARGET			0x80000021
#define SIPX_SERVICE_NOT_ACTIVE			0x80000022
#define SIPX_NWTCB_IN_USE					0x80000023
#define SIPX_PARTIAL_SERVER_INFO			0x80000024
#define SIPX_REQUEST_NOT_PENDING			0x80000025
#define SIPX_SOCKET_IN_USE					0x80000026
#define SIPX_UNSUCCESSFUL					0x80000027
#define SIPX_INTERNAL_ERROR				0x80000028
#define SIPX_SERVICE_ALREADY_ACTIVE		0x80000029
#define SIPX_INVALID_SERVICE_NAME 		0x8000002A


//===[ Type definitions ]==================================================

//
// Transport address types.
//

typedef enum TAG_TRANSPORT_ADDR_TYPE
{
	TA_IPX_SPX,
	TA_COUNT

} TRANSPORT_ADDR_TYPE;


//
// NetWare IPX/SPX transport address structure definition.
//

typedef struct TAG_IPXADDR
{
	nuint8	NANet[4];
	nuint8	NANode[6];
	nuint8	NASocket[2];
	
} IPXADDR, *PIPXADDR;


//
// Transport Address Structure
//
// This structure can be used to define multiple address types.
// The only address type currently supported is the TA_IPX_SPX type.
//

typedef struct TAG_NETADDR
{
	nuint32	NAType;
	nuint32	NALength;
	union
	{
		nuint8	NAGenAddress[SIPX_MAX_TRANS_ADDR_LEN];
		IPXADDR	NAIpxAddress;

	} NAAddress;

} NETADDR, *PNETADDR;


//
// Data fragment structure defintion.
//

typedef struct TAG_FRAGMENT
{
	nptr		FAddress;
	nuint32	FLength;

} FRAGMENT, *PFRAGMENT;


//
// SIPX Handle structure definition
//

struct TAG_SIPXHANDLE;	


//
// Transport address object context definition.
//

typedef struct TAG_SIPXHANDLE	*SIPXSOCK_HANDLE, **PSIPXSOCK_HANDLE;


//
// NetWare transport connection context structure.
//


typedef struct TAG_SIPXHANDLE	*SIPXCONN_HANDLE, **PSIPXCONN_HANDLE;


//
// Subnetwork object context definition.
//

typedef struct TAG_SIPXHANDLE	*SIPXSUBNET_HANDLE, **PSIPXSUBNET_HANDLE;


//
// MuxGroup object context definition.
//

typedef struct TAG_SIPXHANDLE	*SIPXMUXGRP_HANDLE, **PSIPXMUXGRP_HANDLE;


//
// NetWare transport control block structure definition.
//

typedef struct	TAG_NWTCB
{
	//
	// Link pointers for control block list manipulation.
	//

	struct TAG_NWTCB 	*TCBNext;
	struct TAG_NWTCB	*TCBPrevious;


	//
	// The socket handle returned by NWSipxOpenSocket.
	//

	SIPXSOCK_HANDLE	TCBSockHandle;


	//
	// The connection handle returned by NWSipxOpenConnectionEndpoint.
	//

	SIPXCONN_HANDLE	TCBConnHandle;


	//
	// Client specific context field, typically used when specifing
	// a callback routine.
	//

	nptr					TCBClientContext;


	//
	// Transport event parameters.  These are used when registering
	// for specific transport events.
	//

	nuint32				TCBTransportEvent;
	union
	{
		nuint32			TCBTimeout;
		nuint8			TCBEventSpace[32];

	} TCBEvent;


	//
	// The final status for the request just completed.
	//

	nuint32				TCBFinalStatus;


	//
	// Number of bytes sent or received on a transfer (send/receive) data
	// operation.
	//

	nuint32				TCBBytesTransferred;


	//
	// Request/Reply flags used to set or indicate status.
	//

	nflag32				TCBFlags;


	//
	// Network address of remote client.  Filled in by
	// NWSipxListenForConnection and NWSipxReceiveDatagram.  Set by
	// application for NWSipxEstablishConnection and NWSipxSendDatagram.
	//

	NETADDR				TCBRemoteAddress;


	//
	// Handle of subnetwork used to send or receive packet.  The subnetwork
	// handle may be set in this field by the application when using the
	// NWSipxSendDatagram API primitive to direct IPX to use a specific
	// subnetwork.  The handle of the subnetwork used to send or receive the
	// packet is returned in this field upon completion of the
	// NWSipxSendDatagram, NWSipxReceiveDatagram, NWSipxEstablishConnection
	// and NWSipxListenForConnection requests.
	//

	SIPXSUBNET_HANDLE	TCBSubnetworkHandle;


	//
	// Message sequence number.
	//

	nuint32				TCBMsgSequenceNumber;


	//
	// IPX packet type.
	//

	nuint8				TCBPacketType;


	//
	// SPX Datastream type.
	//

	nuint8				TCBDataStreamType;


	//
	// Reserved for future use.
	//


	nuint8				TCBReserved[2];


	//
	// Number of data fragments specified by the client.
	//

	nuint32				TCBFragmentCount;


	//
	// Pointer to the client data fragment list.
	//

	PFRAGMENT			TCBFragmentList;

} NWTCB, *PNWTCB, **PPNWTCB;


//
// API Information Structure
//
//
// The SUBNET_INFO structure is associated with the API_INFO structure.
// Each SUBNET_INFO structure describes an attachment to the network.
// There is a unique local network address (net.node) bound to each SUBNET
// by the IPX protocol stack.
//

typedef struct TAG_SIPX_SUBNET_INFO
{
	SIPXSUBNET_HANDLE	SNSubnetworkHandle;
	nuint32				SNMaxNsduSize;
	NETADDR				SNNetAddress;
	nflag32				SNFlags;

} SIPX_SUBNET_INFO, *PSIPX_SUBNET_INFO;


typedef struct  TAG_SIPX_API_INFO
{
	nuint32				AIApiVersion;
	nuint32				AIIpxVersion;
	nuint32				AISpxVersion;
	nuint32				AISubnetCount;			// Number of SUBNETs bound to by IPX
	SIPX_SUBNET_INFO	AISubnetInfo[1];		// Array of AISubnetCount entries

} SIPX_API_INFO, *PSIPX_API_INFO;


//
// Socket Information Structure
//

typedef struct  TAG_SIPX_SOCKET_INFO
{
	nuint32				SIIpxVersion;
	nflag32				SIAttributeFlags;
	nuint16				SISocketNumber;
	nuint16				SIReserved;
	nuint32				SIPacketType;
	SIPXSUBNET_HANDLE	SISubnetworkHandle;

} SIPX_SOCKET_INFO, *PSIPX_SOCKET_INFO;


//
// Connection Information Structure
//
typedef struct  TAG_SIPX_CONN_INFO
{
	nuint32	CISpxVersion;
	nuint32	CIState;
	nuint32	CIDataStreamType;
	nuint32	CIConnectionProfile;
	nuint32	CIInputMode;
	nuint32	CIStreamingTimer;
	nuint32	CIRetryCount;
	nptr		CISocketHandle;
	nuint32	CIMaxTsduSize;

} SIPX_CONN_INFO, *PSIPX_CONN_INFO;


//
// NWTCB Information Structure
//
typedef struct  TAG_SIPX_NWTCB_INFO
{
	nuint32	NWIState;
	nuint32	NWIEventType;
	nuint32  NWIEventInfo;

} SIPX_NWTCB_INFO, *PSIPX_NWTCB_INFO;


//
// Service Information Structure
//
//
// The SIPX_SERVICE_INFO structure is used with the NWSipxQueryServices API 
// primitive.  One or more SIPX_SERVICE_INFO structures are returned in the
// data space provided by the client application.  These structures contain
// the requested server information.
//

typedef struct TAG_SIPX_SERVICE_INFO
{
	nuint16	SIServerType;		
	nstr8		SIServerName[48];
	nuint8	SINetwork[4];
	nuint8	SINode[6];
	nuint8	SISocket[2];
	nuint16	SIHops;

} SIPX_SERVICE_INFO, *PSIPX_SERVICE_INFO;


//===[ Function prototypes ]===============================================

N_EXTERN_LIBRARY(nuint32)
NWSipxAcceptConnection
(
	PNWTCB				pNwtcb,
	SIPXCONN_HANDLE	hAcceptHandle
);


N_EXTERN_LIBRARY(nuint32)
NWSipxAdvertiseService
(
	nuint16				serviceType,
	pnstr8				pServerName,
	SIPXSOCK_HANDLE	hSockHandle
);


N_EXTERN_LIBRARY(nuint32)
NWSipxAllocControlBlock
(
	nuint32				syncType,
	nptr					pEventInfo,
	PPNWTCB				ppNwtcb
);


N_EXTERN_LIBRARY(nuint32)
NWSipxCancelAdvertiseService
(
	nuint16				serviceType,
	pnstr8				pServerName,
	SIPXSOCK_HANDLE	hSockHandle
);


N_EXTERN_LIBRARY(nuint32)
NWSipxCancelPendingRequest
(
	PNWTCB				pNwtcb
);


N_EXTERN_LIBRARY(nuint32)
NWSipxChangeControlBlock
(
	nuint32				syncType,
	nptr					pEventInfo,
	PNWTCB				pNwtcb
);


N_EXTERN_LIBRARY(nuint32)
NWSipxCheckRequestComplete
(
	PNWTCB				pNwtcb
);


N_EXTERN_LIBRARY(nuint32)
NWSipxCloseConnectionEndpoint
(
	SIPXCONN_HANDLE	hConnHandle
);


N_EXTERN_LIBRARY(nuint32)
NWSipxCloseSocket
(
	SIPXSOCK_HANDLE	hSockHandle
);


N_EXTERN_LIBRARY(nuint32)
NWSipxEstablishConnection
(
	PNWTCB				pNwtcb
);


N_EXTERN_LIBRARY(nuint32)
NWSipxFreeControlBlock
(
	PNWTCB				pNwtcb
);


N_EXTERN_LIBRARY(nuint32)
NWSipxFreeInformation
(
	nptr					pInfoStruct
);


N_EXTERN_LIBRARY(nuint32)
NWSipxGetInformation
(
	nuint32				infoType,
	nptr					hHandle,
	pnptr					ppInfoStruct,
	pnuint32				pInfoStructLen
);


N_EXTERN_LIBRARY(nuint32)
NWSipxGetInternetAddress
(
	SIPXSOCK_HANDLE	hSockHandle,
	PNETADDR				pNetAddress
);


N_EXTERN_LIBRARY(nuint32)
NWSipxGetMaxNsduSize
(
	SIPXSOCK_HANDLE	hSockHandle
);


N_EXTERN_LIBRARY(nuint32)
NWSipxGetMaxTsduSize
(
	SIPXCONN_HANDLE	hConnHandle
);


N_EXTERN_LIBRARY(nuint32)
NWSipxListenForConnection
(
	PNWTCB				pNwtcb
);


N_EXTERN_LIBRARY(nuint32)
NWSipxOpenConnectionEndpoint
(
	pnuint16				pSocket,
	PSIPXCONN_HANDLE	pConnHandle
);


N_EXTERN_LIBRARY(nuint32)
NWSipxOpenSocket
(
	pnuint16				pSocket,
	PSIPXSOCK_HANDLE	pSockHandle
);


N_EXTERN_LIBRARY(nuint32)
NWSipxQueryServices
(
	nuint16				queryType,
	nuint16				serviceType,
	PNWTCB				pNwtcb
);


N_EXTERN_LIBRARY(nuint32)
NWSipxReceiveDatagram
(
	PNWTCB				pNwtcb
);


N_EXTERN_LIBRARY(nuint32)
NWSipxReceiveMessage
(
	PNWTCB				pNwtcb
);


N_EXTERN_LIBRARY(nuint32)
NWSipxRegisterForTransportEvent
(
	PNWTCB 				pNwtcb
);


N_EXTERN_LIBRARY(nuint32)
NWSipxSendDatagram
(
	PNWTCB				pNwtcb
);


N_EXTERN_LIBRARY(nuint32)
NWSipxSendMessage
(
	PNWTCB				pNwtcb
);


N_EXTERN_LIBRARY(nuint32)
NWSipxSetInformation
(
	nuint32				infoType,
	nptr					hHandle,
	nptr					pInfoStruct
);


N_EXTERN_LIBRARY(nuint32)
NWSipxTerminateConnection
(
	PNWTCB				pNwtcb
);


N_EXTERN_LIBRARY(nuint32)
NWSipxWaitForSingleEvent
(
	PNWTCB				pNwtcb,
	nuint32				timeOut
);


N_EXTERN_LIBRARY(nuint32)
NWSipxWaitForMultipleEvents
(
	SIPXMUXGRP_HANDLE	muxGroupHandle,
	nuint32				timeOut,
	PPNWTCB				ppNwtcb
);


//===[ Global variables ]==================================================

#endif	// NWSIPX32_H

//=========================================================================
//=========================================================================
[ RETURN TO DIRECTORY ]