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.
 
 
 
 
 
 

173 lines
5.3 KiB

/*[
* Name: novell.h
*
* Derived From: original
*
* Author: David Linnard
*
* Created On: 28th May, 1992
*
* Purpose : Main Novell include file
*
* Interface:
*
* (c)Copyright Insignia Solutions Ltd., 1991. All rights reserved.
]*/
/* SccsID[]="@(#)novell.h 1.11 05/15/95 Copyright Insignia Solutions Ltd."; */
/*
* Constants and macros to access Transmit Control Blocks (TCBs)
*/
/* TCB fields */
#define TCBDriverWS 0 /* 6 bytes of driver workspace - unused by us */
#define TCBDataLength 6 /* Total frame length - But use CX for real value for Ethernet */
#define TCBFragStrucPtr 8 /* FAR pointer to Fragment Structure */
#define TCBMediaHeaderLen 12 /* Length of Media header - which comes next. May be zero */
#define TCBMediaHeader 14 /* The media header */
#define getTCBDataLength(TCB) sas_w_at(TCB+TCBDataLength)
#define getTCBFragStruc(TCB) effective_addr( sas_w_at( TCB+TCBFragStrucPtr + 2 ), sas_w_at( TCB+TCBFragStrucPtr ) )
#define getTCBMediaHdrLen(TCB) sas_w_at(TCB+TCBMediaHeaderLen)
#define getTCBMediaHdr(TCB,i) sas_hw_at(TCB+TCBMediaHeader+i)
/* Fragment structure fields */
#define FFragmentCount 0 /* Number of fragments. Cannot be zero */
#define FFrag0Address 2 /* FAR pointer to first fragment data */
#define FFrag0Length 6 /* Length of first fragment */
#define getnTFrags(FF) sas_w_at(FF+FFragmentCount)
#define getTFragPtr(FF,i) effective_addr( sas_w_at( FF+FFrag0Address+6*i+2 ), sas_w_at( FF+FFrag0Address+6*i ) )
#define getTFragLen(FF,i) sas_w_at(FF+FFrag0Length+6*i)
/*
* Constants and macros to access Receive Control Blocks (RCBs)
*/
/* RCB fields */
#define RCBDriverWS 0 /* 8 bytes of driver workspace - unused by us */
#define RCBReserved 8 /* 36 bytes of reserved space */
#define RCBFragCount 44 /* Number of fragments */
#define RCBFrag0Addr 46 /* Pointer to first fragment */
#define RCBFrag0Len 50 /* Length of first fragment */
#define getnRFrags(RCB) sas_w_at(RCB+RCBFragCount)
#define getRFragPtr(RCB,i) effective_addr( sas_w_at( RCB+RCBFrag0Addr+6*i+2 ), sas_w_at( RCB+RCBFrag0Addr+6*i ) )
#define getRFragLen(RCB,i) sas_w_at(RCB+RCBFrag0Len+6*i)
/* Media/Frame types as defined in Appendix B-2 of ODI Developer's Guide */
#define VIRTUAL_LAN 0 /* Used for 'tunnelled' IPX on APpleTalk */
#define ENET_II 2
#define ENET_802_2 3
#define ENET_802_3 5
#define ENET_SNAP 10
#define TOKN_RING 4
#define TOKN_RING_SNAP 11
/* Max number of active protocols - Should be plenty!! */
#define MAX_PROTOS 10
/* AddProtocolID errors as defined on p. 15-8 of ODI Developer's Guide */
#define LSLERR_OUT_OF_RESOURCES 0x8001
#define LSLERR_BAD_PARAMETER 0x8002
#define LSLERR_DUPLICATE_ENTRY 0x8009
/* network hardware defines */
#define ENET_HARDWARE 1
#define TOKN_HARDWARE 2
/* size of standard IPX header */
#define IPX_HDRSIZE 30
/* maximum Ethernet multicast addresses */
#define MAX_ENET_MC_ADDRESSES 16
/************************ typedefs ***********************/
typedef struct
{
IU16 frameID;
IU8 protoID[6];
int fd;
} ODIproto;
/* define a 6 byte quantity for use in the wds hdr */
typedef unsigned char netAddr[6];
typedef unsigned long netNo ;
/* Note that word quantities in IPX headers are BIGEND */
typedef struct
{
IU16 checksum ; /* Checksum - always FFFF */
IU16 IPXlength ; /* Length according to IPX */
IU8 transport ; /* Count of bridges enountered? */
IU8 type ; /* Packet type - usually 0 or 4 */
netNo destNet ; /* Destination network */
netAddr destNode ; /* Destination Ethernet address */
IU16 destSock ; /* Destination socket */
netNo srcNet ; /* Source network */
netAddr srcNode ; /* Source Ethernet address */
IU16 srcSock ; /* Source socket */
IU8 data[547] ; /* The packet */
} IPXPacket_s ;
typedef struct rcvPacket_t
{
IU8 length[2]; /* Packet length if any */
IU8 MAChdr[14]; /* MAC size - right for E2 & 802.3 */
IPXPacket_s pack; /* The received IPX packet */
} rcvPacket_s ;
/* Host routine declarations */
extern IU32 host_netInit IPT2 (IU16, frame, IU8 *, nodeAddr);
extern void host_termNet IPT0 ();
extern IU32 host_AddProtocol IPT2
(IU16, frameType, IU8 *, protoID) ;
extern void host_DelProtocol IPT2
(IU16, frameType, IU8 *, protoID) ;
extern void host_sendPacket IPT2
(sys_addr, theTCB, IU32, packLen) ;
extern void host_AddEnetMCAddress IPT1 (IU8 *, address);
extern void host_DeleteEnetMCAddress IPT1 (IU8 *, address);
extern void host_changeToknMultiCast IPT2
(IU16, addrPt1, IU16, addrPt2);
extern void host_changePromiscuous IPT2
(IU16, boardNo, IU16, enableDisableMask ) ;
extern IU16 host_OpenSocket IPT1 (IU16, socketNumber);
extern void host_CloseSocket IPT1 (IU16, socketNumber);
/* Base routine declarations */
extern void movReadBuffIntoM IPT0 ();
extern void DriverInitialize IPT0 ();
extern void DriverSendPacket IPT0 ();
extern void DriverReadPacket IPT0 ();
extern void DriverMulticastChange IPT0 ();
extern void DriverShutdown IPT0 ();
extern void DriverAddProtocol IPT0 ();
extern void DriverChangePromiscuous IPT0 ();
extern void DriverCheckForMore IPT0 ();
#ifdef V4CLIENT
extern void ODIChangeIntStatus IPT1 ( IU16, status ) ;
#endif /* V4CLIENT */
extern void net_term IPT0 ();
/* misc defines */
#ifndef PROD
#define NOT_FOR_PRODUCTION( someCode ) someCode ;
#else
#define NOT_FOR_PRODUCTION( someCode )
#endif
/********************** end of novell.h *************************/