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.

183 lines
6.3 KiB
C

#ifndef ETHSUB_INCLUDED
#define ETHSUB_INCLUDED
/************************************************************************/
/* SISCO SOFTWARE MODULE HEADER *****************************************/
/************************************************************************/
/* (c) Copyright Systems Integration Specialists Company, Inc., */
/* 2000-2000 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 */
/* -------- --- ------ ------------------------------------------- */
/* 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 "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. */
/****************************************************************/
/* Base Definitions */
/****************************************************************/
typedef unsigned char X;
typedef char * A;
/****************************************************************/
/* Definitions copied from "llcprctx" */
/****************************************************************/
#define LLC_MAC_ADD_LEN 6
/* NOTE: this struct copied and then unused params removed. */
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 readT *pWriteEvents; /* list of write event structures */
struct readT *pReadEvents; /* list of read event structures */
} llcxcbT,*llcxcbTp;
/****************************************************************/
/* Definitions copied from "llcupcon" */
/****************************************************************/
#define LLC_MAX_LSDU 1514 /* max. LLC frame length */
#define LLC_HEAD_LEN 3 /* DSAP + SSAP + Control */
#define MAC_HEAD_LEN ((LLC_MAC_ADD_LEN * 2) + 2) /* DADDR + SADDR + LENGTH */
#define LLC_ISO_SAP 0xFE /* ISO LLC SAP */
#define LLC_UI 0x03 /* control field (always UI) */
#define LLC_DEBUG_UP 0x01
#define LLC_DEBUG_DOWN 0x02
/****************************************************************/
/* Definitions copied from "llcuptyp" */
/****************************************************************/
/************************************************************************/
/* MAC Frame structure */
/************************************************************************/
typedef struct
{
X dstadr[LLC_MAC_ADD_LEN]; /* destination MAC Address */
X srcadr[LLC_MAC_ADD_LEN]; /* source MAC Address */
X length[2]; /* LLC data length */
X data[LLC_MAX_LSDU - MAC_HEAD_LEN]; /* MAC data */
} frameT, *frameTp;
/************************************************************************/
/* OSI Event structure - Modified for MMS_LITE */
/************************************************************************/
typedef struct
{
void * nxevt;
SN_UNITDATA sn_req; /* event data in format needed by LEANT CLNP. */
} osievtT, *osievtTp;
typedef struct readT
{
int inuse;
HANDLE hEvent;
OVERLAPPED *ovlp;
frameT *framep;
void *pb;
llcxcbTp gccp;
} readT, *readTp;
typedef struct
{
int DummyStructureElement;
} *intcbTp; /* Dummy type. Should never be used for MMS_LITE. */
/************************************************************************/
/* MMS_LITE function to Queue received packet for Lite CLNP. */
/************************************************************************/
void QueueRxPacket (frameTp 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 (A 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 (osievtTp evt);
osievtTp osiallocevt ();
void osiputevt (osievtTp evt);
osievtTp osigetevt ();
void OsiReadThread (LPDWORD lpdwParam);
void CALLBACK WriteCompletion (DWORD error, DWORD length, OVERLAPPED *ovlp);
void CALLBACK ReadCompletion (DWORD error, DWORD length, OVERLAPPED *ovlp);
void ProcessReadBlock (OVERLAPPED *ovlp, readT *readBlock);
/************************************************************************/
/* Global variables. */
/************************************************************************/
extern llcxcbT GCC; /* General Current Context */
extern llcxcbTp GCCP; /* General Current Context Pointer */
extern int GSAP ; /* General SAP */
/****************************************************************/
/* Global LLC AM variables */
/* */
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 */
/************************************************************************/
/* Dummy macros to disable Marben logging. */
/************************************************************************/
#define bmshdr(a,b,c)
#define osibxhdr()
#define osibcstr(a,b)
#define osibflush()
#ifdef __cplusplus
}
#endif
#endif /* !ETHSUB_INCLUDED */