You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

338 lines
8.0 KiB
C

#ifndef _LLCIO_H
#define _LLCIO_H
/************************************************************************/
/* SISCO SOFTWARE MODULE HEADER *****************************************/
/************************************************************************/
/* (c) Copyright Systems Integration Specialists Company, Inc., */
/* 1994, All Rights Reserved */
/* */
/* MODULE NAME : llcio.h */
/* PRODUCT(S) : osillc.sys */
/* */
/* MODULE DESCRIPTION : */
/* */
/* GLOBAL FUNCTIONS DEFINED IN THIS MODULE : */
/* */
/* MODIFICATION LOG : */
/* Date Who Rev Comments */
/* -------- --- ------ ------------------------------------------- */
/* 05/21/98 IKE 03 Converted to 7.0 Data types, removed */
/* underscores so it can be compiled */
/* 11/02/95 DSF 02 Enhanced to retrieve stats information */
/* 12/08/94 DSF 01 Added SET_OFFSET */
/* 03/10/94 DSF Initial Release */
/************************************************************************/
/*
** User Functions
*/
int LlcOpen (char *Name);
int LlcClose (int fd);
int LlcWrite (int fd, char *buffer, int size);
int LlcRead (int fd, char *buffer, int size);
int LlcIoctl (int fd, void *pArg, int size);
/*
** IOCTL Management
*/
/*
** LLC Driver IOCTL requests
*/
#define LLC_ADD_MULTI 1
#define LLC_DEL_MULTI 2
#define LLC_GET_HW_ADDR 3
#define LLC_SET_FRAME_FILTER 4
#define LLC_BIND_LSAP 5
#define LLC_UNBIND_LSAP 6
#define LLC_TRACE_ON 7
#define LLC_TRACE_OFF 8
#define LLC_DEBUG_ON 9
#define LLC_DEBUG_OFF 10
#define LLC_GET_PROTO_STATS 11
#define LLC_GET_MAC_STATS 12
#define LLC_ARM_SIGNAL 13
#define LLC_ARM_POST 15
#define LLC_GET_EMB_PHYS_ADDR 16
#define LLC_SET_WRITE_CONFIRM_FLAG 17
#define LLC_GET_DEBUG 18
#define LLC_POST_BUFS 19
#define LLC_SET_OFFSET 20
#define LLC_GET_MAC_CHARS 21
#define LLC_CLEAR_MAC_STATS 22
#define LLC_CLEAR_PROTO_STATS 23
/*
** LLC Driver IOCTL Errors
*/
#define LLCERR_NO_ERROR 0
#define LLCERR_LSAP_BOUND 1
#define LLCERR_LSAP_NOTBOUND 2
#define LLCERR_ILLEGAL_OPERATION 3
#define LLCERR_UNKNOWN_COMMAND 4
#define MAX_HWADDR_SIZE 12
typedef struct
{
int Opcode;
int Status;
} LLCGENERICIOCTL;
typedef struct
{
int Opcode;
int Status;
int cSize;
char Multicast[MAX_HWADDR_SIZE];
} LLCADDMULTI;
typedef struct
{
int Opcode;
int Status;
int cSize;
char Multicast[MAX_HWADDR_SIZE];
} LLCDELMULTI;
typedef struct
{
int Opcode;
int Status;
int cSize;
char HwAddr[MAX_HWADDR_SIZE];
} LLCGETHWADDR;
typedef struct
{
int Opcode;
int Status;
unsigned Lsap;
} LLCBINDLSAP;
typedef struct
{
int Opcode;
int Status;
} LLCUNBINDLSAP;
typedef struct
{
int Opcode;
int Status;
long EmbPhysAddr;
long EmbSize;
} LLCGETEMBPHYSADDR;
typedef struct
{
int Opcode;
int Status;
char far *pfWriteConfirm;
} LLCSETWRITECONFIRMFLAG;
typedef struct
{
int Opcode;
int Status;
int VxDID;
} LLCARMPOST;
typedef struct
{
int Opcode;
int Status;
long offset;
} LLCSETOFFSET;
typedef struct tagUSERBUFDESC
{
struct tagUSERBUFDESC far *Next;
char far *pBuf;
int cBufSize;
int cDataSize;
} USERBUFDESC;
typedef struct
{
int Opcode;
int Status;
USERBUFDESC far *pBufDesc;
} LLCPOSTBUFS;
typedef struct
{
int Opcode;
int Status;
int MessageNum;
int Parm1;
int Parm2;
int Parm3;
} LLCGETDEBUG;
/*
** NDIS Protocol Driver Stats
*/
typedef struct
{
long nFramesReceived;
long nReceiveLookaheadReceived;
long nReceiveChainReceived;
long nFramesDiscardedNotRecognized;
long nFramesDiscardedOutOfResources;
long nTransferDataFailed;
long nTransmitChainIssued;
long nTransmitChainFailed;
long nFramesDelivered; /* DOS only */
} LLCPROTOSTATS;
typedef struct
{
int Opcode;
int Status;
LLCPROTOSTATS ProtoStats;
} LLCGETPROTOSTATS;
typedef struct
{
int Opcode;
int Status;
} LLCCLEARPROTOSTATS;
/*
** NDIS MAC Driver Characteristics
*/
typedef struct /* structure for MAC service specific info */
{
int cSize; /* length of the characteristic table */
char TypeName[16]; /* name of the MAC type (eg. 802.3...) */
int cStationAddr; /* length of station address (MAC) */
char PermMACAddr[16]; /* hardware default MAC address */
char CurrMACAddr[16]; /* current MAC address in use */
long FunctionAddr; /* current functional address of adapter */
long reserved; /* pointer to multicast table */
long LinkSpeed; /* link speed bits/sec */
long fMAC; /* flags of capabilities */
int MaxFrameSize; /* maximum MAC frame which can be sent */
long TotalTxSpace; /* total transmit buffer space */
int cTxBlockSize; /* size of allocated transmission blocks */
long TotalRxSpace; /*total reception buffer space */
int cRxBlockSize; /*reception buffer alloc blk size */
char VendorID[3]; /*vendor IEEE ID */
char VendorAdapterDesc; /*vendor adapter description */
long reserved2; /*pointer to vendor serial number */
int IRQLevel; /*interrupt level */
int TransmitQueueDepth;
int nMaxDataBlocks;
} LLCMACCHARS;
typedef struct
{
int Opcode;
int Status;
LLCMACCHARS MacChars;
} LLCGETMACCHARS;
typedef struct
{
int cSize; /*size of table */
long LastDiagTime; /*seconds since 1-1-1970 of diags */
long MACStatus; /*mac status, this is a bit mask */
/* Bits 0-2: 0 - Hardware Not Installed */
/* 1 - Hardware Failed Pwrup Diags */
/* 2 - Hardware Failed CNFG Prob */
/* 3 - Hardware Faulted */
/* 4 - Hardware Marginally Operat */
/* 7 - Fully Operational */
/* Bit 3: MAC BOUND */
/* Bit 4: MAC OPEN */
/* Bit 5: DIAG_IN_PROGRESS */
int CurrPacketFilter; /* Bit 1: Directed and Multicast Group */
/* Bit 2: Broadcast */
/* Bit 3: Promiscuous */
/* Bit 4: All Source Routing */
long reserved; /*pointer to media specific stats */
long LastClearTime; /*seconds since 1-1-1970 */
long nOkFramesReceived; /*total frames received ok */
long nCrcErrorFrames; /*total frames received with crc errors */
long nBytesReceived; /*total number of bytes recieved */
long nFramesDiscarded; /*total number of frames discarded */
long nMulticastFramesReceived; /*total number of multicast frames rxd OK */
long nBroadcastFramesReceived; /*total number of broadcast frames rxd OK */
long reserved1;
long reserved2;
long reserved3;
long reserved4;
long reserved5;
long nFramesDiscardedHwError; /*total number of frames discarded due to HW err*/
long nFramesTransmittedOk; /*total number of frames transmitted OK */
long nBytesTransimittedOk; /*total number of bytes transmitted OK */
long nMulticastFramesTransmitted; /*total number of multicast transmitted */
long nBroadcastFramesTransmitted; /*total broadcast frame transmitted */
long reserved6;
long reserved7;
long nFramesNotTransmittedTimeout; /*total frames not transmitted due to timeout */
long nFramesNotTransmittedHwError; /*total frames not transmitted due to HW ERR */
} LLCMACSTATS;
typedef struct
{
int Opcode;
int Status;
LLCMACSTATS MacStats;
} LLCGETMACSTATS;
typedef struct
{
int Opcode;
int Status;
} LLCCLEARMACSTATS;
typedef union
{
LLCADDMULTI AddMulti;
LLCDELMULTI DelMulti;
LLCGETHWADDR GetHwAddr;
LLCBINDLSAP BindLsap;
LLCUNBINDLSAP UnBindLsap;
LLCGETEMBPHYSADDR GetEmbPhysAddr;
LLCSETWRITECONFIRMFLAG SetWriteConfirmFlag;
LLCPOSTBUFS PostBufs;
LLCARMPOST ArmPost;
LLCGETDEBUG GetDebug;
LLCSETOFFSET SetOffset;
LLCGETMACCHARS GetMacChars;
LLCGETMACSTATS GetMacStats;
LLCCLEARMACSTATS ClearMacStats;
LLCGETPROTOSTATS GetProtoStats;
LLCCLEARPROTOSTATS ClearProtoStats;
} LLCIOCTL;
/*
** Function prototypes
*/
int llc_getstats (LLCMACCHARS *MacChars,
LLCMACSTATS *MacStats,
LLCPROTOSTATS *ProtoStats);
void llc_clearstats ();
#endif