429 lines
8.4 KiB
C
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
|