Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

211 lines
4.9 KiB

/*[
* Product: SoftPC-AT Revision 3.0
* Name: ipx.h
* Derived From: Original
* Author: Jase
* Created On: Oct 6 1992
* Sccs ID: 12/11/92 @(#)ipx.h 1.5
* Purpose: Base defines & typedefs for IPX implementations.
*
* (c)Copyright Insignia Solutions Ltd., 1990. All rights reserved.
*
* Rcs ID:
* $Source: /masterNeXT3.0/host/inc/RCS/next_novell.h,v $
* $Revision: 1.2 $
* $Date: 92/10/15 14:37:48 $
* $Author: jason $
]*/
/* DEFINES */
/* IPX device file */
#define sIPXDevice "/dev/ipx"
/* IPX function selector codes */
#define kIPXOpenSocket 0x00
#define kIPXCloseSocket 0x01
#define kIPXGetLocalTarget 0x02
#define kIPXSendPacket 0x03
#define kIPXListenForPacket 0x04
#define kIPXScheduleEvent 0x05
#define kIPXCancelEvent 0x06
/* note missing 0x07 selector */
#define kIPXGetIntervalMarker 0x08
#define kIPXGetInternetAddress 0x09
#define kIPXRelinquishControl 0x0a
#define kIPXDisconnectFromTarget 0x0b
/* SPX function selector codes */
#define kSPXInitialize 0x10
#define kSPXEstablishConnection 0x11
#define kSPXListenForConnection 0x12
#define kSPXTerminateConnection 0x13
#define kSPXAbortConnection 0x14
#define kSPXGetConnectionStatus 0x15
#define kSPXSendSequencedPacket 0x16
#define kSPXListenForSequencedPacket 0x17
/* selector code bounds */
#define kMinSelector 0x00
#define kMaxSelector 0x17
/* in-use codes */
#define kAvailable 0x00
#define kCounting 0xfd
#define kListening 0xfe
#define kSending 0xff
/* completion codes */
#define kSuccess 0x00
#define kWatchdogTerminate 0xed
#define kNoPathFound 0xfa
#define kEventCancelled 0xfc
#define kPacketOverflow 0xfd
#define kSocketTableFull 0xfe
#define kNotInUse 0xff
#define kSocketAlreadyOpen 0xff
#define kNoSuchSocket 0xff
/* number of open sockets we support */
/* currently at IPX maximum */
#define kMaxOpenSockets 150
/* maximum size of IPX packet */
#define kMaxPacketSize 576
/* packet buffer size */
#define kPacketBufferSize 1536
/* maximum NCP data size - for IPXGetBufferSize function */
#define kMaxNCPDataSize 1024
/* size of IPX header */
#define kHeaderSize 30
/* event types */
#define kNoEvent 0
#define kIPXEvent 1
#define kAESEvent 2
/********************************************************/
/* TYPEDEFS */
/* IPX structures */
typedef struct
{
USHORT packetChecksum;
USHORT packetLength;
UTINY packetControl;
UTINY packetType;
UTINY packetDestNet [4];
UTINY packetDestNode [6];
UTINY packetDestSock [2];
UTINY packetSrcNet [4];
UTINY packetSrcNode [6];
UTINY packetSrcSock [2];
} IPXHeaderRec;
typedef struct
{
UTINY net [4];
UTINY node [6];
UTINY sock [2];
} IPXAddressRec;
/* DOS ECB record (from NetWare DOS Programmers Guide) */
typedef struct ECB
{
sys_addr ecbLinkAddress;
UTINY ecbESRAddress [4];
UTINY ecbInUseFlag;
UTINY ecbCompletionCode;
USHORT ecbSocketNumber;
UTINY ecbIPXWorkspace [4];
UTINY ecbDriverWorkspace [12];
UTINY ecbImmediateAddress [6];
USHORT ecbFragmentCount;
UTINY ecbFragmentAddress1 [4];
USHORT ecbFragmentSize1;
UTINY ecbFragmentAddress2 [4];
USHORT ecbFragmentSize2;
} ECBRec;
/* host IPX implementation structures */
typedef struct
{
int socketFD;
USHORT socketNumber;
BOOL socketTransient;
} SocketRec;
/* linked-list of IPX or AES events */
typedef struct Event
{
struct Event *eventNext;
struct Event *eventPrev;
UTINY eventType;
sys_addr eventECB;
SocketRec *eventSocket;
USHORT eventClock;
} EventRec;
typedef struct
{
BOOL ipxInitialised;
USHORT ipxSelector;
USHORT ipxClock;
UTINY ipxNetwork [4];
UTINY ipxNode [6];
UTINY ipxBuffer [kPacketBufferSize];
SocketRec ipxSockets [kMaxOpenSockets];
EventRec *ipxQueue;
EventRec *ipxEvent;
} IPXGlobalRec;
/********************************************************/
/* PROTOTYPES */
/* imports */
/* dispatchers */
IMPORT VOID IPXBop IPT0 ();
IMPORT VOID IPXHost IPT0 ();
/* host interface stuff */
IMPORT BOOL host_ipx_init IPT0 ();
IMPORT VOID host_ipx_tick IPT0 ();
IMPORT VOID host_ipx_raise_exception IPT0 ();
IMPORT BOOL host_ipx_open_socket IPT1 (SocketRec *, socket);
IMPORT VOID host_ipx_close_socket IPT1 (SocketRec *, socket);
IMPORT VOID host_ipx_send_packet IPT1 (SocketRec *, socket);
IMPORT BOOL host_ipx_poll_socket IPT1 (SocketRec *, socket);
IMPORT VOID host_ipx_load_packet IPT2
(SocketRec *, socket, sys_addr, ecbAddress);
IMPORT BOOL host_ipx_save_packet IPT2
(SocketRec *, socket, sys_addr, ecbAddress);
IMPORT BOOL host_ipx_rip_query IPT1 (IPXAddressRec *, ipxAddr);
/* base stuff accessed from host */
IMPORT EventRec *FindEvent IPT3
(UTINY, linkType, sys_addr, ecbAddress, SocketRec *, linkSocket);
/********************************************************/