windows-nt/Source/XPSP1/NT/net/ndis/loopback/lbmini.h

212 lines
4.6 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1992 Microsoft Corporation
Module Name:
lbmini.h
Abstract:
NDIS loopback miniport prototypes
Author:
Jameel Hyder
Environment:
Kernel mode, FSD
Revision History:
--*/
#define NDIS_MAJOR_VERSION 0x3
#define NDIS_MINOR_VERSION 0x0
#define LOOP_MAJOR_VERSION 0x5
#define LOOP_MINOR_VERSION 0x0
#define ETH_CARD_ADDRESS "\02\0LOOP"
#define ETH_MAX_MULTICAST_ADDRESS 16
#define TR_CARD_ADDRESS "\100\0LOOP"
#define FDDI_CARD_ADDRESS "\02\0LOOP"
#define FDDI_MAX_MULTICAST_LONG 16
#define FDDI_MAX_MULTICAST_SHORT 16
#define LTALK_CARD_ADDRESS 0xAB
#define ARC_CARD_ADDRESS 'L'
//
// arbitrary maximums...
//
#define MAX_LOOKAHEAD 256
#define INDICATE_MAXIMUM 256
#define OID_TYPE_MASK 0xFFFF0000
#define OID_TYPE 0xFF000000
#define OID_TYPE_GENERAL 0x00000000
#define OID_TYPE_GENERAL_OPERATIONAL 0x00010000
#define OID_TYPE_GENERAL_STATISTICS 0x00020000
#define OID_TYPE_802_3 0x01000000
#define OID_TYPE_802_3_OPERATIONAL 0x01010000
#define OID_TYPE_802_3_STATISTICS 0x01020000
#define OID_TYPE_802_5 0x02000000
#define OID_TYPE_802_5_OPERATIONAL 0x02010000
#define OID_TYPE_802_5_STATISTICS 0x02020000
#define OID_TYPE_FDDI 0x03000000
#define OID_TYPE_FDDI_OPERATIONAL 0x03010000
#define OID_TYPE_LTALK 0x05000000
#define OID_TYPE_LTALK_OPERATIONAL 0x05010000
#define OID_TYPE_ARCNET 0x06000000
#define OID_TYPE_ARCNET_OPERATIONAL 0x06010000
#define OID_REQUIRED_MASK 0x0000FF00
#define OID_REQUIRED_MANDATORY 0x00000100
#define OID_REQUIRED_OPTIONAL 0x00000200
#define OID_INDEX_MASK 0x000000FF
#define GM_TRANSMIT_GOOD 0x00
#define GM_RECEIVE_GOOD 0x01
#define GM_TRANSMIT_BAD 0x02
#define GM_RECEIVE_BAD 0x03
#define GM_RECEIVE_NO_BUFFER 0x04
#define GM_ARRAY_SIZE 0x05
#define PACKET_FILTER_802_3 0xF07F
#define PACKET_FILTER_802_5 0xF07F
#define PACKET_FILTER_DIX 0xF07F
#define PACKET_FILTER_FDDI 0xF07F
#define PACKET_FILTER_LTALK 0x8009
#define PACKET_FILTER_ARCNET 0x8009
#define LT_IS_BROADCAST(Address) (BOOLEAN)(Address == 0xFF)
#define ARC_IS_BROADCAST(Address) (BOOLEAN)(!(Address))
typedef struct _MEDIA_INFO
{
ULONG MaxFrameLen;
UINT MacHeaderLen;
ULONG PacketFilters;
ULONG LinkSpeed;
} MEDIA_INFO, *PMEDIA_INFO;
typedef struct _ADAPTER
{
NDIS_MEDIUM Medium;
//
// NDIS Context for this interface
NDIS_HANDLE MiniportHandle;
UINT MaxLookAhead;
UINT AddressLength;
ULONG PacketFilter;
//
// Constants for the adapter
//
ULONG MediumLinkSpeed;
ULONG MediumMinPacketLen;
ULONG MediumMaxPacketLen;
UINT MediumMacHeaderLen;
ULONG MediumMaxFrameLen;
ULONG MediumPacketFilters;
//
// media specific info
//
UCHAR PermanentAddress[ETH_LENGTH_OF_ADDRESS];
UCHAR CurrentAddress[ETH_LENGTH_OF_ADDRESS];
// statistics
ULONG GeneralMandatory[GM_ARRAY_SIZE];
UCHAR LoopBuffer[MAX_LOOKAHEAD];
ULONG SendPackets;
} ADAPTER, *PADAPTER;
//
// This macro returns a pointer to the LOOP reserved portion of the packet
//
#define PRESERVED_FROM_PACKET(Packet) ((PPACKET_RESERVED)((PVOID)((Packet)->MacReserved)))
#define PPACKET_FROM_RESERVED(Reserved) ((PNDIS_PACKET)((PVOID)((Reserved)->Packet)))
typedef struct _PACKET_RESERVED
{
PNDIS_PACKET Next;
USHORT PacketLength;
UCHAR HeaderLength;
} PACKET_RESERVED, *PPACKET_RESERVED;
//
// Miniport proto-types
//
NDIS_STATUS
LBInitialize(
OUT PNDIS_STATUS OpenErrorStatus,
OUT PUINT SelectedMediumIndex,
IN PNDIS_MEDIUM MediumArray,
IN UINT MediumArraySize,
IN NDIS_HANDLE MiniportAdapterHandle,
IN NDIS_HANDLE ConfigurationContext
);
NDIS_STATUS
LBSend(
IN NDIS_HANDLE MiniportAdapterContext,
IN PNDIS_PACKET Packet,
IN UINT Flags
);
NDIS_STATUS
LBQueryInformation(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesWritten,
OUT PULONG BytesNeeded
);
NDIS_STATUS
LBSetInformation(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesRead,
OUT PULONG BytesNeeded
);
VOID
LBHalt(
IN NDIS_HANDLE MiniportAdapterContext
);
NDIS_STATUS
LBReset(
OUT PBOOLEAN AddressingReset,
IN NDIS_HANDLE MiniportAdapterContext
);
BOOLEAN
LBCheckForHang(
IN NDIS_HANDLE MiniportAdapterContext
);
NDIS_STATUS
LBTransferData(
OUT PNDIS_PACKET Packet,
OUT PUINT BytesTransferred,
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_HANDLE MiniportReceiveContext,
IN UINT ByteOffset,
IN UINT BytesToTransfer
);