/*++ 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