|
|
/*++
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 );
|