|
|
/*++
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 PTC_INTERFACE_ID InterfaceInfo, 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
|