windows-nt/Source/XPSP1/NT/net/atm/epvc/sys/miniport.h
2020-09-26 16:20:57 +08:00

429 lines
8.4 KiB
C

#ifndef _MINIPORT_H
#define _MINIPORT_H
//-------------------------------------------------------------//
// //
// Headers and Lengths used for Ethernet packets //
// //
//-------------------------------------------------------------//
#define MINIMUM_ETHERNET_LENGTH 64
#define ETHERNET_PADDING_LENGTH 2
// 64 bytes of zeroes - used in padding ethernet packets
extern UCHAR gPaddingBytes[MINIMUM_ETHERNET_LENGTH];
//-------------------------------------------------------------//
// //
// Function declarations //
// //
//-------------------------------------------------------------//
PRM_OBJECT_HEADER
epvcIMiniportCreate(
PRM_OBJECT_HEADER pParentObject,
PVOID pCreateParams,
PRM_STACK_RECORD psr
);
VOID
epvcIMiniportDelete (
PRM_OBJECT_HEADER pObj,
PRM_STACK_RECORD psr
);
BOOLEAN
epvcIMiniportCompareKey(
PVOID pKey,
PRM_HASH_LINK pItem
);
ULONG
epvcIMiniportHash(
PVOID pKey
);
VOID
epvcVcSetupDone (
PTASK_VC pTaskVc,
PEPVC_I_MINIPORT pMiniport
);
VOID
epvcVcTeardownDone(
PTASK_VC pTaskVc,
PEPVC_I_MINIPORT pMiniport
);
NDIS_STATUS
epvcSetPacketFilter(
IN PEPVC_I_MINIPORT pMiniport,
IN ULONG Filter,
PRM_STACK_RECORD pSR
);
NDIS_STATUS
EpvcInitialize(
OUT PNDIS_STATUS OpenErrorStatus,
OUT PUINT SelectedMediumIndex,
IN PNDIS_MEDIUM MediumArray,
IN UINT MediumArraySize,
IN NDIS_HANDLE MiniportAdapterHandle,
IN NDIS_HANDLE WrapperConfigurationContext
);
VOID
EpvcHalt(
IN NDIS_HANDLE MiniportAdapterContext
);
NDIS_STATUS
EpvcMpQueryInformation(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesWritten,
OUT PULONG BytesNeeded
);
NDIS_STATUS
EpvcMpSetInformation(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesRead,
OUT PULONG BytesNeeded
);
NDIS_STATUS
epvcMpSetNetworkAddresses(
IN PEPVC_I_MINIPORT pMiniport,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
IN PRM_STACK_RECORD pSR,
OUT PULONG BytesRead,
OUT PULONG BytesNeeded
);
NDIS_STATUS
epvcMpSetNetworkAddresses(
IN PEPVC_I_MINIPORT pMiniport,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
IN PRM_STACK_RECORD pSR,
OUT PULONG BytesRead,
OUT PULONG BytesNeeded
);
VOID
epvcSetupMakeCallParameters(
PEPVC_I_MINIPORT pMiniport,
PCO_CALL_PARAMETERS *ppCallParameters
);
VOID
epvcInitiateMiniportHalt(
IN PEPVC_I_MINIPORT pMiniport,
IN PRM_STACK_RECORD pSR
);
VOID
epvcMpHaltDoUnbind(
PEPVC_I_MINIPORT pMiniport,
PRM_STACK_RECORD pSR
);
NDIS_STATUS
epvcTaskHaltMiniport(
IN struct _RM_TASK * pTask,
IN RM_TASK_OPERATION Code,
IN UINT_PTR UserParam,
IN PRM_STACK_RECORD pSR
);
NDIS_STATUS
epvcAddLLCEncapsulation (
PEPVC_I_MINIPORT pMiniport ,
PNDIS_PACKET pOldPkt,
PNDIS_PACKET pNewPkt,
PRM_STACK_RECORD pSR
);
NDIS_STATUS
epvcAdapterSend(
IN PEPVC_I_MINIPORT pMiniport,
IN PNDIS_PACKET pPkt,
PRM_STACK_RECORD pSR
);
VOID
epvcGetSendPkt (
IN PEPVC_I_MINIPORT pMiniport,
IN PNDIS_PACKET pSentPkt,
IN PEPVC_SEND_STRUCT pSendStruct,
IN PRM_STACK_RECORD pSR
);
VOID
epvcFreeSendPkt(
PEPVC_I_MINIPORT pMiniport,
IN PEPVC_SEND_STRUCT pSendStruct
);
NDIS_STATUS
epvcRemoveSendEncapsulation (
PEPVC_I_MINIPORT pMiniport ,
PNDIS_PACKET pNewPkt
);
NDIS_STATUS
epvcAddRecvEncapsulation (
PEPVC_I_MINIPORT pMiniport ,
PNDIS_PACKET pNewPkt
);
NDIS_STATUS
epvcRemoveSendEncapsulation (
PEPVC_I_MINIPORT pMiniport ,
PNDIS_PACKET pNewPkt
);
NDIS_STATUS
epvcRemoveRecvEncapsulation (
PEPVC_I_MINIPORT pMiniport ,
PNDIS_PACKET pNewPkt
);
VOID
EpvcSendPackets(
IN NDIS_HANDLE MiniportAdapterContext,
IN PPNDIS_PACKET PacketArray,
IN UINT NumberOfPackets
);
NDIS_STATUS
epvcMiniportReadConfig(
IN PEPVC_I_MINIPORT pMiniport,
NDIS_HANDLE WrapperConfigurationContext,
PRM_STACK_RECORD pSR
);
VOID
epvcDumpPkt (
IN PNDIS_PACKET pPkt
);
BOOLEAN
epvcCheckAndReturnArps (
IN PEPVC_I_MINIPORT pMiniport,
IN PNDIS_PACKET pPkt,
IN PEPVC_SEND_STRUCT pSendStruct,
IN PRM_STACK_RECORD pSR
);
VOID
epvcFormulateArpResponse (
IN PEPVC_I_MINIPORT pMiniport,
IN PEPVC_ARP_CONTEXT pArpContext,
IN PRM_STACK_RECORD pSR
);
VOID
epvcInitializeMiniportLookasideLists (
IN PEPVC_I_MINIPORT pMiniport
);
NDIS_STATUS
epvcInitializeMiniportPacketPools (
IN PEPVC_I_MINIPORT pMiniport
);
VOID
epvcDeleteMiniportLookasideLists (
IN PEPVC_I_MINIPORT pMiniport
);
VOID
epvcDeleteMiniportPacketPools (
IN PEPVC_I_MINIPORT pMiniport
);
NDIS_STATUS
epvcTaskRespondToArp(
IN struct _RM_TASK * pTask,
IN RM_TASK_OPERATION Code,
IN UINT_PTR UserParam,
IN PRM_STACK_RECORD pSR
);
VOID
epvcArpTimer(
IN PVOID SystemSpecific1,
IN PVOID FunctionContext,
IN PVOID SystemSpecific2,
IN PVOID SystemSpecific3
);
VOID
epvcExtractPktInfo (
PEPVC_I_MINIPORT pMiniport,
PNDIS_PACKET pPacket ,
PEPVC_SEND_STRUCT SendStruct
);
NDIS_STATUS
epvcRemoveEthernetHeader (
PEPVC_SEND_STRUCT pSendStruct,
IN PRM_STACK_RECORD pSR
);
NDIS_STATUS
epvcSendRoutine(
IN PEPVC_I_MINIPORT pMiniport,
IN PNDIS_PACKET Packet,
PRM_STACK_RECORD pSR
);
VOID
epvcSetPacketContext (
IN PEPVC_SEND_STRUCT pSendStruct,
PRM_STACK_RECORD pSR
);
VOID
epvcInitializeMiniportParameters(
PEPVC_I_MINIPORT pMiniport
);
VOID
epvcReturnPacketUsingAllocation(
IN PEPVC_I_MINIPORT pMiniport,
IN PNDIS_PACKET Packet,
OUT PNDIS_PACKET *ppOriginalPacket,
IN PRM_STACK_RECORD pSR
);
VOID
epvcReturnPacketUsingStacks (
IN PEPVC_I_MINIPORT pMiniport,
IN PNDIS_PACKET Packet,
IN PRM_STACK_RECORD pSR
);
VOID
EpvcReturnPacket(
IN NDIS_HANDLE MiniportAdapterContext,
IN PNDIS_PACKET Packet
);
VOID
epvcDerefSendPkt (
PNDIS_PACKET pNdisPacket,
PRM_OBJECT_HEADER pHdr
);
VOID
epvcDerefRecvPkt (
PNDIS_PACKET pNdisPacket,
PRM_OBJECT_HEADER pHdr
);
VOID
epvcRefRecvPkt(
PNDIS_PACKET pNdisPacket,
PRM_OBJECT_HEADER pHdr // either an adapter or a miniport
);
NDIS_STATUS
epvcTaskCloseAddressFamily(
IN struct _RM_TASK * pTask,
IN RM_TASK_OPERATION Code,
IN UINT_PTR UserParam,
IN PRM_STACK_RECORD pSR
);
VOID
epvcProcessReturnPacket (
IN PEPVC_I_MINIPORT pMiniport,
IN PNDIS_PACKET Packet,
OUT PPNDIS_PACKET ppOrigPacket,
IN PRM_STACK_RECORD pSR
);
NDIS_STATUS
epvcAddEthernetTail(
PEPVC_SEND_STRUCT pSendStruct,
IN PRM_STACK_RECORD pSR
);
VOID
epvcRemoveEthernetTail (
IN PEPVC_I_MINIPORT pMiniport,
IN PNDIS_PACKET pPacket,
IN PEPVC_PKT_CONTEXT pContext
);
VOID
epvcRemoveEthernetPad (
IN PEPVC_I_MINIPORT pMiniport,
IN PNDIS_PACKET pPacket
);
NDIS_STATUS
epvcAddEthernetPad(
PEPVC_SEND_STRUCT pSendStruct,
IN PRM_STACK_RECORD pSR
);
VOID
epvcCancelDeviceInstance(
IN PEPVC_I_MINIPORT pMiniport ,
IN PRM_STACK_RECORD pSR
);
#endif