133 lines
4.5 KiB
C
133 lines
4.5 KiB
C
#ifndef ETHSUB_INCLUDED
|
|
#define ETHSUB_INCLUDED
|
|
/************************************************************************/
|
|
/* SISCO SOFTWARE MODULE HEADER *****************************************/
|
|
/************************************************************************/
|
|
/* (c) Copyright Systems Integration Specialists Company, Inc., */
|
|
/* 2000-2006 All Rights Reserved */
|
|
/* */
|
|
/* MODULE NAME : ethsub.h */
|
|
/* PRODUCT(S) : Lean-T Stack for Windows 95/98/NT */
|
|
/* */
|
|
/* MODULE DESCRIPTION : */
|
|
/* Definitions to allow Subnetwork interface to work with OSI LLC */
|
|
/* Ethernet driver. */
|
|
/* */
|
|
/* MODIFICATION LOG : */
|
|
/* Date Who Rev Comments */
|
|
/* -------- --- ------ ------------------------------------------- */
|
|
/* 07/21/06 JRB 04 Chg to use SISCO naming conventions. */
|
|
/* 04/14/06 JRB 03 Add sysincs header. */
|
|
/* 11/20/02 ASK 02 Add ethdown_etype proto */
|
|
/* 04/06/00 JRB 01 Created */
|
|
/************************************************************************/
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/****************************************************************/
|
|
/* Include files required to interface with */
|
|
/* OSI LLC NDIS Ethernet Driver */
|
|
/* */
|
|
/****************************************************************/
|
|
|
|
#include "conpack.h"
|
|
#include "osillc.h"
|
|
|
|
#include "glbtypes.h"
|
|
#include "sysincs.h"
|
|
#include "slog.h"
|
|
#include "stime.h"
|
|
#include "clnp_usr.h" /* clnp_sne.h needs this */
|
|
#include "clnp_log.h"
|
|
#include "clnp_sne.h" /* for SN_UNITDATA, etc. */
|
|
|
|
/****************************************************************/
|
|
/****************************************************************/
|
|
|
|
typedef struct
|
|
{
|
|
/** ----- Following fields are specific to this Access Method */
|
|
HANDLE hFile; /* LLC device driver descriptor */
|
|
|
|
unsigned long seq; /* sequence number to expect */
|
|
void *readlst[10]; /* list of pointers to out of sequence packet blocks */
|
|
|
|
/* ----- Following fields are required for 95/98 */
|
|
struct rd_wr_block *pWriteEvents; /* list of write event structures */
|
|
struct rd_wr_block *pReadEvents; /* list of read event structures */
|
|
} LLC_CONTEXT;
|
|
|
|
/************************************************************************/
|
|
/* OSI Event structure - Modified for MMS_LITE */
|
|
/************************************************************************/
|
|
|
|
typedef struct
|
|
{
|
|
void * nxevt;
|
|
SN_UNITDATA sn_req; /* event data in format needed by LEANT CLNP. */
|
|
} SN_EVENT;
|
|
|
|
typedef struct rd_wr_block
|
|
{
|
|
int inuse;
|
|
HANDLE hEvent;
|
|
OVERLAPPED *ovlp;
|
|
ST_UCHAR *framep; /* pointer to raw Ethernet frame */
|
|
void *pb;
|
|
LLC_CONTEXT *gccp;
|
|
} RD_WR_BLOCK;
|
|
|
|
/************************************************************************/
|
|
/* MMS_LITE function to Queue received packet for Lite CLNP. */
|
|
/************************************************************************/
|
|
void QueueRxPacket (ST_UCHAR *framep);
|
|
|
|
/************************************************************************/
|
|
/* Functions that may be called from CLNP. */
|
|
/************************************************************************/
|
|
void ethdown (SN_UNITDATA *sn_req);
|
|
void ethdown_etype (SN_UNITDATA *sn_req);
|
|
void ethsapoff (void);
|
|
void ethsapon (ST_CHAR *drvname);
|
|
int llcsetup (void);
|
|
|
|
BOOL QueryOid (HANDLE hDriver, ULONG ulOid, PBYTE pBuffer, ULONG ulLength);
|
|
BOOL SetOid (HANDLE hDriver, ULONG ulOid, PBYTE pBuffer, ULONG ulLength);
|
|
|
|
void osifreeevt (SN_EVENT *evt);
|
|
SN_EVENT *osiallocevt ();
|
|
void osiputevt (SN_EVENT *evt);
|
|
SN_EVENT *osigetevt ();
|
|
|
|
void OsiReadThread (LPDWORD lpdwParam);
|
|
void OsiReadThreadNT (LPDWORD lpdwParam);
|
|
void CALLBACK WriteCompletion (DWORD error, DWORD length, OVERLAPPED *ovlp);
|
|
void CALLBACK ReadCompletion (DWORD error, DWORD length, OVERLAPPED *ovlp);
|
|
void ProcessReadBlock (OVERLAPPED *ovlp);
|
|
|
|
/************************************************************************/
|
|
/* Global variables. */
|
|
/************************************************************************/
|
|
extern LLC_CONTEXT GCC; /* General Current Context */
|
|
extern LLC_CONTEXT *GCCP; /* General Current Context Pointer */
|
|
|
|
extern int MaxWriteOut;
|
|
extern int MaxReadOut;
|
|
extern int FramesPerBlock;
|
|
extern int ReceptionMode;
|
|
extern int DriverID;
|
|
extern int NumWriteOut;
|
|
extern CRITICAL_SECTION csOsiList; /* Critical Section object for OSI Event List */
|
|
extern BOOL bServiceControl;
|
|
extern BOOL bNT;
|
|
extern BOOL bOsiRequired;
|
|
extern DWORD Priority;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* !ETHSUB_INCLUDED */
|
|
|