windows-nt/Source/XPSP1/NT/net/atm/arp/atmarpc/externs.h
2020-09-26 16:20:57 +08:00

2195 lines
37 KiB
C

/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
externs.h -- Extern declarations.
Abstract:
All external declarations for ATMARP client modules (functions,
variables) are here.
Revision History:
Who When What
-------- -------- ----------------------------------------------
arvindm 08-09-96 Created
Notes:
--*/
#ifndef _ATMARP_EXTERNS__H
#define _ATMARP_EXTERNS__H
#ifndef EXTERN
#define EXTERN extern
#endif // EXTERN
//
// --------------- From adapter.c ----------------------------
//
EXTERN
INT
AtmArpBindAdapterHandler(
OUT PNDIS_STATUS pStatus,
IN NDIS_HANDLE BindContext,
IN PNDIS_STRING pDeviceName,
IN PVOID SystemSpecific1,
IN PVOID SystemSpecific2
);
EXTERN
VOID
AtmArpUnbindAdapterHandler(
OUT PNDIS_STATUS pStatus,
IN NDIS_HANDLE ProtocolBindingContext,
IN NDIS_HANDLE UnbindContext
);
EXTERN
VOID
AtmArpCompleteUnbindAdapter(
IN PATMARP_ADAPTER pAdapter
);
EXTERN
VOID
AtmArpOpenAdapterCompleteHandler(
IN NDIS_HANDLE ProtocolBindingContext,
IN NDIS_STATUS Status,
IN NDIS_STATUS OpenErrorStatus
);
EXTERN
VOID
AtmArpCloseAdapterCompleteHandler(
IN NDIS_HANDLE ProtocolBindingContext,
IN NDIS_STATUS Status
);
EXTERN
VOID
AtmArpSendCompleteHandler(
IN NDIS_HANDLE ProtocolBindingContext,
IN PNDIS_PACKET pNdisPacket,
IN NDIS_STATUS Status
);
EXTERN
VOID
AtmArpTransferDataCompleteHandler(
IN NDIS_HANDLE ProtocolBindingContext,
IN PNDIS_PACKET pNdisPacket,
IN NDIS_STATUS Status,
IN UINT BytesTransferred
);
EXTERN
VOID
AtmArpResetCompleteHandler(
IN NDIS_HANDLE ProtocolBindingContext,
IN NDIS_STATUS Status
);
EXTERN
VOID
AtmArpRequestCompleteHandler(
IN NDIS_HANDLE ProtocolBindingContext,
IN PNDIS_REQUEST pNdisRequest,
IN NDIS_STATUS Status
);
EXTERN
NDIS_STATUS
AtmArpReceiveHandler(
IN NDIS_HANDLE ProtocolBindingContext,
IN NDIS_HANDLE MacReceiveContext,
IN PVOID pHeaderBuffer,
IN UINT HeaderBufferSize,
IN PVOID pLookAheadBuffer,
IN UINT LookaheadBufferSize,
IN UINT PacketSize
);
EXTERN
VOID
AtmArpReceiveCompleteHandler(
IN NDIS_HANDLE ProtocolBindingContext
);
EXTERN
INT
AtmArpReceivePacketHandler(
IN NDIS_HANDLE ProtocolBindingContext,
IN PNDIS_PACKET pNdisPacket
);
EXTERN
VOID
AtmArpStatusHandler(
IN NDIS_HANDLE ProtocolBindingContext,
IN NDIS_STATUS GeneralStatus,
IN PVOID pStatusBuffer,
IN UINT StatusBufferSize
);
EXTERN
VOID
AtmArpStatusCompleteHandler(
IN NDIS_HANDLE ProtocolBindingContext
);
EXTERN
VOID
AtmArpCoSendCompleteHandler(
IN NDIS_STATUS Status,
IN NDIS_HANDLE ProtocolVcContext,
IN PNDIS_PACKET pNdisPacket
);
EXTERN
VOID
AtmArpCoStatusHandler(
IN NDIS_HANDLE ProtocolBindingContext,
IN NDIS_HANDLE ProtocolVcContext OPTIONAL,
IN NDIS_STATUS GeneralStatus,
IN PVOID pStatusBuffer,
IN UINT StatusBufferSize
);
#ifdef _PNP_POWER_
EXTERN
NDIS_STATUS
AtmArpPnPReconfigHandler(
IN PATMARP_ADAPTER pAdapter OPTIONAL,
IN PNET_PNP_EVENT pNetPnPEvent
);
EXTERN
NDIS_STATUS
AtmArpPnPEventHandler(
IN NDIS_HANDLE ProtocolBindingContext,
IN PNET_PNP_EVENT pNetPnPEvent
);
#endif // _PNP_POWER_
EXTERN
NDIS_STATUS
AtmArpSendAdapterNdisRequest(
IN PATMARP_ADAPTER pAdapter,
IN PNDIS_REQUEST pNdisRequest,
IN NDIS_REQUEST_TYPE RequestType,
IN NDIS_OID Oid,
IN PVOID pBuffer,
IN ULONG BufferLength
);
EXTERN
NDIS_STATUS
AtmArpGetAdapterInfo(
IN PATMARP_ADAPTER pAdapter
);
EXTERN
NDIS_STATUS
AtmArpSendNdisRequest(
IN PATMARP_ADAPTER pAdapter,
IN PNDIS_REQUEST pNdisRequest,
IN NDIS_REQUEST_TYPE RequestType,
IN NDIS_OID Oid,
IN PVOID pBuffer,
IN ULONG BufferLength
);
EXTERN
VOID
AtmArpShutdownInterface(
IN PATMARP_INTERFACE pInterface
);
EXTERN
BOOLEAN
AtmArpIsDeviceAlreadyBound(
IN PNDIS_STRING pDeviceName
);
#if ATMOFFLOAD
NDIS_STATUS
AtmArpQueryAndEnableOffload(
IN PATMARP_ADAPTER pAdapter
);
VOID
AtmArpDisableOffload(
IN PATMARP_ADAPTER pAdapter
);
#endif // ATMOFFLOAD
//
// --------------- From arpcfg.c ----------------------------
//
EXTERN
NDIS_STATUS
AtmArpCfgReadAdapterConfiguration(
IN PATMARP_ADAPTER pAdapter
);
EXTERN
NDIS_HANDLE
AtmArpCfgOpenLISConfiguration(
IN PATMARP_ADAPTER pAdapter,
IN UINT LISNumber,
OUT PNDIS_STRING pIPConfigString
);
EXTERN
NDIS_HANDLE
AtmArpCfgOpenLISConfigurationByName(
IN PATMARP_ADAPTER pAdapter,
IN PNDIS_STRING pIPConfigString
);
EXTERN
VOID
AtmArpCfgCloseLISConfiguration(
NDIS_HANDLE LISConfigHandle
);
EXTERN
NDIS_STATUS
AtmArpCfgReadLISConfiguration(
IN NDIS_HANDLE LISConfigHandle,
IN PATMARP_INTERFACE pInterface
);
EXTERN
VOID
AtmArpCfgReadAtmAddressList(
IN OUT PATMARP_SERVER_LIST pServerList,
IN PWCHAR pListKeyName,
IN NDIS_HANDLE LISConfigHandle
);
EXTERN
NDIS_STATUS
AtmArpCfgReadSAPList(
IN PATMARP_INTERFACE pInterface,
IN NDIS_HANDLE LISConfigHandle
);
EXTERN
NDIS_STATUS
AtmArpCfgReadAtmAddress(
IN NDIS_HANDLE ConfigHandle,
IN PATM_ADDRESS pAtmAddress,
IN PWCHAR pValueName
);
EXTERN
NDIS_STATUS
AtmArpCfgReadQosHeuristics(
IN NDIS_HANDLE LISConfigHandle,
IN PATMARP_INTERFACE pInterface
);
EXTERN
VOID
AtmArpCfgReadStaticArpEntries(
IN NDIS_HANDLE LISConfigHandle,
IN PATMARP_INTERFACE pInterface
);
EXTERN
BOOLEAN
AtmArpConvertStringToIPAddress(
IN PWCHAR AddressString,
OUT PULONG IpAddress
);
//
// --------------- From arpif.c ----------------------------
//
EXTERN IP_MASK AtmArpIPMaskTable[];
INT
AtmArpIfDynRegister(
IN PNDIS_STRING pAdapterString,
IN PVOID IPContext,
IN struct _IP_HANDLERS * pIpHandlers,
IN struct LLIPBindInfo * pBindInfo,
IN UINT InterfaceNumber
);
EXTERN
VOID
AtmArpIfOpen(
IN PVOID Context
);
EXTERN
VOID
AtmArpIfClose(
IN PVOID Context
);
EXTERN
UINT
AtmArpIfAddAddress(
IN PVOID Context,
IN UINT AddressType,
IN IP_ADDRESS IPAddress,
IN IP_MASK Mask
#ifndef BUILD_FOR_1381
,
IN PVOID Context2
#endif // BUILD_FOR_1381
);
EXTERN
UINT
AtmArpIfDelAddress(
IN PVOID Context,
IN UINT AddressType,
IN IP_ADDRESS IPAddress,
IN IP_MASK Mask
);
NDIS_STATUS
AtmArpIfMultiTransmit(
IN PVOID Context,
IN PNDIS_PACKET * pNdisPacketArray,
IN UINT NumberOfPackets,
IN IP_ADDRESS Destination,
IN RouteCacheEntry * pRCE OPTIONAL
#if P2MP
,
IN void * ArpCtxt
#endif
);
EXTERN
NDIS_STATUS
AtmArpIfTransmit(
IN PVOID Context,
IN PNDIS_PACKET pNdisPacket,
IN IP_ADDRESS Destination,
IN RouteCacheEntry * pRCE OPTIONAL
#if P2MP
,
IN void * ArpCtxt
#endif
);
EXTERN
NDIS_STATUS
AtmArpIfTransfer(
IN PVOID Context,
IN NDIS_HANDLE Context1,
IN UINT ArpHdrOffset,
IN UINT ProtoOffset,
IN UINT BytesWanted,
IN PNDIS_PACKET pNdisPacket,
OUT PUINT pTransferCount
);
EXTERN
VOID
AtmArpIfInvalidate(
IN PVOID Context,
IN RouteCacheEntry * pRCE
);
EXTERN
BOOLEAN
AtmArpUnlinkRCE(
IN RouteCacheEntry * pRCE,
IN PATMARP_IP_ENTRY pIpEntry
);
EXTERN
VOID
AtmArpLinkRCE(
IN RouteCacheEntry * pRCE,
IN PATMARP_IP_ENTRY pIpEntry LOCKIN LOCKOUT
);
EXTERN
INT
AtmArpIfQueryInfo(
IN PVOID Context,
IN TDIObjectID * pID,
IN PNDIS_BUFFER pNdisBuffer,
IN OUT PUINT pBufferSize,
IN PVOID QueryContext
);
EXTERN
INT
AtmArpIfSetInfo(
IN PVOID Context,
IN TDIObjectID * pID,
IN PVOID pBuffer,
IN UINT BufferSize
);
EXTERN
INT
AtmArpIfGetEList(
IN PVOID Context,
IN TDIEntityID * pEntityList,
IN OUT PUINT pEntityListSize
);
#ifdef _PNP_POWER_
EXTERN
VOID
AtmArpIfPnPComplete(
IN PVOID Context,
IN NDIS_STATUS Status,
IN PNET_PNP_EVENT pNetPnPEvent
);
#endif // _PNP_POWER_
#ifdef PROMIS
EXTERN
NDIS_STATUS
AtmArpIfSetNdisRequest(
IN PVOID Context,
IN NDIS_OID Oid,
IN UINT On
);
#endif // PROMIS
EXTERN
VOID
AtmArpFreeSendPackets(
IN PATMARP_INTERFACE pInterface,
IN PNDIS_PACKET PacketList,
IN BOOLEAN HdrPresent
);
EXTERN
NDIS_STATUS
AtmArpSendBroadcast(
IN PATMARP_INTERFACE pInterface,
IN PNDIS_PACKET pNdisPacket,
IN PATMARP_FLOW_SPEC pFlowSpec,
IN PATMARP_FILTER_SPEC pFilterSpec
);
EXTERN
BOOLEAN
AtmArpIsBroadcastIPAddress(
IN IP_ADDRESS Address,
IN PATMARP_INTERFACE pInterface LOCKIN LOCKOUT
);
EXTERN
BOOLEAN
AtmArpValidateTableContext(
IN PVOID QueryContext,
IN PATMARP_INTERFACE pInterface,
IN BOOLEAN * pIsValid
);
EXTERN
BOOLEAN
AtmArpReadNextTableEntry(
IN PVOID QueryContext,
IN PATMARP_INTERFACE pInterface,
IN PUCHAR pSpace
);
//
// --------------- From arppkt.c ----------------------------
//
EXTERN
VOID
AtmArpSendPacketOnVc(
IN PATMARP_VC pVc,
IN PNDIS_PACKET pNdisPacket
);
EXTERN
PNDIS_PACKET
AtmArpBuildARPPacket(
IN USHORT OperationType,
IN PATMARP_INTERFACE pInterface,
IN PUCHAR * ppArpPacket,
IN PAA_ARP_PKT_CONTENTS pArpContents
);
EXTERN
VOID
AtmArpSendARPRequest(
PATMARP_INTERFACE pInterface,
IP_ADDRESS UNALIGNED * pSrcIPAddress,
IP_ADDRESS UNALIGNED * pDstIPAddress
);
EXTERN
VOID
AtmArpSendInARPRequest(
IN PATMARP_VC pVc
);
EXTERN
UINT
AtmArpCoReceivePacketHandler(
IN NDIS_HANDLE ProtocolBindingContext,
IN NDIS_HANDLE ProtocolVcContext,
IN PNDIS_PACKET pNdisPacket
);
EXTERN
VOID
AtmArpHandleARPPacket(
IN PATMARP_VC pVc,
IN PAA_PKT_LLC_SNAP_HEADER pPktHeader,
IN ULONG PacketLength
);
EXTERN
VOID
AtmArpHandleARPRequest(
IN PATMARP_VC pVc,
IN PATMARP_INTERFACE pInterface,
IN PAA_ARP_PKT_HEADER pArpHeader,
IN PAA_ARP_PKT_CONTENTS pArpContents
);
EXTERN
VOID
AtmArpHandleARPReply(
IN PATMARP_VC pVc,
IN PATMARP_INTERFACE pInterface,
IN PAA_ARP_PKT_HEADER pArpHeader,
IN PAA_ARP_PKT_CONTENTS pArpContents,
IN BOOLEAN SrcIPAddressIsOurs,
IN BOOLEAN SrcAtmAddressIsOurs
);
EXTERN
VOID
AtmArpHandleARPNAK(
IN PATMARP_VC pVc,
IN PATMARP_INTERFACE pInterface,
IN PAA_ARP_PKT_HEADER pArpHeader,
IN PAA_ARP_PKT_CONTENTS pArpContents
);
EXTERN
VOID
AtmArpHandleInARPRequest(
IN PATMARP_VC pVc,
IN PATMARP_INTERFACE pInterface,
IN PAA_ARP_PKT_HEADER pArpHeader,
IN PAA_ARP_PKT_CONTENTS pArpContents
);
EXTERN
VOID
AtmArpHandleInARPReply(
IN PATMARP_VC pVc,
IN PATMARP_INTERFACE pInterface,
IN PAA_ARP_PKT_HEADER pArpHeader,
IN PAA_ARP_PKT_CONTENTS pArpContents
);
//
// --------------- From arpproc.c ----------------------------
//
EXTERN
VOID
AtmArpStartRegistration(
IN PATMARP_INTERFACE pInterface
);
EXTERN
void
AtmArpRegisterOtherIPAddresses(
IN PATMARP_INTERFACE pInterface
);
EXTERN
VOID
AtmArpRetryServerRegistration(
IN PATMARP_INTERFACE pInterface
);
EXTERN
VOID
AtmArpHandleServerRegistrationFailure(
IN PATMARP_INTERFACE pInterface,
IN PATMARP_VC pVc OPTIONAL
);
EXTERN
BOOLEAN
AtmArpIsZeroIPAddress(
IN UCHAR UNALIGNED * pIPAddress
);
EXTERN
BOOLEAN
AtmArpIsLocalIPAddress(
IN PATMARP_INTERFACE pInterface,
IN UCHAR UNALIGNED * pIPAddress
);
EXTERN
BOOLEAN
AtmArpIsLocalAtmAddress(
IN PATMARP_INTERFACE pInterface,
IN PUCHAR pAtmAddrString,
IN UCHAR AtmAddrTypeLen
);
EXTERN
NDIS_STATUS
AtmArpSendPacketOnAtmEntry(
IN PATMARP_INTERFACE pInterface,
IN PATMARP_ATM_ENTRY pAtmEntry,
IN PNDIS_PACKET pNdisPacket,
IN PATMARP_FLOW_SPEC pFlowSpec,
IN PATMARP_FILTER_SPEC pFilterSpec OPTIONAL,
IN PATMARP_FLOW_INFO pFlowInfo OPTIONAL,
IN BOOLEAN IsBroadcast
);
EXTERN
VOID
AtmArpQueuePacketOnVc(
IN PATMARP_VC pVc,
IN PNDIS_PACKET pNdisPacket
);
EXTERN
VOID
AtmArpStartSendsOnVc(
IN PATMARP_VC pVc
);
EXTERN
VOID
AtmArpSendPacketListOnAtmEntry(
IN PATMARP_INTERFACE pInterface,
IN PATMARP_ATM_ENTRY pAtmEntry,
IN PNDIS_PACKET pPacketList,
IN BOOLEAN IsBroadcast
);
EXTERN
PATMARP_IP_ENTRY
AtmArpLearnIPToAtm(
IN PATMARP_INTERFACE pInterface,
IN IP_ADDRESS UNALIGNED * pIPAddress,
IN UCHAR AtmAddressTypeLength,
IN UCHAR UNALIGNED * pAtmAddress,
IN UCHAR AtmSubaddressTypeLength,
IN UCHAR UNALIGNED * pAtmSubaddress,
IN BOOLEAN IsStaticEntry
);
EXTERN
NDIS_STATUS
AtmArpQueuePacketOnIPEntry(
IN PATMARP_IP_ENTRY pIpEntry,
IN PNDIS_PACKET pNdisPacket
);
BOOLEAN
AtmArpAtmEntryIsReallyClosing(
IN PATMARP_ATM_ENTRY pAtmEntry
);
EXTERN
PATMARP_ATM_ENTRY
AtmArpSearchForAtmAddress(
IN PATMARP_INTERFACE pInterface,
IN UCHAR AtmAddressTypeLength,
IN UCHAR UNALIGNED * pAtmAddress,
IN UCHAR AtmSubaddressTypeLength,
IN UCHAR UNALIGNED * pAtmSubaddress,
IN AE_REFTYPE RefType,
IN BOOLEAN CreateNew
);
EXTERN
PATMARP_IP_ENTRY
AtmArpSearchForIPAddress(
IN PATMARP_INTERFACE pInterface,
IN IP_ADDRESS UNALIGNED * pIPAddress,
IN IE_REFTYPE RefType,
IN BOOLEAN IsBroadcast,
IN BOOLEAN CreateNew
);
EXTERN
VOID
AtmArpAbortIPEntry(
IN PATMARP_IP_ENTRY pIpEntry
);
EXTERN
VOID
AtmArpInvalidateAtmEntry(
IN PATMARP_ATM_ENTRY pAtmEntry,
IN BOOLEAN ShuttingDown
);
EXTERN
VOID
AtmArpCloseVCsOnAtmEntry(
IN PATMARP_ATM_ENTRY pAtmEntry,
IN BOOLEAN ShuttingDown
);
EXTERN
VOID
AtmArpResolveIpEntry(
IN PATMARP_IP_ENTRY pIpEntry LOCKIN NOLOCKOUT
);
EXTERN
VOID
AtmArpCleanupArpTable(
IN PATMARP_INTERFACE pInterface
);
//
// --------------- from arpwmi.c -----------------------------
//
#ifdef ATMARP_WMI
EXTERN
PATMARP_WMI_GUID
AtmArpWmiFindGuid(
IN PATMARP_INTERFACE pInterface,
IN LPGUID pGuid,
OUT PULONG pGuidDataSize
);
EXTERN
NTSTATUS
AtmArpWmiRegister(
IN PATMARP_INTERFACE pInterface,
IN ULONG RegistrationType,
IN PWMIREGINFO pWmiRegInfo,
IN ULONG WmiRegInfoSize,
OUT PULONG pReturnSize
);
EXTERN
NTSTATUS
AtmArpWmiQueryAllData(
IN PATMARP_INTERFACE pInterface,
IN LPGUID pGuid,
IN PWNODE_ALL_DATA pWnode,
IN ULONG BufferSize,
OUT PULONG pReturnSize
);
EXTERN
NTSTATUS
AtmArpWmiQuerySingleInstance(
IN PATMARP_INTERFACE pInterface,
IN PWNODE_SINGLE_INSTANCE pWnode,
IN ULONG BufferSize,
OUT PULONG pReturnSize
);
EXTERN
NTSTATUS
AtmArpWmiChangeSingleInstance(
IN PATMARP_INTERFACE pInterface,
IN PWNODE_SINGLE_INSTANCE pWnode,
IN ULONG BufferSize,
OUT PULONG pReturnSize
);
EXTERN
NTSTATUS
AtmArpWmiChangeSingleItem(
IN PATMARP_INTERFACE pInterface,
IN PWNODE_SINGLE_ITEM pWnode,
IN ULONG BufferSize,
OUT PULONG pReturnSize
);
EXTERN
NTSTATUS
AtmArpWmiSetEventStatus(
IN PATMARP_INTERFACE pInterface,
IN LPGUID pGuid,
IN BOOLEAN bEnabled
);
EXTERN
NTSTATUS
AtmArpWmiDispatch(
IN PDEVICE_OBJECT pDeviceObject,
IN PIRP pIrp
);
EXTERN
VOID
AtmArpWmiInitInterface(
IN PATMARP_INTERFACE pInterface,
IN PATMARP_WMI_GUID GuidList,
IN ULONG NumberOfGuids
);
EXTERN
VOID
AtmArpWmiShutdownInterface(
IN PATMARP_INTERFACE pInterface
);
EXTERN
NTSTATUS
AtmArpWmiSetTCSupported(
IN PATMARP_INTERFACE pInterface,
IN ATMARP_GUID_ID MyId,
IN PVOID pInputBuffer,
IN ULONG BufferLength,
OUT PULONG pBytesWritten,
OUT PULONG pBytesNeeded
);
EXTERN
NTSTATUS
AtmArpWmiQueryTCSupported(
IN PATMARP_INTERFACE pInterface,
IN ATMARP_GUID_ID MyId,
OUT PVOID pOutputBuffer,
IN ULONG BufferLength,
OUT PULONG pBytesReturned,
OUT PULONG pBytesNeeded
);
NTSTATUS
AtmArpWmiGetAddressList(
IN PATMARP_INTERFACE pInterface LOCKIN LOCKOUT,
OUT PVOID pOutputBuffer,
IN ULONG BufferLength,
OUT PULONG pBytesReturned,
OUT PULONG pBytesNeeded
);
EXTERN
VOID
AtmArpWmiEnableEventTCSupported(
IN PATMARP_INTERFACE pInterface,
IN ATMARP_GUID_ID MyId,
IN BOOLEAN bEnable
);
EXTERN
NTSTATUS
AtmArpWmiSetTCIfIndication(
IN PATMARP_INTERFACE pInterface,
IN ATMARP_GUID_ID MyId,
IN PVOID pInputBuffer,
IN ULONG BufferLength,
OUT PULONG pBytesWritten,
OUT PULONG pBytesNeeded
);
EXTERN
NTSTATUS
AtmArpWmiQueryTCIfIndication(
IN PATMARP_INTERFACE pInterface,
IN ATMARP_GUID_ID MyId,
OUT PVOID pOutputBuffer,
IN ULONG BufferLength,
OUT PULONG pBytesReturned,
OUT PULONG pBytesNeeded
);
EXTERN
VOID
AtmArpWmiEnableEventTCIfIndication(
IN PATMARP_INTERFACE pInterface,
IN ATMARP_GUID_ID MyId,
IN BOOLEAN bEnable
);
EXTERN
VOID
AtmArpWmiSendTCIfIndication(
IN PATMARP_INTERFACE pInterface,
IN ULONG IndicationCode,
IN ULONG IndicationSubCode
);
EXTERN
NTSTATUS
AtmArpWmiSetStatisticsBuffer(
IN PATMARP_INTERFACE pInterface,
IN ATMARP_GUID_ID MyId,
IN PVOID pInputBuffer,
IN ULONG BufferLength,
OUT PULONG pBytesWritten,
OUT PULONG pBytesNeeded
);
EXTERN
NTSTATUS
AtmArpWmiQueryStatisticsBuffer(
IN PATMARP_INTERFACE pInterface,
IN ATMARP_GUID_ID MyId,
OUT PVOID pOutputBuffer,
IN ULONG BufferLength,
OUT PULONG pBytesReturned,
OUT PULONG pBytesNeeded
);
EXTERN
PATMARP_INTERFACE
AtmArpWmiGetIfByName(
IN PWSTR pIfName,
IN USHORT IfNameLength
);
#endif // ATMARP_WMI
//
// --------------- from callmgr.c ----------------------------
//
EXTERN
VOID
AtmArpCoAfRegisterNotifyHandler(
IN NDIS_HANDLE ProtocolBindingContext,
IN PCO_ADDRESS_FAMILY pAddressFamily
);
EXTERN
NDIS_STATUS
AtmArpOpenCallMgr(
IN PATMARP_INTERFACE pInterface
);
EXTERN
VOID
AtmArpCloseCallMgr(
IN PATMARP_INTERFACE pInterface
);
EXTERN
VOID
AtmArpRegisterSaps(
IN PATMARP_INTERFACE pInterface
);
EXTERN
VOID
AtmArpDeregisterSaps(
IN PATMARP_INTERFACE pInterface
);
EXTERN
NDIS_STATUS
AtmArpMakeCall(
IN PATMARP_INTERFACE pInterface,
IN PATMARP_ATM_ENTRY pAtmEntry,
IN PATMARP_FLOW_SPEC pFlowSpec,
IN PNDIS_PACKET pPacketToBeQueued OPTIONAL
);
EXTERN
VOID
AtmArpFillCallParameters(
IN PCO_CALL_PARAMETERS pCallParameters,
IN ULONG ParametersSize,
IN PATM_ADDRESS pCalledAddress,
IN PATM_ADDRESS pCallingAddress,
IN PATMARP_FLOW_SPEC pFlowSpec,
IN BOOLEAN IsPMP,
IN BOOLEAN IsMakeCall
);
EXTERN
VOID
AtmArpCloseCall(
IN PATMARP_VC pVc
);
EXTERN
NDIS_STATUS
AtmArpCreateVcHandler(
IN NDIS_HANDLE ProtocolAfContext,
IN NDIS_HANDLE NdisVcHandle,
OUT PNDIS_HANDLE pProtocolVcContext
);
EXTERN
NDIS_STATUS
AtmArpDeleteVcHandler(
IN NDIS_HANDLE ProtocolVcContext
);
EXTERN
NDIS_STATUS
AtmArpIncomingCallHandler(
IN NDIS_HANDLE ProtocolSapContext,
IN NDIS_HANDLE ProtocolVcContext,
IN OUT PCO_CALL_PARAMETERS pCallParameters
);
EXTERN
VOID
AtmArpCallConnectedHandler(
IN NDIS_HANDLE ProtocolVcContext
);
EXTERN
VOID
AtmArpIncomingCloseHandler(
IN NDIS_STATUS CloseStatus,
IN NDIS_HANDLE ProtocolVcContext,
IN PVOID pCloseData OPTIONAL,
IN UINT Size OPTIONAL
);
#ifdef IPMCAST
EXTERN
VOID
AtmArpAddParty(
IN PATMARP_ATM_ENTRY pAtmEntry,
IN PATMARP_IPMC_ATM_ENTRY pMcAtmEntry
);
EXTERN
VOID
AtmArpMcTerminateMember(
IN PATMARP_ATM_ENTRY pAtmEntry,
IN PATMARP_IPMC_ATM_ENTRY pMcAtmEntry
);
#endif // IPMCAST
EXTERN
VOID
AtmArpIncomingDropPartyHandler(
IN NDIS_STATUS DropStatus,
IN NDIS_HANDLE ProtocolPartyContext,
IN PVOID pCloseData OPTIONAL,
IN UINT Size OPTIONAL
);
EXTERN
VOID
AtmArpQosChangeHandler(
IN NDIS_HANDLE ProtocolVcContext,
IN PCO_CALL_PARAMETERS pCallParameters
);
EXTERN
VOID
AtmArpOpenAfCompleteHandler(
IN NDIS_STATUS Status,
IN NDIS_HANDLE ProtocolAfContext,
IN NDIS_HANDLE NdisAfHandle
);
EXTERN
VOID
AtmArpCloseAfCompleteHandler(
IN NDIS_STATUS Status,
IN NDIS_HANDLE ProtocolAfContext
);
EXTERN
VOID
AtmArpRegisterSapCompleteHandler(
IN NDIS_STATUS Status,
IN NDIS_HANDLE ProtocolSapContext,
IN PCO_SAP pSap,
IN NDIS_HANDLE NdisSapHandle
);
EXTERN
VOID
AtmArpDeregisterSapCompleteHandler(
IN NDIS_STATUS Status,
IN NDIS_HANDLE ProtocolSapContext
);
EXTERN
VOID
AtmArpMakeCallCompleteHandler(
IN NDIS_STATUS Status,
IN NDIS_HANDLE ProtocolVcContext,
IN NDIS_HANDLE NdisPartyHandle OPTIONAL,
IN PCO_CALL_PARAMETERS pCallParameters
);
#ifdef IPMCAST
EXTERN
VOID
AtmArpMcMakeCallComplete(
IN PATMARP_ATM_ENTRY pAtmEntry,
IN NDIS_HANDLE NdisPartyHandle OPTIONAL,
IN NDIS_STATUS Status
);
#endif // IPMCAST
EXTERN
VOID
AtmArpCloseAfCompleteHandler(
IN NDIS_STATUS Status,
IN NDIS_HANDLE ProtocolAfContext
);
EXTERN
VOID
AtmArpCloseCallCompleteHandler(
IN NDIS_STATUS Status,
IN NDIS_HANDLE ProtocolVcContext,
IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
);
EXTERN
VOID
AtmArpAddPartyCompleteHandler(
IN NDIS_STATUS Status,
IN NDIS_HANDLE ProtocolPartyContext,
IN NDIS_HANDLE NdisPartyHandle,
IN PCO_CALL_PARAMETERS pCallParameters
);
EXTERN
VOID
AtmArpDropPartyCompleteHandler(
IN NDIS_STATUS Status,
IN NDIS_HANDLE ProtocolPartyContext
);
EXTERN
VOID
AtmArpModifyQosCompleteHandler(
IN NDIS_STATUS Status,
IN NDIS_HANDLE ProtocolVcContext,
IN PCO_CALL_PARAMETERS pCallParameters
);
EXTERN
NDIS_STATUS
AtmArpCoRequestHandler(
IN NDIS_HANDLE ProtocolAfContext,
IN NDIS_HANDLE ProtocolVcContext OPTIONAL,
IN NDIS_HANDLE ProtocolPartyContext OPTIONAL,
IN OUT PNDIS_REQUEST pNdisRequest
);
EXTERN
VOID
AtmArpCoRequestCompleteHandler(
IN NDIS_STATUS Status,
IN NDIS_HANDLE ProtocolAfContext,
IN NDIS_HANDLE ProtocolVcContext OPTIONAL,
IN NDIS_HANDLE ProtocolPartyContext OPTIONAL,
IN PNDIS_REQUEST pNdisRequest
);
EXTERN
VOID
AtmArpGetAtmAddress(
IN PATMARP_INTERFACE pInterface
);
EXTERN
VOID
AtmArpHandleGetAddressesComplete(
IN NDIS_STATUS Status,
IN PATMARP_INTERFACE pInterface,
IN PNDIS_REQUEST pNdisRequest
);
EXTERN
VOID
AtmArpUpdateAddresses(
IN PATMARP_INTERFACE pInterface,
IN BOOLEAN AddThem
);
EXTERN
VOID
AtmArpHandleModAddressComplete(
IN NDIS_STATUS Status,
IN PATMARP_INTERFACE pInterface,
IN PNDIS_REQUEST pNdisRequest,
IN ULONG Oid
);
EXTERN
NDIS_STATUS
AtmArpSendNdisCoRequest(
IN NDIS_HANDLE NdisAdapterHandle,
IN NDIS_HANDLE NdisAfHandle,
IN PNDIS_REQUEST pNdisRequest,
IN NDIS_REQUEST_TYPE RequestType,
IN NDIS_OID Oid,
IN PVOID pBuffer,
IN ULONG BufferLength
);
//
// --------------- from init.c ----------------------------
//
//
EXTERN
VOID
AtmArpInitGlobals(
);
EXTERN
NDIS_STATUS
AtmArpInitIpOverAtm(
IN PATMARP_INTERFACE pInterface
);
EXTERN
VOID
AtmArpUnloadProtocol(
VOID
);
//
// --------------- from ioctl.c ------------------------------
//
//
#if !BINARY_COMPATIBLE
#ifdef CUBDD
EXTERN
NTSTATUS
AtmArpInternalDeviceControl(
IN PDEVICE_OBJECT pDeviceObject,
IN PIRP pIrp
);
EXTERN
NTSTATUS
AtmArpIoctlArpRequest(
IN PATMARP_INTERFACE pInterface OPTIONAL,
IN PIRP pIrp
);
EXTERN
VOID
AtmArpCompleteArpIrpList(
IN SINGLE_LIST_ENTRY ListHead,
IN PATM_ADDRESS pAtmAddress OPTIONAL
);
#endif // CUBDD
#endif // !BINARY_COMPATIBLE
//
// --------------- from ipmcast.c ----------------------------
//
//
#ifdef DHCP_OVER_ATM
EXTERN
NDIS_STATUS
AtmArpSendBroadcast(
IN PATMARP_INTERFACE pInterface,
IN PNDIS_PACKET pNdisPacket,
IN PATMARP_FLOW_SPEC pFlowSpec,
IN PATMARP_FILTER_SPEC pFilterSpec
);
EXTERN
NDIS_STATUS
AtmArpSendToDHCPServer(
IN PATMARP_INTERFACE pInterface,
IN PNDIS_PACKET pNdisPacket,
IN PATMARP_FLOW_SPEC pFlowSpec,
IN PATMARP_FILTER_SPEC pFilterSpec
);
EXTERN
NDIS_STATUS
AtmArpSendToDHCPClient(
IN PATMARP_INTERFACE pInterface,
IN PNDIS_PACKET pNdisPacket,
IN PNDIS_BUFFER pNdisBuffer,
IN PATMARP_FLOW_SPEC pFlowSpec,
IN PATMARP_FILTER_SPEC pFilterSpec
);
#endif // DHCP_OVER_ATM
#ifdef IPMCAST
EXTERN
UINT
AtmArpMcAddAddress(
IN PATMARP_INTERFACE pInterface,
IN IP_ADDRESS IPAddress,
IN IP_MASK Mask
);
EXTERN
UINT
AtmArpMcDelAddress(
IN PATMARP_INTERFACE pInterface,
IN IP_ADDRESS IPAddress,
IN IP_MASK Mask
);
EXTERN
VOID
AtmArpMcHandleJoinOrLeaveCompletion(
IN PATMARP_INTERFACE pInterface,
IN IP_ADDRESS IPAddress,
IN IP_MASK Mask,
IN BOOLEAN IsJoin
);
EXTERN
VOID
AtmArpMcStartRegistration(
IN PATMARP_INTERFACE pInterface LOCKIN NOLOCKOUT
);
EXTERN
VOID
AtmArpMcSendPendingJoins(
IN PATMARP_INTERFACE pInterface LOCKIN NOLOCKOUT
);
EXTERN
VOID
AtmArpMcRevalidateAll(
IN PATMARP_INTERFACE pInterface
);
EXTERN
VOID
AtmArpMcHandleMARSFailure(
IN PATMARP_INTERFACE pInterface,
IN BOOLEAN IsRegnFailure
);
EXTERN
VOID
AtmArpMcSendToMARS(
IN PATMARP_INTERFACE pInterface,
IN PNDIS_PACKET pNdisPacket
);
EXTERN
VOID
AtmArpMcSendJoinOrLeave(
IN PATMARP_INTERFACE pInterface,
IN USHORT OpCode,
IN PIP_ADDRESS pIPAddress OPTIONAL,
IN IP_ADDRESS Mask
);
EXTERN
VOID
AtmArpMcSendRequest(
IN PATMARP_INTERFACE pInterface,
IN PIP_ADDRESS pIPAddress
);
EXTERN
PATMARP_IPMC_ATM_ENTRY
AtmArpMcLookupAtmMember(
IN PATMARP_ATM_ENTRY pAtmEntry,
IN PATMARP_IPMC_ATM_ENTRY * ppMcAtmList,
IN PUCHAR pAtmNumber,
IN ULONG AtmNumberLength,
IN ATM_ADDRESSTYPE AtmNumberType,
IN PUCHAR pAtmSubaddress,
IN ULONG AtmSubaddressLength,
IN BOOLEAN CreateNew
);
EXTERN
VOID
AtmArpMcUnlinkAtmMember(
IN PATMARP_ATM_ENTRY pAtmEntry, LOCKIN LOCKOUT
IN PATMARP_IPMC_ATM_ENTRY pMcAtmEntry
);
EXTERN
VOID
AtmArpMcUpdateConnection(
IN PATMARP_ATM_ENTRY pAtmEntry
);
#endif // IPMCAST
//
// --------------- from marspkt.c ----------------------------
//
//
#ifdef IPMCAST
EXTERN
PUCHAR
AtmArpMcMakePacketCopy(
IN PNDIS_PACKET pNdisPacket,
IN PNDIS_BUFFER pNdisBuffer,
IN ULONG TotalLength
);
EXTERN
BOOLEAN
AtmArpMcProcessPacket(
IN PATMARP_VC pVc,
IN PNDIS_PACKET pNdisPacket,
IN PNDIS_BUFFER pNdisBuffer,
IN PAA_PKT_LLC_SNAP_HEADER pPktHeader,
IN ULONG TotalLength,
IN ULONG FirstBufferLength
);
EXTERN
BOOLEAN
AtmArpMcPreprocess(
IN PAA_MARS_PKT_FIXED_HEADER pControlHeader,
IN ULONG TotalLength,
OUT PAA_MARS_TLV_LIST pTlvList
);
EXTERN
VOID
AtmArpMcHandleMulti(
IN PATMARP_VC pVc,
IN PAA_MARS_PKT_FIXED_HEADER pControlHeader,
IN ULONG TotalLength,
IN PAA_MARS_TLV_LIST pTlvList
);
EXTERN
VOID
AtmArpMcHandleMigrate(
IN PATMARP_VC pVc,
IN PAA_MARS_PKT_FIXED_HEADER pControlHeader,
IN ULONG TotalLength,
IN PAA_MARS_TLV_LIST pTlvList
);
EXTERN
VOID
AtmArpMcHandleJoinOrLeave(
IN PATMARP_VC pVc,
IN PAA_MARS_PKT_FIXED_HEADER pControlHeader,
IN ULONG TotalLength,
IN PAA_MARS_TLV_LIST pTlvList
);
EXTERN
VOID
AtmArpMcHandleNak(
IN PATMARP_VC pVc,
IN PAA_MARS_PKT_FIXED_HEADER pControlHeader,
IN ULONG TotalLength,
IN PAA_MARS_TLV_LIST pTlvList
);
EXTERN
VOID
AtmArpMcHandleGroupListReply(
IN PATMARP_VC pVc,
IN PAA_MARS_PKT_FIXED_HEADER pControlHeader,
IN ULONG TotalLength,
IN PAA_MARS_TLV_LIST pTlvList
);
EXTERN
VOID
AtmArpMcHandleRedirectMap(
IN PATMARP_VC pVc,
IN PAA_MARS_PKT_FIXED_HEADER pControlHeader,
IN ULONG TotalLength,
IN PAA_MARS_TLV_LIST pTlvList
);
#endif // IPMCAST
//
// --------------- from ntentry.c ----------------------------
//
//
EXTERN
NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT pDriverObject,
IN PUNICODE_STRING pRegistryPath
);
#if !BINARY_COMPATIBLE
EXTERN
NTSTATUS
Dispatch(
IN PDEVICE_OBJECT pDeviceObject,
IN PIRP pIrp
);
NTSTATUS
AtmArpHandleIoctlRequest(
IN PIRP pIrp,
IN PIO_STACK_LOCATION pIrpSp
);
#endif // !BINARY_COMPATIBLE
EXTERN
VOID
Unload(
IN PDRIVER_OBJECT pDriverObject
);
//
// --------------- from qos.c ------------------------------
//
//
EXTERN
VOID
AtmArpQosGetPacketSpecs(
IN PVOID Context,
IN PNDIS_PACKET pNdisPacket,
OUT PATMARP_FLOW_INFO *ppFlowInfo,
OUT PATMARP_FLOW_SPEC *ppFlowSpec,
OUT PATMARP_FILTER_SPEC *ppFilterSpec
);
EXTERN
BOOLEAN
AtmArpQosDoFlowsMatch(
IN PVOID Context,
IN PATMARP_FLOW_SPEC pFlowSpec,
IN PATMARP_FLOW_SPEC pTargetFlowSpec
);
EXTERN
BOOLEAN
AtmArpQosDoFiltersMatch(
IN PVOID Context,
IN PATMARP_FILTER_SPEC pFilterSpec,
IN PATMARP_FILTER_SPEC pTargetFilterSpec
);
#ifdef GPC
EXTERN
VOID
AtmArpGpcInitialize(
VOID
);
EXTERN
VOID
AtmArpGpcShutdown(
VOID
);
EXTERN
VOID
AtmArpGpcAddCfInfoComplete(
IN GPC_CLIENT_HANDLE ClientContext,
IN GPC_CLIENT_HANDLE ClientCfInfoContext,
IN GPC_STATUS GpcStatus
);
EXTERN
GPC_STATUS
AtmArpGpcAddCfInfoNotify(
IN GPC_CLIENT_HANDLE ClientContext,
IN GPC_HANDLE GpcCfInfoHandle,
IN ULONG CfInfoSize,
IN PVOID pCfInfo,
OUT PGPC_CLIENT_HANDLE pClientCfInfoContext
);
EXTERN
VOID
AtmArpGpcModifyCfInfoComplete(
IN GPC_CLIENT_HANDLE ClientContext,
IN GPC_CLIENT_HANDLE ClientCfInfoContext,
IN GPC_STATUS GpcStatus
);
EXTERN
GPC_STATUS
AtmArpGpcModifyCfInfoNotify(
IN GPC_CLIENT_HANDLE ClientContext,
IN GPC_CLIENT_HANDLE ClientCfInfoContext,
IN ULONG CfInfoSize,
IN PVOID pNewCfInfo
);
EXTERN
VOID
AtmArpGpcRemoveCfInfoComplete(
IN GPC_CLIENT_HANDLE ClientContext,
IN GPC_CLIENT_HANDLE ClientCfInfoContext,
IN GPC_STATUS GpcStatus
);
EXTERN
GPC_STATUS
AtmArpGpcRemoveCfInfoNotify(
IN GPC_CLIENT_HANDLE ClientContext,
IN GPC_CLIENT_HANDLE ClientCfInfoContext
);
EXTERN
GPC_STATUS
AtmArpGpcValidateCfInfo(
IN PVOID pCfInfo,
IN ULONG CfInfoSize
);
EXTERN
GPC_STATUS
AtmArpGpcGetCfInfoName(
IN GPC_CLIENT_HANDLE ClientContext,
IN GPC_CLIENT_HANDLE ClientCfInfoContext,
OUT PNDIS_STRING InstanceName
);
#endif // GPC
//
// --------------- from space.c ----------------------------
//
//
EXTERN ATMARP_GLOBALS AtmArpGlobalInfo;
EXTERN PATMARP_GLOBALS pAtmArpGlobalInfo;
EXTERN NDIS_PROTOCOL_CHARACTERISTICS AtmArpProtocolCharacteristics;
EXTERN NDIS_CLIENT_CHARACTERISTICS AtmArpClientCharacteristics;
EXTERN ATM_BLLI_IE AtmArpDefaultBlli;
EXTERN ATM_BHLI_IE AtmArpDefaultBhli;
EXTERN AA_PKT_LLC_SNAP_HEADER AtmArpLlcSnapHeader;
#ifdef QOS_HEURISTICS
EXTERN ATMARP_FLOW_INFO AtmArpDefaultFlowInfo;
#endif // QOS_HEURISTICS
#ifdef GPC
EXTERN GPC_CLASSIFY_PACKET_HANDLER AtmArpGpcClassifyPacketHandler;
EXTERN GPC_GET_CFINFO_CLIENT_CONTEXT_HANDLER AtmArpGpcGetCfInfoClientContextHandler;
#endif
#ifdef IPMCAST
EXTERN AA_MC_PKT_TYPE1_SHORT_HEADER AtmArpMcType1ShortHeader;
EXTERN AA_MARS_PKT_FIXED_HEADER AtmArpMcMARSFixedHeader;
#endif // IPMCAST
EXTERN ULONG AtmArpMaxTimerValue[];
EXTERN ULONG AtmArpTimerListSize[];
EXTERN ULONG AtmArpTimerPeriod[];
#ifdef ATMARP_WMI
EXTERN ATMARP_WMI_GUID AtmArpGuidList[];
EXTERN ULONG AtmArpGuidCount;
#endif // ATMARP_WMI
#ifdef BACK_FILL
EXTERN ULONG AtmArpDoBackFill;
EXTERN ULONG AtmArpBackFillCount;
#endif // BACK_FILL
//
// --------------- from timeouts.c ----------------------------
//
//
EXTERN
VOID
AtmArpServerConnectTimeout(
IN PATMARP_TIMER pTimer,
IN PVOID Context
);
EXTERN
VOID
AtmArpRegistrationTimeout(
IN PATMARP_TIMER pTimer,
IN PVOID Context
);
EXTERN
VOID
AtmArpServerRefreshTimeout(
IN PATMARP_TIMER pTimer,
IN PVOID Context
);
EXTERN
VOID
AtmArpAddressResolutionTimeout(
IN PATMARP_TIMER pTimer,
IN PVOID Context
);
EXTERN
VOID
AtmArpIPEntryInARPWaitTimeout(
IN PATMARP_TIMER pTimer,
IN PVOID Context
);
EXTERN
VOID
AtmArpPVCInARPWaitTimeout(
IN PATMARP_TIMER pTimer,
IN PVOID Context
);
EXTERN
VOID
AtmArpIPEntryAgingTimeout(
IN PATMARP_TIMER pTimer,
IN PVOID Context
);
EXTERN
VOID
AtmArpVcAgingTimeout(
IN PATMARP_TIMER pTimer,
IN PVOID Context
);
EXTERN
VOID
AtmArpNakDelayTimeout(
IN PATMARP_TIMER pTimer,
IN PVOID Context
);
#ifdef IPMCAST
EXTERN
VOID
AtmArpMcMARSRegistrationTimeout(
IN PATMARP_TIMER pTimer,
IN PVOID Context
);
EXTERN
VOID
AtmArpMcMARSReconnectTimeout(
IN PATMARP_TIMER pTimer,
IN PVOID Context
);
EXTERN
VOID
AtmArpMcMARSKeepAliveTimeout(
IN PATMARP_TIMER pTimer,
IN PVOID Context
);
EXTERN
VOID
AtmArpMcJoinOrLeaveTimeout(
IN PATMARP_TIMER pTimer,
IN PVOID Context
);
EXTERN
VOID
AtmArpMcRevalidationDelayTimeout(
IN PATMARP_TIMER pTimer,
IN PVOID Context
);
EXTERN
VOID
AtmArpMcPartyRetryDelayTimeout(
IN PATMARP_TIMER pTimer,
IN PVOID Context
);
#endif // IPMCAST
//
// --------------- from utils.c ----------------------------
//
//
EXTERN
VOID
AtmArpSetMemory(
IN PUCHAR pStart,
IN UCHAR Value,
IN ULONG NumberOfBytes
);
EXTERN
ULONG
AtmArpMemCmp(
IN PUCHAR pString1,
IN PUCHAR pString2,
IN ULONG Length
);
EXTERN
LONG
AtmArpRandomNumber(
VOID
);
EXTERN
VOID
AtmArpCheckIfTimerIsInActiveList(
IN PATMARP_TIMER pTimerToCheck,
IN PATMARP_INTERFACE pInterface,
IN PVOID pStruct,
IN PCHAR pStructName
);
EXTERN
PATMARP_VC
AtmArpAllocateVc(
IN PATMARP_INTERFACE pInterface
);
EXTERN
VOID
AtmArpDeallocateVc(
IN PATMARP_VC pVc
);
EXTERN
VOID
AtmArpReferenceVc(
IN PATMARP_VC pVc
);
EXTERN
ULONG
AtmArpDereferenceVc(
IN PATMARP_VC pVc
);
EXTERN
PATMARP_ATM_ENTRY
AtmArpAllocateAtmEntry(
IN PATMARP_INTERFACE pInterface,
IN BOOLEAN IsMulticast
);
EXTERN
VOID
AtmArpDeallocateAtmEntry(
IN PATMARP_ATM_ENTRY pAtmEntry
);
EXTERN
VOID
AtmArpReferenceAtmEntry(
IN PATMARP_ATM_ENTRY pAtmEntry
);
EXTERN
ULONG
AtmArpDereferenceAtmEntry(
IN PATMARP_ATM_ENTRY pAtmEntry
);
EXTERN
PATMARP_IP_ENTRY
AtmArpAllocateIPEntry(
IN PATMARP_INTERFACE pInterface
);
EXTERN
VOID
AtmArpDeallocateIPEntry(
IN PATMARP_IP_ENTRY pIpEntry
);
EXTERN
VOID
AtmArpReferenceIPEntry(
IN PATMARP_IP_ENTRY pIpEntry
);
EXTERN
ULONG
AtmArpDereferenceIPEntry(
IN PATMARP_IP_ENTRY pIpEntry
);
EXTERN
PATMARP_INTERFACE
AtmArpAllocateInterface(
IN PATMARP_ADAPTER pAdapter
);
EXTERN
VOID
AtmArpDeallocateInterface(
IN PATMARP_INTERFACE pInterface
);
EXTERN
VOID
AtmArpReferenceInterface(
IN PATMARP_INTERFACE pInterface
);
EXTERN
ULONG
AtmArpDereferenceInterface(
IN PATMARP_INTERFACE pInterface
);
EXTERN
VOID
AtmArpReferenceJoinEntry(
IN PATMARP_IPMC_JOIN_ENTRY pJoinEntry
);
EXTERN
ULONG
AtmArpDereferenceJoinEntry(
IN PATMARP_IPMC_JOIN_ENTRY pJoinEntry
);
EXTERN
VOID
AtmArpStartTimer(
IN PATMARP_INTERFACE pInterface,
IN PATMARP_TIMER pTimer,
IN ATMARP_TIMEOUT_HANDLER TimeoutHandler,
IN ULONG SecondsToGo,
IN PVOID Context
);
EXTERN
BOOLEAN
AtmArpStopTimer(
IN PATMARP_TIMER pTimer,
IN PATMARP_INTERFACE pInterface
);
#ifdef NO_TIMER_MACRO
EXTERN
VOID
AtmArpRefreshTimer(
IN PATMARP_TIMER pTimer
);
#endif // NO_TIMER_MACRO
EXTERN
VOID
AtmArpTickHandler(
IN PVOID SystemSpecific1,
IN PVOID Context,
IN PVOID SystemSpecific2,
IN PVOID SystemSpecific3
);
EXTERN
PNDIS_PACKET
AtmArpAllocatePacket(
IN PATMARP_INTERFACE pInterface
);
EXTERN
VOID
AtmArpFreePacket(
IN PATMARP_INTERFACE pInterface,
IN PNDIS_PACKET pPacket
);
EXTERN
PNDIS_BUFFER
AtmArpGrowHeaders(
IN PATMARP_INTERFACE pInterface,
IN AA_HEADER_TYPE HdrType
);
EXTERN
PNDIS_BUFFER
AtmArpAllocateHeader(
IN PATMARP_INTERFACE pInterface,
IN AA_HEADER_TYPE HdrType,
OUT PUCHAR * pBufferAddress
);
EXTERN
VOID
AtmArpFreeHeader(
IN PATMARP_INTERFACE pInterface,
IN PNDIS_BUFFER pNdisBuffer,
IN AA_HEADER_TYPE HdrType
);
EXTERN
VOID
AtmArpDeallocateHeaderBuffers(
IN PATMARP_INTERFACE pInterface
);
EXTERN
PNDIS_BUFFER
AtmArpAllocateProtoBuffer(
IN PATMARP_INTERFACE pInterface,
IN ULONG Length,
OUT PUCHAR * pBufferAddress
);
EXTERN
VOID
AtmArpFreeProtoBuffer(
IN PATMARP_INTERFACE pInterface,
IN PNDIS_BUFFER pNdisBuffer
);
EXTERN
NDIS_STATUS
AtmArpInitProtoBuffers(
IN PATMARP_INTERFACE pInterface
);
EXTERN
VOID
AtmArpDeallocateProtoBuffers(
IN PATMARP_INTERFACE pInterface
);
EXTERN
VOID
AtmArpLinkVcToAtmEntry(
IN PATMARP_VC pVc,
IN PATMARP_ATM_ENTRY pAtmEntry
);
EXTERN
VOID
AtmArpUnlinkVcFromAtmEntry(
IN PATMARP_VC pVc,
IN BOOLEAN bDerefAtmEntry
);
EXTERN
VOID
AtmArpUnlinkIpEntryFromAtmEntry(
IN PATMARP_IP_ENTRY pIpEntry
);
EXTERN
PNDIS_BUFFER
AtmArpCopyToNdisBuffer(
IN PNDIS_BUFFER pDestBuffer,
IN PUCHAR pDataSrc,
IN UINT LenToCopy,
IN OUT PUINT pOffsetInBuffer
);
PATMARP_INTERFACE
AtmArpAddInterfaceToAdapter (
IN PATMARP_ADAPTER pAdapter,
IN NDIS_HANDLE LISConfigHandle, // Handle to per-LIS config
IN NDIS_STRING *pIPConfigString
);
#if DBG
//
// Following are versions of addref/deref which tracks referenc types.
//
EXTERN
VOID
AtmArpReferenceAtmEntryEx(
IN PATMARP_ATM_ENTRY pAtmEntry,
IN AE_REFTYPE RefType
);
EXTERN
ULONG
AtmArpDereferenceAtmEntryEx(
IN PATMARP_ATM_ENTRY pAtmEntry,
IN AE_REFTYPE RefType,
IN BOOLEAN fOkToDelete
);
EXTERN
VOID
AtmArpReferenceIPEntryEx(
IN PATMARP_IP_ENTRY pIpEntry,
IN IE_REFTYPE RefType
);
EXTERN
ULONG
AtmArpDereferenceIPEntryEx(
IN PATMARP_IP_ENTRY pIpEntry,
IN IE_REFTYPE RefType,
IN BOOLEAN fOkToDelete
);
EXTERN
VOID
AtmArpReferenceJoinEntryEx(
IN PATMARP_IPMC_JOIN_ENTRY pJoinEntry,
IN ULONG RefInfo
);
EXTERN
ULONG
AtmArpDereferenceJoinEntryEx(
IN PATMARP_IPMC_JOIN_ENTRY pJoinEntry,
IN ULONG RefInfo
);
#endif // DBG
#endif // _ATMARP_EXTERNS__H