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.
 
 
 
 
 
 

312 lines
6.3 KiB

#include <nt.h>
#ifndef OS2_EMU_DLC
#include <ntrtl.h>
#include <nturtl.h>
#include <windows.h>
#endif
#include <dlcapi.h>
//#include <dlcio.h>
//#include <llcapi.h>
#include <malloc.h>
#include <memory.h>
#include <stdio.h>
#include "dlcfunct.h"
#define MAX_XMIT_BUFFERS 1000
#define DLC_TEST_ID 0x22051963L // a very important day!
#define SMALL_PACKET_SIZE 128
#define TEST_DIX_TYPE 0x8fff
#ifdef OS2_EMU_DLC
#define SMALL_BUFFER_POOL_SIZE 0x4000
#define DEFAULT_BUFFER_SIZE 0xff00
#define SERVER_BUFFER_SIZE 0xff00
#define DEFAULT_TEST_BUFFER_SIZE 0x3000
#define DEFAULT_REPEAT_COUNT 1
#else
#define SMALL_BUFFER_POOL_SIZE 0x10000
#define DEFAULT_BUFFER_SIZE 0x40000
#define SERVER_BUFFER_SIZE 0x80000
#define DEFAULT_TEST_BUFFER_SIZE 0xC000
#define DEFAULT_REPEAT_COUNT 10
#endif
#define GROUP_SAP1 5
#define GROUP_SAP2 7
#define GROUP_SAP3 9
enum _TEST_COMMANDS {
TEST_COMMAND_ECHO_BACK,
TEST_COMMAND_EXIT,
TEST_COMMAND_READ,
TEST_COMMAND_DELAYED_ECHO
};
//
// Use random status flags to check, that we really ge back
// the same flags as used in the orginal request.
//
#define TEST_DLC_STATUS_FLAG 0x10001000L
#define TEST_RECEIVE_FLAG 0x10101011L
#define TEST_COMMAND_COMPLETION_FLAG 0x10201022L
#define TEST_TRANSMIT_COMPLETION_FLAG 0x10301033L
#define DBG_ASSERT(a) DebugCheck(a, __FILE__, __LINE__)
//
// Assert routine for the case, when everything may disappear
// from below by hard reset (or close or dlc reset)!!!
//
#define WORKER_ASSERT(a) if (WorkerAssert(a)) return a
#ifdef OS2_DLC_EMU
#define IS_ERROR( a ) if ((a) == 0) DebugBreak(); HEAP_CHECK()
#else
#define IS_ERROR( a ) if ((a) == 0) DebugBreak()
#endif
#define PRINTF if (PrintFlag) printf
typedef struct _DLC_TEST_PACKET {
ULONG PacketId;
USHORT Command;
USHORT RepeatCount;
UCHAR DataBuffer[1];
} DLC_TEST_PACKET, *PDLC_TEST_PACKET;
#define SIZEOF_TEST_PACKET ((ULONG)&((PDLC_TEST_PACKET)0)->DataBuffer)
typedef struct _DLC_TEST_THREAD_PARMS {
UCHAR AdapterNumber;
UCHAR FirstClientSap;
UCHAR FirstServerSap;
UCHAR SapCount;
UCHAR FunctionalAddress[4];
UCHAR GroupAddress[4];
PUINT pCloseCounter;
UINT LoopCount;
UINT TestBufferSize;
UINT AllocatedStations;
BOOLEAN CompareAllData;
UCHAR ResetCommand;
BOOLEAN CloseServer;
UINT ThreadCount;
PVOID hPool;
PVOID pPool;
} DLC_TEST_THREAD_PARMS, *PDLC_TEST_THREAD_PARMS;
typedef struct _XMIT_STRESS_WORKER {
HANDLE hPool;
PDLC_TEST_THREAD_PARMS pParms;
PUCHAR pBuffer;
UINT MaxI_Field;
USHORT LinkStationId;
} XMIT_STRESS_WORKER, *PXMIT_STRESS_WORKER;
extern CRITICAL_SECTION PrintSection;
extern CRITICAL_SECTION CloseSection;
extern BOOLEAN PrintFlag;
UINT
TransmitBuffers(
PLLC_BUFFER pBuffer,
PLLC_TRANSMIT2_COMMAND pTransmitBuffer,
PLLC_TEST_CCB_POOL pTransmitCcbPool,
UINT RepeatCount,
UINT cElement,
BOOLEAN FreeTransmitBuffers,
BOOLEAN SendReceiveBuffer,
OUT PUINT pFrameCount
);
VOID
SetBuffers(
IN PLLC_BUFFER pBuffer,
IN USHORT Command,
IN USHORT RepeatCount,
IN UCHAR FirstChar,
IN UCHAR LastChar
);
UINT
ReadClientEvent(
IN PLLC_CCB pReadCcb,
IN PLLC_TEST_CCB_POOL pTransmitCcbPool,
IN UCHAR EventMask,
IN UINT EventCount,
IN ULONG Timeout,
IN PLLC_BUFFER *ppReceivedFrames
);
UINT
ReportDlcStatistics(
IN UCHAR AdapterNumber,
IN USHORT StationId
);
VOID
ReportDirStatus(
UCHAR Adapter
);
VOID
ReportDirReadLog(
UCHAR Adapter,
UINT Option
);
ULONG
FreeExtraBuffers(
IN PLLC_BUFFER *pFirstBuffer,
IN ULONG TransmitOffset,
IN ULONG TotalDataLength,
IN UCHAR AdapterNumber,
IN USHORT StationId
);
ULONG
CompareReceiveBuffers(
IN PLLC_BUFFER pFirstBuffer,
IN PUCHAR pBuffer,
IN ULONG BufferLength,
IN ULONG DataOffset,
IN BOOLEAN CompareData,
IN PUINT pIndex
);
UINT
LinkDataTransferTest(
IN PDLC_TEST_THREAD_PARMS pParms
);
UINT
LinkConnectStressTest(
IN PDLC_TEST_THREAD_PARMS pParms
);
ULONG
DataTransferWorker(
PVOID hXmitParms
);
UINT
LinkFunctionalityTest(
IN PDLC_TEST_THREAD_PARMS pParms
);
UINT
DlcTestTransact(
IN PLLC_CCB pCcb,
IN PLLC_CCB pReadCcb ,
IN UCHAR ExpectedMessageType
);
UINT
DebugCheck(
UINT ErrorCode,
UCHAR *fname,
UINT line
);
UINT
WorkerAssert(
UINT ErrorCode
);
UINT
ReportDlcReallocate(
IN UINT AdapterNumber,
IN USHORT usStationId,
IN UINT Option,
IN UCHAR uchStationCount,
IN BOOLEAN QuietMode
);
UINT
FreeAllFrames(
IN UCHAR AdapterNumber,
IN PLLC_BUFFER pFirstBuffer,
IN PUINT pcLeft
);
UINT
TestBasics(
IN UCHAR Adapter
);
LLC_STATUS
ConnectToDlcServer(
IN UINT AdapterNumber,
IN USHORT SapStationId,
IN UCHAR RemoteSap,
IN PUSHORT pLinkStationId,
IN PUSHORT pMaxIField,
IN PUCHAR pLanHeader
);
LLC_STATUS
HighSpeedLinkTransmitTest(
IN USHORT AdapterNumber,
IN USHORT usStationId,
IN USHORT PacketSize,
IN ULONG PacketCount,
IN PUCHAR pszMessage
);
VOID
SetPackets(
IN PLLC_XMIT_BUFFER pBuffer,
IN USHORT Command,
IN UCHAR FirstChar,
IN UCHAR LastChar
);
LLC_STATUS
LinkTransmitTest(
IN USHORT AdapterNumber,
IN USHORT usStationId,
IN USHORT PacketSize,
IN ULONG PacketCount,
IN PUCHAR pszMessage
);
LLC_STATUS
IoSystemStressTest(
IN USHORT AdapterNumber,
IN USHORT usStationId,
IN USHORT PacketSize,
IN ULONG PacketCount,
IN PUCHAR pLanHeader,
IN UINT cbLanHeader,
IN PUCHAR pszMessage
);
VOID
DlcPerformanceTest(
IN PDLC_TEST_THREAD_PARMS pParms
);
VOID InitAllocatorPackage(VOID);
PVOID MyAlloc(DWORD Length);
VOID MyFree(PVOID Ptr);
#if defined(MY_ALLOC)
#define ALLOC MyAlloc
#define FREE MyFree
#else
#define ALLOC malloc
#define FREE free
#endif