mirror of https://github.com/lianthony/NT4.0
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
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 *************************/
|