1034 lines
16 KiB
C
1034 lines
16 KiB
C
/*++
|
|
|
|
Copyright (c) 1992-1996 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
protos.h
|
|
|
|
Abstract:
|
|
|
|
This file contains the function proto-types and macros.
|
|
|
|
Author:
|
|
|
|
Jameel Hyder (jameelh@microsoft.com) July 1996
|
|
|
|
Environment:
|
|
|
|
Kernel mode
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef _PROTOS_
|
|
#define _PROTOS_
|
|
|
|
#define POOL_TAG_PG 'AprA'
|
|
#define POOL_TAG_VC 'VprA'
|
|
#define POOL_TAG_INTF 'IprA'
|
|
#define POOL_TAG_ADDR 'AprA'
|
|
#define POOL_TAG_BUF 'BprA'
|
|
#define POOL_TAG_REQ 'RprA'
|
|
#define POOL_TAG_SAP 'SprA'
|
|
#define POOL_TAG_BLK 'KprA'
|
|
#define POOL_TAG_MARS 'MprA'
|
|
|
|
#if DBG
|
|
|
|
extern
|
|
PVOID
|
|
ArpSAllocMem(
|
|
IN UINT Size,
|
|
IN ULONG FileLine,
|
|
IN ULONG Tag,
|
|
IN BOOLEAN Paged
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSFreeMem(
|
|
IN PVOID pMem,
|
|
IN ULONG FileLine
|
|
);
|
|
|
|
#define ALLOC_NP_MEM(_size, _tag) ArpSAllocMem(_size, __LINE__ | _FILENUM_, _tag, FALSE)
|
|
#define ALLOC_PG_MEM(_size) ArpSAllocMem(_size, __LINE__ | _FILENUM_, POOL_TAG_PG, TRUE)
|
|
#define FREE_MEM(_p) ArpSFreeMem(_p, __LINE__ | _FILENUM_)
|
|
|
|
#else
|
|
|
|
#define ALLOC_NP_MEM(_size, _tag) ExAllocatePoolWithTag(NonPagedPool, _size, _tag)
|
|
#define ALLOC_PG_MEM(_size) ExAllocatePoolWithTag(PagedPool, _size, POOL_TAG_PG)
|
|
#define FREE_MEM(_p) ExFreePool(_p)
|
|
|
|
#endif
|
|
|
|
#define ZERO_MEM(_p, _size) RtlZeroMemory(_p, _size)
|
|
#define COPY_MEM(_d, _s, _size) RtlCopyMemory(_d, _s, _size)
|
|
#define MOVE_MEM(_d, _s, _size) RtlMoveMemory(_d, _s, _size)
|
|
#define COMP_MEM(_p1, _p2, _size_) RtlEqualMemory(_p1, _p2, _size_)
|
|
|
|
#define INITIALIZE_SPIN_LOCK(_l) KeInitializeSpinLock(_l)
|
|
#define ACQUIRE_SPIN_LOCK(_l, _i) KeAcquireSpinLock(_l, _i)
|
|
#define ACQUIRE_SPIN_LOCK_DPC(_l) KeAcquireSpinLockAtDpcLevel(_l)
|
|
#define RELEASE_SPIN_LOCK(_l, _i) KeReleaseSpinLock(_l, _i)
|
|
#define RELEASE_SPIN_LOCK_DPC(_l) KeReleaseSpinLockFromDpcLevel(_l)
|
|
#define INITIALIZE_MUTEX(_m_) KeInitializeMutex(_m_, 0xFFFF)
|
|
#define RELEASE_MUTEX(_m_) KeReleaseMutex(_m_, FALSE);
|
|
#define WAIT_FOR_OBJECT(_S_, _O_, _TO_) (_S_) = KeWaitForSingleObject(_O_, \
|
|
Executive, \
|
|
KernelMode, \
|
|
TRUE, \
|
|
_TO_) \
|
|
|
|
#define INIT_EVENT(_pEv) NdisInitializeEvent(_pEv)
|
|
#define SET_EVENT(_pEv) NdisSetEvent(_pEv)
|
|
#define WAIT_FOR_EVENT(_pEv) NdisWaitEvent(_pEv, 0)
|
|
|
|
|
|
extern
|
|
NTSTATUS
|
|
DriverEntry(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PUNICODE_STRING RegistryPath
|
|
);
|
|
|
|
extern
|
|
NTSTATUS
|
|
ArpSDispatch(
|
|
IN PDEVICE_OBJECT pDeviceObject,
|
|
IN PIRP pIrp
|
|
);
|
|
|
|
extern
|
|
NTSTATUS
|
|
ArpSHandleIoctlRequest(
|
|
IN PIRP pIrp,
|
|
IN PIO_STACK_LOCATION pIrpSp
|
|
);
|
|
|
|
extern
|
|
NTSTATUS
|
|
ArpSEnumerateInterfaces(
|
|
IN PUCHAR pBuffer,
|
|
IN OUT PULONG_PTR pSize
|
|
);
|
|
|
|
extern
|
|
NTSTATUS
|
|
ArpSFlushArpCache(
|
|
IN PINTF pIntF
|
|
);
|
|
|
|
extern
|
|
NTSTATUS
|
|
ArpSQueryOrAddArpEntry(
|
|
IN PINTF pIntF,
|
|
IN OUT PIOCTL_QA_ENTRY pQaBuf,
|
|
IN OPERATION Operation
|
|
);
|
|
|
|
extern
|
|
NTSTATUS
|
|
ArpSQueryArpCache(
|
|
IN PINTF pIntF,
|
|
IN PUCHAR pBuf,
|
|
IN OUT PULONG_PTR pSize
|
|
);
|
|
|
|
extern
|
|
NTSTATUS
|
|
ArpSQueryArpStats(
|
|
IN PINTF pIntF,
|
|
OUT PARP_SERVER_STATISTICS pArpStats
|
|
);
|
|
|
|
extern
|
|
NTSTATUS
|
|
ArpSQueryMarsCache(
|
|
IN PINTF pIntF,
|
|
IN PUCHAR pBuf,
|
|
IN OUT PULONG_PTR pSize
|
|
);
|
|
|
|
extern
|
|
NTSTATUS
|
|
ArpSQueryMarsStats(
|
|
IN PINTF pIntF,
|
|
OUT PMARS_SERVER_STATISTICS pMarsStats
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSResetStats(
|
|
IN PINTF pIntF
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSUnload(
|
|
IN PDRIVER_OBJECT DriverObject
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSShutDown(
|
|
VOID
|
|
);
|
|
|
|
extern
|
|
NDIS_STATUS
|
|
ArpSStopInterface(
|
|
IN PINTF pIntF,
|
|
IN BOOLEAN bCloseAdapter
|
|
);
|
|
|
|
extern
|
|
NDIS_STATUS
|
|
ArpSPnPEventHandler(
|
|
IN NDIS_HANDLE ProtocolBindingContext,
|
|
IN PNET_PNP_EVENT pNetPnPEvent
|
|
);
|
|
|
|
extern
|
|
PINTF
|
|
ArpSCreateIntF(
|
|
IN PNDIS_STRING DeviceName,
|
|
IN PNDIS_STRING ConfigString,
|
|
IN NDIS_HANDLE BindingContext
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSReqThread(
|
|
IN PVOID Context
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSTimerThread(
|
|
IN PVOID Context
|
|
);
|
|
|
|
extern
|
|
NTSTATUS
|
|
ArpSReadGlobalConfiguration(
|
|
IN PUNICODE_STRING RegistryPath
|
|
);
|
|
|
|
extern
|
|
NDIS_STATUS
|
|
ArpSReadAdapterConfigFromRegistry(
|
|
IN PINTF pIntF,
|
|
OUT PATMARPS_CONFIG pConfig
|
|
);
|
|
|
|
extern
|
|
NDIS_STATUS
|
|
ArpSReadAdapterConfiguration(
|
|
IN PINTF pIntF
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSConvertStringToIpPair(
|
|
OUT PNDIS_STATUS pStatus,
|
|
IN PNDIS_STRING pString,
|
|
IN PMCS_ENTRY pMcsEntry
|
|
);
|
|
|
|
extern
|
|
BOOLEAN
|
|
IPConvertStringToAddress(
|
|
IN PWCHAR AddressString,
|
|
OUT PULONG IpAddress
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSReadArpCache(
|
|
IN PINTF pIntF
|
|
);
|
|
|
|
extern
|
|
BOOLEAN
|
|
ArpSWriteArpCache(
|
|
IN PINTF pIntF,
|
|
IN PTIMER Timer,
|
|
IN BOOLEAN TimerShuttingDown
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
MarsReqThread(
|
|
IN PVOID Context
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
MarsHandleRequest(
|
|
IN PINTF pIntF,
|
|
IN PARP_VC Vc,
|
|
IN PMARS_HEADER Header,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
MarsHandleJoin(
|
|
IN PINTF pIntF,
|
|
IN PARP_VC Vc,
|
|
IN PMARS_HEADER Header,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
MarsHandleLeave(
|
|
IN PINTF pIntF,
|
|
IN PARP_VC Vc,
|
|
IN PMARS_HEADER Header,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
extern
|
|
PCLUSTER_MEMBER
|
|
MarsLookupClusterMember(
|
|
IN PINTF pIntF,
|
|
IN PHW_ADDR pHwAddr
|
|
);
|
|
|
|
extern
|
|
PCLUSTER_MEMBER
|
|
MarsCreateClusterMember(
|
|
IN PINTF pIntF,
|
|
IN PHW_ADDR pHwAddr
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
MarsDeleteClusterMember(
|
|
IN PINTF pIntF,
|
|
IN PCLUSTER_MEMBER pMember
|
|
);
|
|
|
|
extern
|
|
PMARS_ENTRY
|
|
MarsLookupMarsEntry(
|
|
IN PINTF pIntF,
|
|
IN IPADDR GrpAddr,
|
|
IN BOOLEAN bCreateNew
|
|
);
|
|
|
|
extern
|
|
BOOLEAN
|
|
MarsIsAddressMcsServed(
|
|
IN PINTF pIntF,
|
|
IN IPADDR IPAddress
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
MarsPunchHoles(
|
|
IN PMCAST_ADDR_PAIR pGrpAddrRange,
|
|
IN PGROUP_MEMBER pGroupList,
|
|
IN PINTF pIntF,
|
|
IN IPADDR UNALIGNED * pOutBuf OPTIONAL,
|
|
OUT PUSHORT pMinMaxCount,
|
|
OUT BOOLEAN * pAnyHolesPunched
|
|
);
|
|
|
|
extern
|
|
BOOLEAN
|
|
MarsAddClusterMemberToGroups(
|
|
IN PINTF pIntF,
|
|
IN PCLUSTER_MEMBER pMember,
|
|
IN PMCAST_ADDR_PAIR pGrpAddrRange,
|
|
IN PNDIS_PACKET Packet,
|
|
IN PMARS_JOIN_LEAVE JHdr,
|
|
IN UINT Length,
|
|
OUT PNDIS_PACKET * ppClusterPacket
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
MarsUnlinkAllGroupsOnClusterMember(
|
|
IN PINTF pIntF,
|
|
IN PCLUSTER_MEMBER pMember
|
|
);
|
|
|
|
extern
|
|
BOOLEAN
|
|
MarsDelClusterMemberFromGroups(
|
|
IN PINTF pIntF,
|
|
IN PCLUSTER_MEMBER pMember,
|
|
IN PMCAST_ADDR_PAIR pGrpAddrRange,
|
|
IN PNDIS_PACKET Packet,
|
|
IN PMARS_JOIN_LEAVE LHdr,
|
|
IN UINT Length,
|
|
OUT PNDIS_PACKET * ppClusterPacket
|
|
);
|
|
|
|
extern
|
|
PNDIS_PACKET
|
|
MarsAllocControlPacket(
|
|
IN PINTF pIntF,
|
|
IN ULONG PacketLength,
|
|
OUT PUCHAR * pPacketStart
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
MarsFreePacket(
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
extern
|
|
PNDIS_PACKET
|
|
MarsAllocPacketHdrCopy(
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
MarsSendOnClusterControlVc(
|
|
IN PINTF pIntF,
|
|
IN PNDIS_PACKET Packet OPTIONAL
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
MarsFreePacketsQueuedForClusterControlVc(
|
|
IN PINTF pIntF
|
|
);
|
|
|
|
extern
|
|
BOOLEAN
|
|
MarsDelMemberFromClusterControlVc(
|
|
IN PINTF pIntF,
|
|
IN PCLUSTER_MEMBER pMember,
|
|
IN BOOLEAN fIfLocked,
|
|
IN KIRQL OldIrql OPTIONAL
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
MarsAddMemberToClusterControlVc(
|
|
IN PINTF pIntF,
|
|
IN PCLUSTER_MEMBER pMember
|
|
);
|
|
|
|
extern
|
|
PCO_CALL_PARAMETERS
|
|
MarsPrepareCallParameters(
|
|
IN PINTF pIntF,
|
|
IN PHW_ADDR pHwAddr,
|
|
IN BOOLEAN IsMakeCall
|
|
);
|
|
|
|
extern
|
|
BOOLEAN
|
|
MarsSendRedirect(
|
|
IN PINTF pIntF,
|
|
IN PTIMER Timer,
|
|
IN BOOLEAN TimerShuttingDown
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
MarsAbortAllMembers(
|
|
IN PINTF pIntF
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
MarsStopInterface(
|
|
IN PINTF pIntF
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
MarsDumpPacket(
|
|
IN PUCHAR Packet,
|
|
IN UINT PktLen
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
MarsDumpIpAddr(
|
|
IN IPADDR IpAddr,
|
|
IN PCHAR String
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
MarsDumpAtmAddr(
|
|
IN PATM_ADDRESS AtmAddr,
|
|
IN PCHAR String
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
MarsDumpMap(
|
|
IN PCHAR String,
|
|
IN IPADDR IpAddr,
|
|
IN PATM_ADDRESS AtmAddr
|
|
);
|
|
|
|
extern
|
|
NTSTATUS
|
|
ArpSInitializeNdis(
|
|
VOID
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSDeinitializeNdis(
|
|
VOID
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSOpenAdapterComplete(
|
|
IN NDIS_HANDLE ProtocolBindingContext,
|
|
IN NDIS_STATUS Status,
|
|
IN NDIS_STATUS OpenErrorStatus
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSCloseAdapterComplete(
|
|
IN NDIS_HANDLE ProtocolBindingContext,
|
|
IN NDIS_STATUS Status
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSStatus(
|
|
IN NDIS_HANDLE ProtocolBindingContext,
|
|
IN NDIS_STATUS GeneralStatus,
|
|
IN PVOID StatusBuffer,
|
|
IN UINT StatusBufferSize
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSReceiveComplete(
|
|
IN NDIS_HANDLE ProtocolBindingContext
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSStatusComplete(
|
|
IN NDIS_HANDLE ProtocolBindingContext
|
|
);
|
|
|
|
VOID
|
|
ArpSQueryAdapter(
|
|
IN PINTF pIntF
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSSendNdisRequest(
|
|
IN PINTF pIntF,
|
|
IN NDIS_OID Oid,
|
|
IN PVOID pBuffer,
|
|
IN ULONG BufferLength
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSRequestComplete(
|
|
IN NDIS_HANDLE ProtocolBindingContext,
|
|
IN PNDIS_REQUEST pRequest,
|
|
IN NDIS_STATUS Status
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSBindAdapter(
|
|
OUT PNDIS_STATUS Status,
|
|
IN NDIS_HANDLE BindContext,
|
|
IN PNDIS_STRING DeviceName,
|
|
IN PVOID SystemSpecific1,
|
|
IN PVOID SystemSpecific2
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSUnbindAdapter(
|
|
OUT PNDIS_STATUS Status,
|
|
IN NDIS_HANDLE ProtocolBindingContext,
|
|
IN NDIS_HANDLE UnbindContext
|
|
);
|
|
|
|
|
|
extern
|
|
VOID
|
|
ArpSCoSendComplete(
|
|
IN NDIS_STATUS Status,
|
|
IN NDIS_HANDLE ProtocolVcContext,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSCoStatus(
|
|
IN NDIS_HANDLE ProtocolBindingContext,
|
|
IN NDIS_HANDLE ProtocolVcContext OPTIONAL,
|
|
IN NDIS_STATUS GeneralStatus,
|
|
IN PVOID StatusBuffer,
|
|
IN UINT StatusBufferSize
|
|
);
|
|
|
|
extern
|
|
NDIS_STATUS
|
|
ArpSCoRequest(
|
|
IN NDIS_HANDLE ProtocolAfContext,
|
|
IN NDIS_HANDLE ProtocolVcContext OPTIONAL,
|
|
IN NDIS_HANDLE ProtocolPartyContext OPTIONAL,
|
|
IN OUT PNDIS_REQUEST NdisRequest
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSCoRequestComplete(
|
|
IN NDIS_STATUS Status,
|
|
IN NDIS_HANDLE ProtocolAfContext,
|
|
IN NDIS_HANDLE ProtocolVcContext OPTIONAL,
|
|
IN NDIS_HANDLE ProtocolPartyContext OPTIONAL,
|
|
IN PNDIS_REQUEST NdisRequest
|
|
);
|
|
|
|
|
|
extern
|
|
VOID
|
|
ArpSCoAfRegisterNotify(
|
|
IN NDIS_HANDLE ProtocolBindingContext,
|
|
IN PCO_ADDRESS_FAMILY AddressFamily
|
|
);
|
|
|
|
|
|
extern
|
|
NDIS_STATUS
|
|
ArpSCreateVc(
|
|
IN NDIS_HANDLE ProtocolAfContext,
|
|
IN NDIS_HANDLE NdisVcHandle,
|
|
OUT PNDIS_HANDLE ProtocolVcContext
|
|
);
|
|
|
|
extern
|
|
NDIS_STATUS
|
|
ArpSDeleteVc(
|
|
IN NDIS_HANDLE ProtocolVcContext
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSOpenAfComplete(
|
|
IN NDIS_STATUS Status,
|
|
IN NDIS_HANDLE ProtocolAfContext,
|
|
IN NDIS_HANDLE NdisAfHandle
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSCloseAfComplete(
|
|
IN NDIS_STATUS Status,
|
|
IN NDIS_HANDLE ProtocolAfContext
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSRegisterSap(
|
|
IN PINTF pIntF
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSRegisterSapComplete(
|
|
IN NDIS_STATUS Status,
|
|
IN NDIS_HANDLE ProtocolSapContext,
|
|
IN PCO_SAP Sap,
|
|
IN NDIS_HANDLE NdisSapHandle
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSDeregisterSapComplete(
|
|
IN NDIS_STATUS Status,
|
|
IN NDIS_HANDLE ProtocolSapContext
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSMakeCallComplete(
|
|
IN NDIS_STATUS Status,
|
|
IN NDIS_HANDLE ProtocolVcContext,
|
|
IN NDIS_HANDLE NdisPartyHandle OPTIONAL,
|
|
IN PCO_CALL_PARAMETERS CallParameters
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSCloseCallComplete(
|
|
IN NDIS_STATUS Status,
|
|
IN NDIS_HANDLE ProtocolVcContext,
|
|
IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSAddPartyComplete(
|
|
IN NDIS_STATUS Status,
|
|
IN NDIS_HANDLE ProtocolPartyContext,
|
|
IN NDIS_HANDLE NdisPartyHandle,
|
|
IN PCO_CALL_PARAMETERS CallParameters
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSDropPartyComplete(
|
|
IN NDIS_STATUS Status,
|
|
IN NDIS_HANDLE ProtocolPartyContext
|
|
);
|
|
|
|
extern
|
|
NDIS_STATUS
|
|
ArpSIncomingCall(
|
|
IN NDIS_HANDLE ProtocolSapContext,
|
|
IN NDIS_HANDLE ProtocolVcContext,
|
|
IN OUT PCO_CALL_PARAMETERS CallParameters
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSIncomingDropParty(
|
|
IN NDIS_STATUS DropStatus,
|
|
IN NDIS_HANDLE ProtocolPartyContext,
|
|
IN PVOID CloseData OPTIONAL,
|
|
IN UINT Size OPTIONAL
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSCallConnected(
|
|
IN NDIS_HANDLE ProtocolVcContext
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSIncomingCloseCall(
|
|
IN NDIS_STATUS CloseStatus,
|
|
IN NDIS_HANDLE ProtocolVcContext,
|
|
IN PVOID CloseData OPTIONAL,
|
|
IN UINT Size OPTIONAL
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSIncomingCallQoSChange(
|
|
IN NDIS_HANDLE ProtocolVcContext,
|
|
IN PCO_CALL_PARAMETERS CallParameters
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSInitiateCloseCall(
|
|
IN PARP_VC Vc
|
|
);
|
|
|
|
extern
|
|
UINT
|
|
ArpSHandleArpRequest(
|
|
IN NDIS_HANDLE ProtocolBindingContext,
|
|
IN NDIS_HANDLE ProtocolVcContext,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
extern
|
|
PARP_ENTRY
|
|
ArpSLookupEntryByIpAddr(
|
|
IN PINTF pIntF,
|
|
IN IPADDR IpAddr
|
|
);
|
|
|
|
extern
|
|
PARP_ENTRY
|
|
ArpSLookupEntryByAtmAddr(
|
|
IN PINTF pIntF,
|
|
IN PATM_ADDRESS Address,
|
|
IN PATM_ADDRESS SubAddress OPTIONAL
|
|
);
|
|
|
|
extern
|
|
PARP_ENTRY
|
|
ArpSAddArpEntry(
|
|
IN PINTF pIntF,
|
|
IN IPADDR IpAddr,
|
|
IN PATM_ADDRESS Address,
|
|
IN PATM_ADDRESS SubAddress OPTIONAL,
|
|
IN PARP_VC Vc OPTIONAL
|
|
);
|
|
|
|
extern
|
|
PARP_ENTRY
|
|
ArpSAddArpEntryFromDisk(
|
|
IN PINTF pIntF,
|
|
IN PDISK_ENTRY pDiskEntry
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSUpdateArpEntry(
|
|
IN PINTF pIntF,
|
|
IN PARP_ENTRY ArpEntry,
|
|
IN IPADDR IpAddr,
|
|
IN PHW_ADDR HwAddr,
|
|
IN PARP_VC Vc
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSBuildArpReply(
|
|
IN PINTF pIntF,
|
|
IN PARP_ENTRY ArpEntry,
|
|
IN PARPS_HEADER Header,
|
|
IN PNDIS_PACKET Pkt
|
|
);
|
|
|
|
extern
|
|
BOOLEAN
|
|
ArpSAgeEntry(
|
|
IN PINTF pIntF,
|
|
IN PTIMER Timer,
|
|
IN BOOLEAN TimerShuttingDown
|
|
);
|
|
|
|
extern
|
|
BOOLEAN
|
|
ArpSDeleteIntFAddresses(
|
|
IN PINTF pIntF,
|
|
IN INT NumAddresses,
|
|
IN PATM_ADDRESS AddrList
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSQueryAndSetAddresses(
|
|
IN PINTF pIntF
|
|
);
|
|
|
|
VOID
|
|
ArpSValidateAndSetRegdAddresses(
|
|
IN PINTF pIntF,
|
|
IN KIRQL OldIrql
|
|
);
|
|
|
|
VOID
|
|
ArpSMakeRegAddrCallComplete(
|
|
IN NDIS_STATUS Status,
|
|
IN PREG_ADDR_CTXT pRegAddrCtxt
|
|
);
|
|
|
|
VOID
|
|
ArpSCloseRegAddrCallComplete(
|
|
IN NDIS_STATUS Status,
|
|
IN PREG_ADDR_CTXT pRegAddrCtxt
|
|
);
|
|
|
|
VOID
|
|
ArpSIncomingRegAddrCloseCall(
|
|
IN NDIS_STATUS Status,
|
|
IN PREG_ADDR_CTXT pRegAddrCtxt
|
|
);
|
|
|
|
VOID
|
|
ArpSValidateOneRegdAddress(
|
|
IN PINTF pIntF,
|
|
IN KIRQL OldIrql
|
|
);
|
|
|
|
VOID
|
|
ArpSSetupValidationCallParams(
|
|
IN PREG_ADDR_CTXT pRegAddrCtxt, // LOCKIN LOCKOUT (pIntF lock)
|
|
IN PATM_ADDRESS pAtmAddr
|
|
);
|
|
|
|
VOID
|
|
ArpSUnlinkRegAddrCtxt(
|
|
PINTF pIntF, // LOCKIN NOLOCKOUT
|
|
KIRQL OldIrql
|
|
);
|
|
|
|
VOID
|
|
ArpSLogFailedRegistration(
|
|
PATM_ADDRESS pAtmAddress
|
|
);
|
|
|
|
extern
|
|
BOOLEAN
|
|
ArpSReferenceIntF(
|
|
IN PINTF pIntF
|
|
);
|
|
|
|
extern
|
|
PINTF
|
|
ArpSReferenceIntFByName(
|
|
IN PINTERFACE_NAME pInterface
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSDereferenceIntF(
|
|
IN PINTF pIntF
|
|
);
|
|
|
|
extern
|
|
BOOLEAN
|
|
ArpSReferenceVc(
|
|
IN PARP_VC Vc,
|
|
IN BOOLEAN bSendRef
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSDereferenceVc(
|
|
IN PARP_VC Vc,
|
|
IN BOOLEAN KillArpEntry,
|
|
IN BOOLEAN bSendComplete
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSSleep(
|
|
IN UINT TimeInMs
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSFreeGlobalData(
|
|
VOID
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSTimerCancel(
|
|
IN PTIMER pTimerList
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSTimerEnqueue(
|
|
IN PINTF pIntF,
|
|
IN PTIMER pTimer
|
|
);
|
|
|
|
extern
|
|
PVOID
|
|
ArpSAllocBlock(
|
|
IN PINTF pIntF,
|
|
IN ENTRY_TYPE EntryType
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSFreeBlock(
|
|
IN PVOID pBlock
|
|
);
|
|
|
|
BOOLEAN
|
|
ArpSValidAtmAddress(
|
|
IN PATM_ADDRESS AtmAddr,
|
|
IN UINT MaxSize
|
|
);
|
|
|
|
|
|
VOID
|
|
DeregisterAllAddresses(
|
|
IN PINTF pIntF
|
|
);
|
|
|
|
BOOLEAN
|
|
MarsIsValidClusterMember(
|
|
PINTF pIntF,
|
|
PCLUSTER_MEMBER pPossibleMember
|
|
);
|
|
|
|
VOID
|
|
ArpSTryCloseAdapter(
|
|
IN PINTF pIntF // NOLOCKIN LOLOCKOUT
|
|
);
|
|
|
|
#if DBG
|
|
|
|
extern
|
|
VOID
|
|
ArpSDumpPacket(
|
|
IN PUCHAR Packet,
|
|
IN UINT PktLen
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSDumpAddress(
|
|
IN IPADDR IpAddr,
|
|
IN PHW_ADDR HwAddr,
|
|
IN PCHAR String
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSDumpIpAddr(
|
|
IN IPADDR IpAddr,
|
|
IN PCHAR String
|
|
);
|
|
|
|
extern
|
|
VOID
|
|
ArpSDumpAtmAddr(
|
|
IN PATM_ADDRESS AtmAddr,
|
|
IN PCHAR String
|
|
);
|
|
|
|
#else
|
|
|
|
#define ArpSDumpPacket(_Packet, _PktLen)
|
|
#define ArpSDumpAddress(_IpAddr, _HwAddr, _String)
|
|
#define ArpSDumpIpAddr(_IpAddr, _String)
|
|
#define ArpSDumpAtmAddr(_AtmAddr, _String)
|
|
|
|
#endif
|
|
|
|
/*
|
|
* The following macros deal with on-the-wire integer and long values
|
|
*
|
|
* On the wire format is big-endian i.e. a long value of 0x01020304 is
|
|
* represented as 01 02 03 04. Similarly an int value of 0x0102 is
|
|
* represented as 01 02.
|
|
*
|
|
* The host format is not assumed since it will vary from processor to
|
|
* processor.
|
|
*/
|
|
|
|
#pragma alloc_text(INIT, DriverEntry)
|
|
#pragma alloc_text(INIT, ArpSReadGlobalConfiguration)
|
|
#pragma alloc_text(INIT, ArpSInitializeNdis)
|
|
#pragma alloc_text(PAGE, ArpSReadArpCache)
|
|
#pragma alloc_text(PAGE, ArpSWriteArpCache)
|
|
#pragma alloc_text(PAGE, ArpSSleep)
|
|
#pragma alloc_text(PAGE, ArpSReqThread)
|
|
#pragma alloc_text(PAGE, ArpSTimerThread)
|
|
#pragma alloc_text(PAGE, ArpSDispatch)
|
|
#pragma alloc_text(PAGE, ArpSLookupEntryByIpAddr)
|
|
#pragma alloc_text(PAGE, ArpSLookupEntryByAtmAddr)
|
|
#pragma alloc_text(PAGE, ArpSAddArpEntry)
|
|
#pragma alloc_text(PAGE, ArpSAddArpEntryFromDisk)
|
|
#pragma alloc_text(PAGE, ArpSCreateIntF)
|
|
|
|
#pragma alloc_text(PAGE, MarsReqThread)
|
|
#endif // _PROTOS_
|