|
|
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
hdrext.h
Abstract:
This file contains all declarations used in handling NBF / DLC Headers.
Author:
Chaitanya Kodeboyina
Environment:
User Mode
--*/ #ifndef __HDREXT_H
#define __HDREXT_H
//
// Macros
//
#ifndef FIELD_OFFSET
#define FIELD_OFFSET(type, field) ((LONG)&(((type *)0)->field))
#endif//FIELD_OFFSET
//
// Helper Prototypes
//
UINT ReadNbfPktHdr(PNBF_HDR pPktHdr, ULONG proxyPtr);
UINT PrintNbfPktHdr(PNBF_HDR pPktHdr, ULONG proxyPtr, ULONG printDetail);
UINT FreeNbfPktHdr(PNBF_HDR pPktHdr);
//
// Constants
//
#ifdef OFFSET
#undef OFFSET
#endif
#define OFFSET(field) FIELD_OFFSET(NBF_HDR_GENERIC, field)
//
// A Generic View of any NBF Header
//
StructAccessInfo NbfGenPktHdrInfo = { "Nbf Generic Packet Header",
{ { "Length", OFFSET(Length), sizeof(USHORT), NULL, LOW },
{ "Signature", OFFSET(Signature), 2*sizeof(UCHAR), NULL, LOW },
{ "Command", OFFSET(Command), sizeof(UCHAR), NULL, NOR },
{ "Data1", OFFSET(Data1), sizeof(UCHAR), NULL, LOW },
{ "Data2", OFFSET(Data2), sizeof(USHORT), NULL, LOW },
{ "TransmitCorrelator", OFFSET(TransmitCorrelator), sizeof(USHORT), NULL, LOW }, { "ResponseCorrelator", OFFSET(ResponseCorrelator), sizeof(USHORT), NULL, LOW },
{ "", 0, 0, NULL, LOW },
0 } };
//
// NBF Header for a Connection-oriented data xfer
//
#ifdef OFFSET
#undef OFFSET
#endif
#define OFFSET(field) FIELD_OFFSET(NBF_HDR_CONNECTION, field)
StructAccessInfo NbfConnectionHdrInfo = { "Nbf CO Packet Header",
{ { "Length", OFFSET(Length), sizeof(USHORT), NULL, LOW },
{ "Signature", OFFSET(Signature), sizeof(USHORT), NULL, LOW },
{ "Command", OFFSET(Command), sizeof(UCHAR), NULL, NOR },
{ "Data1", OFFSET(Data1), sizeof(UCHAR), NULL, LOW },
{ "Data2Low", OFFSET(Data2Low), sizeof(UCHAR), NULL, LOW },
{ "Data2High", OFFSET(Data2High), sizeof(UCHAR), NULL, LOW },
{ "TransmitCorrelator", OFFSET(TransmitCorrelator), sizeof(USHORT), NULL, LOW }, { "ResponseCorrelator", OFFSET(ResponseCorrelator), sizeof(USHORT), NULL, LOW },
{ "DestinationSessionNumber", OFFSET(DestinationSessionNumber), sizeof(UCHAR), NULL, LOW },
{ "SourceSessionNumber", OFFSET(SourceSessionNumber), sizeof(UCHAR), NULL, LOW },
{ "", 0, 0, NULL, LOW },
0 } };
//
// NBF Header for a Connection-less data xfer
//
#ifdef OFFSET
#undef OFFSET
#endif
#define OFFSET(field) FIELD_OFFSET(NBF_HDR_CONNECTIONLESS, field)
StructAccessInfo NbfConnectionLessHdrInfo = { "Nbf CL Packet Header",
{ { "Length", OFFSET(Length), sizeof(USHORT), NULL, LOW },
{ "Signature", OFFSET(Signature), sizeof(USHORT), NULL, LOW },
{ "Command", OFFSET(Command), sizeof(UCHAR), NULL, NOR },
{ "Data1", OFFSET(Data1), sizeof(UCHAR), NULL, LOW },
{ "Data2Low", OFFSET(Data2Low), sizeof(UCHAR), NULL, LOW },
{ "Data2High", OFFSET(Data2High), sizeof(UCHAR), NULL, LOW },
{ "TransmitCorrelator", OFFSET(TransmitCorrelator), sizeof(USHORT), NULL, LOW }, { "ResponseCorrelator", OFFSET(ResponseCorrelator), sizeof(USHORT), NULL, LOW },
{ "DestinationName", OFFSET(DestinationName), NETBIOS_NAME_LENGTH * sizeof(UCHAR), NULL, LOW },
{ "SourceName", OFFSET(SourceName), NETBIOS_NAME_LENGTH * sizeof(UCHAR), NULL, LOW },
{ "", 0, 0, NULL, LOW },
0 } };
#endif // __HDREXT_H
|