Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2194 lines
37 KiB

  1. /*++
  2. Copyright (c) 1996 Microsoft Corporation
  3. Module Name:
  4. externs.h -- Extern declarations.
  5. Abstract:
  6. All external declarations for ATMARP client modules (functions,
  7. variables) are here.
  8. Revision History:
  9. Who When What
  10. -------- -------- ----------------------------------------------
  11. arvindm 08-09-96 Created
  12. Notes:
  13. --*/
  14. #ifndef _ATMARP_EXTERNS__H
  15. #define _ATMARP_EXTERNS__H
  16. #ifndef EXTERN
  17. #define EXTERN extern
  18. #endif // EXTERN
  19. //
  20. // --------------- From adapter.c ----------------------------
  21. //
  22. EXTERN
  23. INT
  24. AtmArpBindAdapterHandler(
  25. OUT PNDIS_STATUS pStatus,
  26. IN NDIS_HANDLE BindContext,
  27. IN PNDIS_STRING pDeviceName,
  28. IN PVOID SystemSpecific1,
  29. IN PVOID SystemSpecific2
  30. );
  31. EXTERN
  32. VOID
  33. AtmArpUnbindAdapterHandler(
  34. OUT PNDIS_STATUS pStatus,
  35. IN NDIS_HANDLE ProtocolBindingContext,
  36. IN NDIS_HANDLE UnbindContext
  37. );
  38. EXTERN
  39. VOID
  40. AtmArpCompleteUnbindAdapter(
  41. IN PATMARP_ADAPTER pAdapter
  42. );
  43. EXTERN
  44. VOID
  45. AtmArpOpenAdapterCompleteHandler(
  46. IN NDIS_HANDLE ProtocolBindingContext,
  47. IN NDIS_STATUS Status,
  48. IN NDIS_STATUS OpenErrorStatus
  49. );
  50. EXTERN
  51. VOID
  52. AtmArpCloseAdapterCompleteHandler(
  53. IN NDIS_HANDLE ProtocolBindingContext,
  54. IN NDIS_STATUS Status
  55. );
  56. EXTERN
  57. VOID
  58. AtmArpSendCompleteHandler(
  59. IN NDIS_HANDLE ProtocolBindingContext,
  60. IN PNDIS_PACKET pNdisPacket,
  61. IN NDIS_STATUS Status
  62. );
  63. EXTERN
  64. VOID
  65. AtmArpTransferDataCompleteHandler(
  66. IN NDIS_HANDLE ProtocolBindingContext,
  67. IN PNDIS_PACKET pNdisPacket,
  68. IN NDIS_STATUS Status,
  69. IN UINT BytesTransferred
  70. );
  71. EXTERN
  72. VOID
  73. AtmArpResetCompleteHandler(
  74. IN NDIS_HANDLE ProtocolBindingContext,
  75. IN NDIS_STATUS Status
  76. );
  77. EXTERN
  78. VOID
  79. AtmArpRequestCompleteHandler(
  80. IN NDIS_HANDLE ProtocolBindingContext,
  81. IN PNDIS_REQUEST pNdisRequest,
  82. IN NDIS_STATUS Status
  83. );
  84. EXTERN
  85. NDIS_STATUS
  86. AtmArpReceiveHandler(
  87. IN NDIS_HANDLE ProtocolBindingContext,
  88. IN NDIS_HANDLE MacReceiveContext,
  89. IN PVOID pHeaderBuffer,
  90. IN UINT HeaderBufferSize,
  91. IN PVOID pLookAheadBuffer,
  92. IN UINT LookaheadBufferSize,
  93. IN UINT PacketSize
  94. );
  95. EXTERN
  96. VOID
  97. AtmArpReceiveCompleteHandler(
  98. IN NDIS_HANDLE ProtocolBindingContext
  99. );
  100. EXTERN
  101. INT
  102. AtmArpReceivePacketHandler(
  103. IN NDIS_HANDLE ProtocolBindingContext,
  104. IN PNDIS_PACKET pNdisPacket
  105. );
  106. EXTERN
  107. VOID
  108. AtmArpStatusHandler(
  109. IN NDIS_HANDLE ProtocolBindingContext,
  110. IN NDIS_STATUS GeneralStatus,
  111. IN PVOID pStatusBuffer,
  112. IN UINT StatusBufferSize
  113. );
  114. EXTERN
  115. VOID
  116. AtmArpStatusCompleteHandler(
  117. IN NDIS_HANDLE ProtocolBindingContext
  118. );
  119. EXTERN
  120. VOID
  121. AtmArpCoSendCompleteHandler(
  122. IN NDIS_STATUS Status,
  123. IN NDIS_HANDLE ProtocolVcContext,
  124. IN PNDIS_PACKET pNdisPacket
  125. );
  126. EXTERN
  127. VOID
  128. AtmArpCoStatusHandler(
  129. IN NDIS_HANDLE ProtocolBindingContext,
  130. IN NDIS_HANDLE ProtocolVcContext OPTIONAL,
  131. IN NDIS_STATUS GeneralStatus,
  132. IN PVOID pStatusBuffer,
  133. IN UINT StatusBufferSize
  134. );
  135. #ifdef _PNP_POWER_
  136. EXTERN
  137. NDIS_STATUS
  138. AtmArpPnPReconfigHandler(
  139. IN PATMARP_ADAPTER pAdapter OPTIONAL,
  140. IN PNET_PNP_EVENT pNetPnPEvent
  141. );
  142. EXTERN
  143. NDIS_STATUS
  144. AtmArpPnPEventHandler(
  145. IN NDIS_HANDLE ProtocolBindingContext,
  146. IN PNET_PNP_EVENT pNetPnPEvent
  147. );
  148. #endif // _PNP_POWER_
  149. EXTERN
  150. NDIS_STATUS
  151. AtmArpSendAdapterNdisRequest(
  152. IN PATMARP_ADAPTER pAdapter,
  153. IN PNDIS_REQUEST pNdisRequest,
  154. IN NDIS_REQUEST_TYPE RequestType,
  155. IN NDIS_OID Oid,
  156. IN PVOID pBuffer,
  157. IN ULONG BufferLength
  158. );
  159. EXTERN
  160. NDIS_STATUS
  161. AtmArpGetAdapterInfo(
  162. IN PATMARP_ADAPTER pAdapter
  163. );
  164. EXTERN
  165. NDIS_STATUS
  166. AtmArpSendNdisRequest(
  167. IN PATMARP_ADAPTER pAdapter,
  168. IN PNDIS_REQUEST pNdisRequest,
  169. IN NDIS_REQUEST_TYPE RequestType,
  170. IN NDIS_OID Oid,
  171. IN PVOID pBuffer,
  172. IN ULONG BufferLength
  173. );
  174. EXTERN
  175. VOID
  176. AtmArpShutdownInterface(
  177. IN PATMARP_INTERFACE pInterface
  178. );
  179. EXTERN
  180. BOOLEAN
  181. AtmArpIsDeviceAlreadyBound(
  182. IN PNDIS_STRING pDeviceName
  183. );
  184. #if ATMOFFLOAD
  185. NDIS_STATUS
  186. AtmArpQueryAndEnableOffload(
  187. IN PATMARP_ADAPTER pAdapter
  188. );
  189. VOID
  190. AtmArpDisableOffload(
  191. IN PATMARP_ADAPTER pAdapter
  192. );
  193. #endif // ATMOFFLOAD
  194. //
  195. // --------------- From arpcfg.c ----------------------------
  196. //
  197. EXTERN
  198. NDIS_STATUS
  199. AtmArpCfgReadAdapterConfiguration(
  200. IN PATMARP_ADAPTER pAdapter
  201. );
  202. EXTERN
  203. NDIS_HANDLE
  204. AtmArpCfgOpenLISConfiguration(
  205. IN PATMARP_ADAPTER pAdapter,
  206. IN UINT LISNumber,
  207. OUT PNDIS_STRING pIPConfigString
  208. );
  209. EXTERN
  210. NDIS_HANDLE
  211. AtmArpCfgOpenLISConfigurationByName(
  212. IN PATMARP_ADAPTER pAdapter,
  213. IN PNDIS_STRING pIPConfigString
  214. );
  215. EXTERN
  216. VOID
  217. AtmArpCfgCloseLISConfiguration(
  218. NDIS_HANDLE LISConfigHandle
  219. );
  220. EXTERN
  221. NDIS_STATUS
  222. AtmArpCfgReadLISConfiguration(
  223. IN NDIS_HANDLE LISConfigHandle,
  224. IN PATMARP_INTERFACE pInterface
  225. );
  226. EXTERN
  227. VOID
  228. AtmArpCfgReadAtmAddressList(
  229. IN OUT PATMARP_SERVER_LIST pServerList,
  230. IN PWCHAR pListKeyName,
  231. IN NDIS_HANDLE LISConfigHandle
  232. );
  233. EXTERN
  234. NDIS_STATUS
  235. AtmArpCfgReadSAPList(
  236. IN PATMARP_INTERFACE pInterface,
  237. IN NDIS_HANDLE LISConfigHandle
  238. );
  239. EXTERN
  240. NDIS_STATUS
  241. AtmArpCfgReadAtmAddress(
  242. IN NDIS_HANDLE ConfigHandle,
  243. IN PATM_ADDRESS pAtmAddress,
  244. IN PWCHAR pValueName
  245. );
  246. EXTERN
  247. NDIS_STATUS
  248. AtmArpCfgReadQosHeuristics(
  249. IN NDIS_HANDLE LISConfigHandle,
  250. IN PATMARP_INTERFACE pInterface
  251. );
  252. EXTERN
  253. VOID
  254. AtmArpCfgReadStaticArpEntries(
  255. IN NDIS_HANDLE LISConfigHandle,
  256. IN PATMARP_INTERFACE pInterface
  257. );
  258. EXTERN
  259. BOOLEAN
  260. AtmArpConvertStringToIPAddress(
  261. IN PWCHAR AddressString,
  262. OUT PULONG IpAddress
  263. );
  264. //
  265. // --------------- From arpif.c ----------------------------
  266. //
  267. EXTERN IP_MASK AtmArpIPMaskTable[];
  268. INT
  269. AtmArpIfDynRegister(
  270. IN PNDIS_STRING pAdapterString,
  271. IN PVOID IPContext,
  272. IN struct _IP_HANDLERS * pIpHandlers,
  273. IN struct LLIPBindInfo * pBindInfo,
  274. IN UINT InterfaceNumber
  275. );
  276. EXTERN
  277. VOID
  278. AtmArpIfOpen(
  279. IN PVOID Context
  280. );
  281. EXTERN
  282. VOID
  283. AtmArpIfClose(
  284. IN PVOID Context
  285. );
  286. EXTERN
  287. UINT
  288. AtmArpIfAddAddress(
  289. IN PVOID Context,
  290. IN UINT AddressType,
  291. IN IP_ADDRESS IPAddress,
  292. IN IP_MASK Mask
  293. #ifndef BUILD_FOR_1381
  294. ,
  295. IN PVOID Context2
  296. #endif // BUILD_FOR_1381
  297. );
  298. EXTERN
  299. UINT
  300. AtmArpIfDelAddress(
  301. IN PVOID Context,
  302. IN UINT AddressType,
  303. IN IP_ADDRESS IPAddress,
  304. IN IP_MASK Mask
  305. );
  306. NDIS_STATUS
  307. AtmArpIfMultiTransmit(
  308. IN PVOID Context,
  309. IN PNDIS_PACKET * pNdisPacketArray,
  310. IN UINT NumberOfPackets,
  311. IN IP_ADDRESS Destination,
  312. IN RouteCacheEntry * pRCE OPTIONAL
  313. #if P2MP
  314. ,
  315. IN void * ArpCtxt
  316. #endif
  317. );
  318. EXTERN
  319. NDIS_STATUS
  320. AtmArpIfTransmit(
  321. IN PVOID Context,
  322. IN PNDIS_PACKET pNdisPacket,
  323. IN IP_ADDRESS Destination,
  324. IN RouteCacheEntry * pRCE OPTIONAL
  325. #if P2MP
  326. ,
  327. IN void * ArpCtxt
  328. #endif
  329. );
  330. EXTERN
  331. NDIS_STATUS
  332. AtmArpIfTransfer(
  333. IN PVOID Context,
  334. IN NDIS_HANDLE Context1,
  335. IN UINT ArpHdrOffset,
  336. IN UINT ProtoOffset,
  337. IN UINT BytesWanted,
  338. IN PNDIS_PACKET pNdisPacket,
  339. OUT PUINT pTransferCount
  340. );
  341. EXTERN
  342. VOID
  343. AtmArpIfInvalidate(
  344. IN PVOID Context,
  345. IN RouteCacheEntry * pRCE
  346. );
  347. EXTERN
  348. BOOLEAN
  349. AtmArpUnlinkRCE(
  350. IN RouteCacheEntry * pRCE,
  351. IN PATMARP_IP_ENTRY pIpEntry
  352. );
  353. EXTERN
  354. VOID
  355. AtmArpLinkRCE(
  356. IN RouteCacheEntry * pRCE,
  357. IN PATMARP_IP_ENTRY pIpEntry LOCKIN LOCKOUT
  358. );
  359. EXTERN
  360. INT
  361. AtmArpIfQueryInfo(
  362. IN PVOID Context,
  363. IN TDIObjectID * pID,
  364. IN PNDIS_BUFFER pNdisBuffer,
  365. IN OUT PUINT pBufferSize,
  366. IN PVOID QueryContext
  367. );
  368. EXTERN
  369. INT
  370. AtmArpIfSetInfo(
  371. IN PVOID Context,
  372. IN TDIObjectID * pID,
  373. IN PVOID pBuffer,
  374. IN UINT BufferSize
  375. );
  376. EXTERN
  377. INT
  378. AtmArpIfGetEList(
  379. IN PVOID Context,
  380. IN TDIEntityID * pEntityList,
  381. IN OUT PUINT pEntityListSize
  382. );
  383. #ifdef _PNP_POWER_
  384. EXTERN
  385. VOID
  386. AtmArpIfPnPComplete(
  387. IN PVOID Context,
  388. IN NDIS_STATUS Status,
  389. IN PNET_PNP_EVENT pNetPnPEvent
  390. );
  391. #endif // _PNP_POWER_
  392. #ifdef PROMIS
  393. EXTERN
  394. NDIS_STATUS
  395. AtmArpIfSetNdisRequest(
  396. IN PVOID Context,
  397. IN NDIS_OID Oid,
  398. IN UINT On
  399. );
  400. #endif // PROMIS
  401. EXTERN
  402. VOID
  403. AtmArpFreeSendPackets(
  404. IN PATMARP_INTERFACE pInterface,
  405. IN PNDIS_PACKET PacketList,
  406. IN BOOLEAN HdrPresent
  407. );
  408. EXTERN
  409. NDIS_STATUS
  410. AtmArpSendBroadcast(
  411. IN PATMARP_INTERFACE pInterface,
  412. IN PNDIS_PACKET pNdisPacket,
  413. IN PATMARP_FLOW_SPEC pFlowSpec,
  414. IN PATMARP_FILTER_SPEC pFilterSpec
  415. );
  416. EXTERN
  417. BOOLEAN
  418. AtmArpIsBroadcastIPAddress(
  419. IN IP_ADDRESS Address,
  420. IN PATMARP_INTERFACE pInterface LOCKIN LOCKOUT
  421. );
  422. EXTERN
  423. BOOLEAN
  424. AtmArpValidateTableContext(
  425. IN PVOID QueryContext,
  426. IN PATMARP_INTERFACE pInterface,
  427. IN BOOLEAN * pIsValid
  428. );
  429. EXTERN
  430. BOOLEAN
  431. AtmArpReadNextTableEntry(
  432. IN PVOID QueryContext,
  433. IN PATMARP_INTERFACE pInterface,
  434. IN PUCHAR pSpace
  435. );
  436. //
  437. // --------------- From arppkt.c ----------------------------
  438. //
  439. EXTERN
  440. VOID
  441. AtmArpSendPacketOnVc(
  442. IN PATMARP_VC pVc,
  443. IN PNDIS_PACKET pNdisPacket
  444. );
  445. EXTERN
  446. PNDIS_PACKET
  447. AtmArpBuildARPPacket(
  448. IN USHORT OperationType,
  449. IN PATMARP_INTERFACE pInterface,
  450. IN PUCHAR * ppArpPacket,
  451. IN PAA_ARP_PKT_CONTENTS pArpContents
  452. );
  453. EXTERN
  454. VOID
  455. AtmArpSendARPRequest(
  456. PATMARP_INTERFACE pInterface,
  457. IP_ADDRESS UNALIGNED * pSrcIPAddress,
  458. IP_ADDRESS UNALIGNED * pDstIPAddress
  459. );
  460. EXTERN
  461. VOID
  462. AtmArpSendInARPRequest(
  463. IN PATMARP_VC pVc
  464. );
  465. EXTERN
  466. UINT
  467. AtmArpCoReceivePacketHandler(
  468. IN NDIS_HANDLE ProtocolBindingContext,
  469. IN NDIS_HANDLE ProtocolVcContext,
  470. IN PNDIS_PACKET pNdisPacket
  471. );
  472. EXTERN
  473. VOID
  474. AtmArpHandleARPPacket(
  475. IN PATMARP_VC pVc,
  476. IN PAA_PKT_LLC_SNAP_HEADER pPktHeader,
  477. IN ULONG PacketLength
  478. );
  479. EXTERN
  480. VOID
  481. AtmArpHandleARPRequest(
  482. IN PATMARP_VC pVc,
  483. IN PATMARP_INTERFACE pInterface,
  484. IN PAA_ARP_PKT_HEADER pArpHeader,
  485. IN PAA_ARP_PKT_CONTENTS pArpContents
  486. );
  487. EXTERN
  488. VOID
  489. AtmArpHandleARPReply(
  490. IN PATMARP_VC pVc,
  491. IN PATMARP_INTERFACE pInterface,
  492. IN PAA_ARP_PKT_HEADER pArpHeader,
  493. IN PAA_ARP_PKT_CONTENTS pArpContents,
  494. IN BOOLEAN SrcIPAddressIsOurs,
  495. IN BOOLEAN SrcAtmAddressIsOurs
  496. );
  497. EXTERN
  498. VOID
  499. AtmArpHandleARPNAK(
  500. IN PATMARP_VC pVc,
  501. IN PATMARP_INTERFACE pInterface,
  502. IN PAA_ARP_PKT_HEADER pArpHeader,
  503. IN PAA_ARP_PKT_CONTENTS pArpContents
  504. );
  505. EXTERN
  506. VOID
  507. AtmArpHandleInARPRequest(
  508. IN PATMARP_VC pVc,
  509. IN PATMARP_INTERFACE pInterface,
  510. IN PAA_ARP_PKT_HEADER pArpHeader,
  511. IN PAA_ARP_PKT_CONTENTS pArpContents
  512. );
  513. EXTERN
  514. VOID
  515. AtmArpHandleInARPReply(
  516. IN PATMARP_VC pVc,
  517. IN PATMARP_INTERFACE pInterface,
  518. IN PAA_ARP_PKT_HEADER pArpHeader,
  519. IN PAA_ARP_PKT_CONTENTS pArpContents
  520. );
  521. //
  522. // --------------- From arpproc.c ----------------------------
  523. //
  524. EXTERN
  525. VOID
  526. AtmArpStartRegistration(
  527. IN PATMARP_INTERFACE pInterface
  528. );
  529. EXTERN
  530. void
  531. AtmArpRegisterOtherIPAddresses(
  532. IN PATMARP_INTERFACE pInterface
  533. );
  534. EXTERN
  535. VOID
  536. AtmArpRetryServerRegistration(
  537. IN PATMARP_INTERFACE pInterface
  538. );
  539. EXTERN
  540. VOID
  541. AtmArpHandleServerRegistrationFailure(
  542. IN PATMARP_INTERFACE pInterface,
  543. IN PATMARP_VC pVc OPTIONAL
  544. );
  545. EXTERN
  546. BOOLEAN
  547. AtmArpIsZeroIPAddress(
  548. IN UCHAR UNALIGNED * pIPAddress
  549. );
  550. EXTERN
  551. BOOLEAN
  552. AtmArpIsLocalIPAddress(
  553. IN PATMARP_INTERFACE pInterface,
  554. IN UCHAR UNALIGNED * pIPAddress
  555. );
  556. EXTERN
  557. BOOLEAN
  558. AtmArpIsLocalAtmAddress(
  559. IN PATMARP_INTERFACE pInterface,
  560. IN PUCHAR pAtmAddrString,
  561. IN UCHAR AtmAddrTypeLen
  562. );
  563. EXTERN
  564. NDIS_STATUS
  565. AtmArpSendPacketOnAtmEntry(
  566. IN PATMARP_INTERFACE pInterface,
  567. IN PATMARP_ATM_ENTRY pAtmEntry,
  568. IN PNDIS_PACKET pNdisPacket,
  569. IN PATMARP_FLOW_SPEC pFlowSpec,
  570. IN PATMARP_FILTER_SPEC pFilterSpec OPTIONAL,
  571. IN PATMARP_FLOW_INFO pFlowInfo OPTIONAL,
  572. IN BOOLEAN IsBroadcast
  573. );
  574. EXTERN
  575. VOID
  576. AtmArpQueuePacketOnVc(
  577. IN PATMARP_VC pVc,
  578. IN PNDIS_PACKET pNdisPacket
  579. );
  580. EXTERN
  581. VOID
  582. AtmArpStartSendsOnVc(
  583. IN PATMARP_VC pVc
  584. );
  585. EXTERN
  586. VOID
  587. AtmArpSendPacketListOnAtmEntry(
  588. IN PATMARP_INTERFACE pInterface,
  589. IN PATMARP_ATM_ENTRY pAtmEntry,
  590. IN PNDIS_PACKET pPacketList,
  591. IN BOOLEAN IsBroadcast
  592. );
  593. EXTERN
  594. PATMARP_IP_ENTRY
  595. AtmArpLearnIPToAtm(
  596. IN PATMARP_INTERFACE pInterface,
  597. IN IP_ADDRESS UNALIGNED * pIPAddress,
  598. IN UCHAR AtmAddressTypeLength,
  599. IN UCHAR UNALIGNED * pAtmAddress,
  600. IN UCHAR AtmSubaddressTypeLength,
  601. IN UCHAR UNALIGNED * pAtmSubaddress,
  602. IN BOOLEAN IsStaticEntry
  603. );
  604. EXTERN
  605. NDIS_STATUS
  606. AtmArpQueuePacketOnIPEntry(
  607. IN PATMARP_IP_ENTRY pIpEntry,
  608. IN PNDIS_PACKET pNdisPacket
  609. );
  610. BOOLEAN
  611. AtmArpAtmEntryIsReallyClosing(
  612. IN PATMARP_ATM_ENTRY pAtmEntry
  613. );
  614. EXTERN
  615. PATMARP_ATM_ENTRY
  616. AtmArpSearchForAtmAddress(
  617. IN PATMARP_INTERFACE pInterface,
  618. IN UCHAR AtmAddressTypeLength,
  619. IN UCHAR UNALIGNED * pAtmAddress,
  620. IN UCHAR AtmSubaddressTypeLength,
  621. IN UCHAR UNALIGNED * pAtmSubaddress,
  622. IN AE_REFTYPE RefType,
  623. IN BOOLEAN CreateNew
  624. );
  625. EXTERN
  626. PATMARP_IP_ENTRY
  627. AtmArpSearchForIPAddress(
  628. IN PATMARP_INTERFACE pInterface,
  629. IN IP_ADDRESS UNALIGNED * pIPAddress,
  630. IN IE_REFTYPE RefType,
  631. IN BOOLEAN IsBroadcast,
  632. IN BOOLEAN CreateNew
  633. );
  634. EXTERN
  635. VOID
  636. AtmArpAbortIPEntry(
  637. IN PATMARP_IP_ENTRY pIpEntry
  638. );
  639. EXTERN
  640. VOID
  641. AtmArpInvalidateAtmEntry(
  642. IN PATMARP_ATM_ENTRY pAtmEntry,
  643. IN BOOLEAN ShuttingDown
  644. );
  645. EXTERN
  646. VOID
  647. AtmArpCloseVCsOnAtmEntry(
  648. IN PATMARP_ATM_ENTRY pAtmEntry,
  649. IN BOOLEAN ShuttingDown
  650. );
  651. EXTERN
  652. VOID
  653. AtmArpResolveIpEntry(
  654. IN PATMARP_IP_ENTRY pIpEntry LOCKIN NOLOCKOUT
  655. );
  656. EXTERN
  657. VOID
  658. AtmArpCleanupArpTable(
  659. IN PATMARP_INTERFACE pInterface
  660. );
  661. //
  662. // --------------- from arpwmi.c -----------------------------
  663. //
  664. #ifdef ATMARP_WMI
  665. EXTERN
  666. PATMARP_WMI_GUID
  667. AtmArpWmiFindGuid(
  668. IN PATMARP_INTERFACE pInterface,
  669. IN LPGUID pGuid,
  670. OUT PULONG pGuidDataSize
  671. );
  672. EXTERN
  673. NTSTATUS
  674. AtmArpWmiRegister(
  675. IN PATMARP_INTERFACE pInterface,
  676. IN ULONG RegistrationType,
  677. IN PWMIREGINFO pWmiRegInfo,
  678. IN ULONG WmiRegInfoSize,
  679. OUT PULONG pReturnSize
  680. );
  681. EXTERN
  682. NTSTATUS
  683. AtmArpWmiQueryAllData(
  684. IN PATMARP_INTERFACE pInterface,
  685. IN LPGUID pGuid,
  686. IN PWNODE_ALL_DATA pWnode,
  687. IN ULONG BufferSize,
  688. OUT PULONG pReturnSize
  689. );
  690. EXTERN
  691. NTSTATUS
  692. AtmArpWmiQuerySingleInstance(
  693. IN PATMARP_INTERFACE pInterface,
  694. IN PWNODE_SINGLE_INSTANCE pWnode,
  695. IN ULONG BufferSize,
  696. OUT PULONG pReturnSize
  697. );
  698. EXTERN
  699. NTSTATUS
  700. AtmArpWmiChangeSingleInstance(
  701. IN PATMARP_INTERFACE pInterface,
  702. IN PWNODE_SINGLE_INSTANCE pWnode,
  703. IN ULONG BufferSize,
  704. OUT PULONG pReturnSize
  705. );
  706. EXTERN
  707. NTSTATUS
  708. AtmArpWmiChangeSingleItem(
  709. IN PATMARP_INTERFACE pInterface,
  710. IN PWNODE_SINGLE_ITEM pWnode,
  711. IN ULONG BufferSize,
  712. OUT PULONG pReturnSize
  713. );
  714. EXTERN
  715. NTSTATUS
  716. AtmArpWmiSetEventStatus(
  717. IN PATMARP_INTERFACE pInterface,
  718. IN LPGUID pGuid,
  719. IN BOOLEAN bEnabled
  720. );
  721. EXTERN
  722. NTSTATUS
  723. AtmArpWmiDispatch(
  724. IN PDEVICE_OBJECT pDeviceObject,
  725. IN PIRP pIrp
  726. );
  727. EXTERN
  728. VOID
  729. AtmArpWmiInitInterface(
  730. IN PATMARP_INTERFACE pInterface,
  731. IN PATMARP_WMI_GUID GuidList,
  732. IN ULONG NumberOfGuids
  733. );
  734. EXTERN
  735. VOID
  736. AtmArpWmiShutdownInterface(
  737. IN PATMARP_INTERFACE pInterface
  738. );
  739. EXTERN
  740. NTSTATUS
  741. AtmArpWmiSetTCSupported(
  742. IN PATMARP_INTERFACE pInterface,
  743. IN ATMARP_GUID_ID MyId,
  744. IN PVOID pInputBuffer,
  745. IN ULONG BufferLength,
  746. OUT PULONG pBytesWritten,
  747. OUT PULONG pBytesNeeded
  748. );
  749. EXTERN
  750. NTSTATUS
  751. AtmArpWmiQueryTCSupported(
  752. IN PATMARP_INTERFACE pInterface,
  753. IN ATMARP_GUID_ID MyId,
  754. OUT PVOID pOutputBuffer,
  755. IN ULONG BufferLength,
  756. OUT PULONG pBytesReturned,
  757. OUT PULONG pBytesNeeded
  758. );
  759. NTSTATUS
  760. AtmArpWmiGetAddressList(
  761. IN PATMARP_INTERFACE pInterface LOCKIN LOCKOUT,
  762. OUT PVOID pOutputBuffer,
  763. IN ULONG BufferLength,
  764. OUT PULONG pBytesReturned,
  765. OUT PULONG pBytesNeeded
  766. );
  767. EXTERN
  768. VOID
  769. AtmArpWmiEnableEventTCSupported(
  770. IN PATMARP_INTERFACE pInterface,
  771. IN ATMARP_GUID_ID MyId,
  772. IN BOOLEAN bEnable
  773. );
  774. EXTERN
  775. NTSTATUS
  776. AtmArpWmiSetTCIfIndication(
  777. IN PATMARP_INTERFACE pInterface,
  778. IN ATMARP_GUID_ID MyId,
  779. IN PVOID pInputBuffer,
  780. IN ULONG BufferLength,
  781. OUT PULONG pBytesWritten,
  782. OUT PULONG pBytesNeeded
  783. );
  784. EXTERN
  785. NTSTATUS
  786. AtmArpWmiQueryTCIfIndication(
  787. IN PATMARP_INTERFACE pInterface,
  788. IN ATMARP_GUID_ID MyId,
  789. OUT PVOID pOutputBuffer,
  790. IN ULONG BufferLength,
  791. OUT PULONG pBytesReturned,
  792. OUT PULONG pBytesNeeded
  793. );
  794. EXTERN
  795. VOID
  796. AtmArpWmiEnableEventTCIfIndication(
  797. IN PATMARP_INTERFACE pInterface,
  798. IN ATMARP_GUID_ID MyId,
  799. IN BOOLEAN bEnable
  800. );
  801. EXTERN
  802. VOID
  803. AtmArpWmiSendTCIfIndication(
  804. IN PATMARP_INTERFACE pInterface,
  805. IN ULONG IndicationCode,
  806. IN ULONG IndicationSubCode
  807. );
  808. EXTERN
  809. NTSTATUS
  810. AtmArpWmiSetStatisticsBuffer(
  811. IN PATMARP_INTERFACE pInterface,
  812. IN ATMARP_GUID_ID MyId,
  813. IN PVOID pInputBuffer,
  814. IN ULONG BufferLength,
  815. OUT PULONG pBytesWritten,
  816. OUT PULONG pBytesNeeded
  817. );
  818. EXTERN
  819. NTSTATUS
  820. AtmArpWmiQueryStatisticsBuffer(
  821. IN PATMARP_INTERFACE pInterface,
  822. IN ATMARP_GUID_ID MyId,
  823. OUT PVOID pOutputBuffer,
  824. IN ULONG BufferLength,
  825. OUT PULONG pBytesReturned,
  826. OUT PULONG pBytesNeeded
  827. );
  828. EXTERN
  829. PATMARP_INTERFACE
  830. AtmArpWmiGetIfByName(
  831. IN PWSTR pIfName,
  832. IN USHORT IfNameLength
  833. );
  834. #endif // ATMARP_WMI
  835. //
  836. // --------------- from callmgr.c ----------------------------
  837. //
  838. EXTERN
  839. VOID
  840. AtmArpCoAfRegisterNotifyHandler(
  841. IN NDIS_HANDLE ProtocolBindingContext,
  842. IN PCO_ADDRESS_FAMILY pAddressFamily
  843. );
  844. EXTERN
  845. NDIS_STATUS
  846. AtmArpOpenCallMgr(
  847. IN PATMARP_INTERFACE pInterface
  848. );
  849. EXTERN
  850. VOID
  851. AtmArpCloseCallMgr(
  852. IN PATMARP_INTERFACE pInterface
  853. );
  854. EXTERN
  855. VOID
  856. AtmArpRegisterSaps(
  857. IN PATMARP_INTERFACE pInterface
  858. );
  859. EXTERN
  860. VOID
  861. AtmArpDeregisterSaps(
  862. IN PATMARP_INTERFACE pInterface
  863. );
  864. EXTERN
  865. NDIS_STATUS
  866. AtmArpMakeCall(
  867. IN PATMARP_INTERFACE pInterface,
  868. IN PATMARP_ATM_ENTRY pAtmEntry,
  869. IN PATMARP_FLOW_SPEC pFlowSpec,
  870. IN PNDIS_PACKET pPacketToBeQueued OPTIONAL
  871. );
  872. EXTERN
  873. VOID
  874. AtmArpFillCallParameters(
  875. IN PCO_CALL_PARAMETERS pCallParameters,
  876. IN ULONG ParametersSize,
  877. IN PATM_ADDRESS pCalledAddress,
  878. IN PATM_ADDRESS pCallingAddress,
  879. IN PATMARP_FLOW_SPEC pFlowSpec,
  880. IN BOOLEAN IsPMP,
  881. IN BOOLEAN IsMakeCall
  882. );
  883. EXTERN
  884. VOID
  885. AtmArpCloseCall(
  886. IN PATMARP_VC pVc
  887. );
  888. EXTERN
  889. NDIS_STATUS
  890. AtmArpCreateVcHandler(
  891. IN NDIS_HANDLE ProtocolAfContext,
  892. IN NDIS_HANDLE NdisVcHandle,
  893. OUT PNDIS_HANDLE pProtocolVcContext
  894. );
  895. EXTERN
  896. NDIS_STATUS
  897. AtmArpDeleteVcHandler(
  898. IN NDIS_HANDLE ProtocolVcContext
  899. );
  900. EXTERN
  901. NDIS_STATUS
  902. AtmArpIncomingCallHandler(
  903. IN NDIS_HANDLE ProtocolSapContext,
  904. IN NDIS_HANDLE ProtocolVcContext,
  905. IN OUT PCO_CALL_PARAMETERS pCallParameters
  906. );
  907. EXTERN
  908. VOID
  909. AtmArpCallConnectedHandler(
  910. IN NDIS_HANDLE ProtocolVcContext
  911. );
  912. EXTERN
  913. VOID
  914. AtmArpIncomingCloseHandler(
  915. IN NDIS_STATUS CloseStatus,
  916. IN NDIS_HANDLE ProtocolVcContext,
  917. IN PVOID pCloseData OPTIONAL,
  918. IN UINT Size OPTIONAL
  919. );
  920. #ifdef IPMCAST
  921. EXTERN
  922. VOID
  923. AtmArpAddParty(
  924. IN PATMARP_ATM_ENTRY pAtmEntry,
  925. IN PATMARP_IPMC_ATM_ENTRY pMcAtmEntry
  926. );
  927. EXTERN
  928. VOID
  929. AtmArpMcTerminateMember(
  930. IN PATMARP_ATM_ENTRY pAtmEntry,
  931. IN PATMARP_IPMC_ATM_ENTRY pMcAtmEntry
  932. );
  933. #endif // IPMCAST
  934. EXTERN
  935. VOID
  936. AtmArpIncomingDropPartyHandler(
  937. IN NDIS_STATUS DropStatus,
  938. IN NDIS_HANDLE ProtocolPartyContext,
  939. IN PVOID pCloseData OPTIONAL,
  940. IN UINT Size OPTIONAL
  941. );
  942. EXTERN
  943. VOID
  944. AtmArpQosChangeHandler(
  945. IN NDIS_HANDLE ProtocolVcContext,
  946. IN PCO_CALL_PARAMETERS pCallParameters
  947. );
  948. EXTERN
  949. VOID
  950. AtmArpOpenAfCompleteHandler(
  951. IN NDIS_STATUS Status,
  952. IN NDIS_HANDLE ProtocolAfContext,
  953. IN NDIS_HANDLE NdisAfHandle
  954. );
  955. EXTERN
  956. VOID
  957. AtmArpCloseAfCompleteHandler(
  958. IN NDIS_STATUS Status,
  959. IN NDIS_HANDLE ProtocolAfContext
  960. );
  961. EXTERN
  962. VOID
  963. AtmArpRegisterSapCompleteHandler(
  964. IN NDIS_STATUS Status,
  965. IN NDIS_HANDLE ProtocolSapContext,
  966. IN PCO_SAP pSap,
  967. IN NDIS_HANDLE NdisSapHandle
  968. );
  969. EXTERN
  970. VOID
  971. AtmArpDeregisterSapCompleteHandler(
  972. IN NDIS_STATUS Status,
  973. IN NDIS_HANDLE ProtocolSapContext
  974. );
  975. EXTERN
  976. VOID
  977. AtmArpMakeCallCompleteHandler(
  978. IN NDIS_STATUS Status,
  979. IN NDIS_HANDLE ProtocolVcContext,
  980. IN NDIS_HANDLE NdisPartyHandle OPTIONAL,
  981. IN PCO_CALL_PARAMETERS pCallParameters
  982. );
  983. #ifdef IPMCAST
  984. EXTERN
  985. VOID
  986. AtmArpMcMakeCallComplete(
  987. IN PATMARP_ATM_ENTRY pAtmEntry,
  988. IN NDIS_HANDLE NdisPartyHandle OPTIONAL,
  989. IN NDIS_STATUS Status
  990. );
  991. #endif // IPMCAST
  992. EXTERN
  993. VOID
  994. AtmArpCloseAfCompleteHandler(
  995. IN NDIS_STATUS Status,
  996. IN NDIS_HANDLE ProtocolAfContext
  997. );
  998. EXTERN
  999. VOID
  1000. AtmArpCloseCallCompleteHandler(
  1001. IN NDIS_STATUS Status,
  1002. IN NDIS_HANDLE ProtocolVcContext,
  1003. IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
  1004. );
  1005. EXTERN
  1006. VOID
  1007. AtmArpAddPartyCompleteHandler(
  1008. IN NDIS_STATUS Status,
  1009. IN NDIS_HANDLE ProtocolPartyContext,
  1010. IN NDIS_HANDLE NdisPartyHandle,
  1011. IN PCO_CALL_PARAMETERS pCallParameters
  1012. );
  1013. EXTERN
  1014. VOID
  1015. AtmArpDropPartyCompleteHandler(
  1016. IN NDIS_STATUS Status,
  1017. IN NDIS_HANDLE ProtocolPartyContext
  1018. );
  1019. EXTERN
  1020. VOID
  1021. AtmArpModifyQosCompleteHandler(
  1022. IN NDIS_STATUS Status,
  1023. IN NDIS_HANDLE ProtocolVcContext,
  1024. IN PCO_CALL_PARAMETERS pCallParameters
  1025. );
  1026. EXTERN
  1027. NDIS_STATUS
  1028. AtmArpCoRequestHandler(
  1029. IN NDIS_HANDLE ProtocolAfContext,
  1030. IN NDIS_HANDLE ProtocolVcContext OPTIONAL,
  1031. IN NDIS_HANDLE ProtocolPartyContext OPTIONAL,
  1032. IN OUT PNDIS_REQUEST pNdisRequest
  1033. );
  1034. EXTERN
  1035. VOID
  1036. AtmArpCoRequestCompleteHandler(
  1037. IN NDIS_STATUS Status,
  1038. IN NDIS_HANDLE ProtocolAfContext,
  1039. IN NDIS_HANDLE ProtocolVcContext OPTIONAL,
  1040. IN NDIS_HANDLE ProtocolPartyContext OPTIONAL,
  1041. IN PNDIS_REQUEST pNdisRequest
  1042. );
  1043. EXTERN
  1044. VOID
  1045. AtmArpGetAtmAddress(
  1046. IN PATMARP_INTERFACE pInterface
  1047. );
  1048. EXTERN
  1049. VOID
  1050. AtmArpHandleGetAddressesComplete(
  1051. IN NDIS_STATUS Status,
  1052. IN PATMARP_INTERFACE pInterface,
  1053. IN PNDIS_REQUEST pNdisRequest
  1054. );
  1055. EXTERN
  1056. VOID
  1057. AtmArpUpdateAddresses(
  1058. IN PATMARP_INTERFACE pInterface,
  1059. IN BOOLEAN AddThem
  1060. );
  1061. EXTERN
  1062. VOID
  1063. AtmArpHandleModAddressComplete(
  1064. IN NDIS_STATUS Status,
  1065. IN PATMARP_INTERFACE pInterface,
  1066. IN PNDIS_REQUEST pNdisRequest,
  1067. IN ULONG Oid
  1068. );
  1069. EXTERN
  1070. NDIS_STATUS
  1071. AtmArpSendNdisCoRequest(
  1072. IN NDIS_HANDLE NdisAdapterHandle,
  1073. IN NDIS_HANDLE NdisAfHandle,
  1074. IN PNDIS_REQUEST pNdisRequest,
  1075. IN NDIS_REQUEST_TYPE RequestType,
  1076. IN NDIS_OID Oid,
  1077. IN PVOID pBuffer,
  1078. IN ULONG BufferLength
  1079. );
  1080. //
  1081. // --------------- from init.c ----------------------------
  1082. //
  1083. //
  1084. EXTERN
  1085. VOID
  1086. AtmArpInitGlobals(
  1087. );
  1088. EXTERN
  1089. NDIS_STATUS
  1090. AtmArpInitIpOverAtm(
  1091. IN PATMARP_INTERFACE pInterface
  1092. );
  1093. EXTERN
  1094. VOID
  1095. AtmArpUnloadProtocol(
  1096. VOID
  1097. );
  1098. //
  1099. // --------------- from ioctl.c ------------------------------
  1100. //
  1101. //
  1102. #if !BINARY_COMPATIBLE
  1103. #ifdef CUBDD
  1104. EXTERN
  1105. NTSTATUS
  1106. AtmArpInternalDeviceControl(
  1107. IN PDEVICE_OBJECT pDeviceObject,
  1108. IN PIRP pIrp
  1109. );
  1110. EXTERN
  1111. NTSTATUS
  1112. AtmArpIoctlArpRequest(
  1113. IN PATMARP_INTERFACE pInterface OPTIONAL,
  1114. IN PIRP pIrp
  1115. );
  1116. EXTERN
  1117. VOID
  1118. AtmArpCompleteArpIrpList(
  1119. IN SINGLE_LIST_ENTRY ListHead,
  1120. IN PATM_ADDRESS pAtmAddress OPTIONAL
  1121. );
  1122. #endif // CUBDD
  1123. #endif // !BINARY_COMPATIBLE
  1124. //
  1125. // --------------- from ipmcast.c ----------------------------
  1126. //
  1127. //
  1128. #ifdef DHCP_OVER_ATM
  1129. EXTERN
  1130. NDIS_STATUS
  1131. AtmArpSendBroadcast(
  1132. IN PATMARP_INTERFACE pInterface,
  1133. IN PNDIS_PACKET pNdisPacket,
  1134. IN PATMARP_FLOW_SPEC pFlowSpec,
  1135. IN PATMARP_FILTER_SPEC pFilterSpec
  1136. );
  1137. EXTERN
  1138. NDIS_STATUS
  1139. AtmArpSendToDHCPServer(
  1140. IN PATMARP_INTERFACE pInterface,
  1141. IN PNDIS_PACKET pNdisPacket,
  1142. IN PATMARP_FLOW_SPEC pFlowSpec,
  1143. IN PATMARP_FILTER_SPEC pFilterSpec
  1144. );
  1145. EXTERN
  1146. NDIS_STATUS
  1147. AtmArpSendToDHCPClient(
  1148. IN PATMARP_INTERFACE pInterface,
  1149. IN PNDIS_PACKET pNdisPacket,
  1150. IN PNDIS_BUFFER pNdisBuffer,
  1151. IN PATMARP_FLOW_SPEC pFlowSpec,
  1152. IN PATMARP_FILTER_SPEC pFilterSpec
  1153. );
  1154. #endif // DHCP_OVER_ATM
  1155. #ifdef IPMCAST
  1156. EXTERN
  1157. UINT
  1158. AtmArpMcAddAddress(
  1159. IN PATMARP_INTERFACE pInterface,
  1160. IN IP_ADDRESS IPAddress,
  1161. IN IP_MASK Mask
  1162. );
  1163. EXTERN
  1164. UINT
  1165. AtmArpMcDelAddress(
  1166. IN PATMARP_INTERFACE pInterface,
  1167. IN IP_ADDRESS IPAddress,
  1168. IN IP_MASK Mask
  1169. );
  1170. EXTERN
  1171. VOID
  1172. AtmArpMcHandleJoinOrLeaveCompletion(
  1173. IN PATMARP_INTERFACE pInterface,
  1174. IN IP_ADDRESS IPAddress,
  1175. IN IP_MASK Mask,
  1176. IN BOOLEAN IsJoin
  1177. );
  1178. EXTERN
  1179. VOID
  1180. AtmArpMcStartRegistration(
  1181. IN PATMARP_INTERFACE pInterface LOCKIN NOLOCKOUT
  1182. );
  1183. EXTERN
  1184. VOID
  1185. AtmArpMcSendPendingJoins(
  1186. IN PATMARP_INTERFACE pInterface LOCKIN NOLOCKOUT
  1187. );
  1188. EXTERN
  1189. VOID
  1190. AtmArpMcRevalidateAll(
  1191. IN PATMARP_INTERFACE pInterface
  1192. );
  1193. EXTERN
  1194. VOID
  1195. AtmArpMcHandleMARSFailure(
  1196. IN PATMARP_INTERFACE pInterface,
  1197. IN BOOLEAN IsRegnFailure
  1198. );
  1199. EXTERN
  1200. VOID
  1201. AtmArpMcSendToMARS(
  1202. IN PATMARP_INTERFACE pInterface,
  1203. IN PNDIS_PACKET pNdisPacket
  1204. );
  1205. EXTERN
  1206. VOID
  1207. AtmArpMcSendJoinOrLeave(
  1208. IN PATMARP_INTERFACE pInterface,
  1209. IN USHORT OpCode,
  1210. IN PIP_ADDRESS pIPAddress OPTIONAL,
  1211. IN IP_ADDRESS Mask
  1212. );
  1213. EXTERN
  1214. VOID
  1215. AtmArpMcSendRequest(
  1216. IN PATMARP_INTERFACE pInterface,
  1217. IN PIP_ADDRESS pIPAddress
  1218. );
  1219. EXTERN
  1220. PATMARP_IPMC_ATM_ENTRY
  1221. AtmArpMcLookupAtmMember(
  1222. IN PATMARP_ATM_ENTRY pAtmEntry,
  1223. IN PATMARP_IPMC_ATM_ENTRY * ppMcAtmList,
  1224. IN PUCHAR pAtmNumber,
  1225. IN ULONG AtmNumberLength,
  1226. IN ATM_ADDRESSTYPE AtmNumberType,
  1227. IN PUCHAR pAtmSubaddress,
  1228. IN ULONG AtmSubaddressLength,
  1229. IN BOOLEAN CreateNew
  1230. );
  1231. EXTERN
  1232. VOID
  1233. AtmArpMcUnlinkAtmMember(
  1234. IN PATMARP_ATM_ENTRY pAtmEntry, LOCKIN LOCKOUT
  1235. IN PATMARP_IPMC_ATM_ENTRY pMcAtmEntry
  1236. );
  1237. EXTERN
  1238. VOID
  1239. AtmArpMcUpdateConnection(
  1240. IN PATMARP_ATM_ENTRY pAtmEntry
  1241. );
  1242. #endif // IPMCAST
  1243. //
  1244. // --------------- from marspkt.c ----------------------------
  1245. //
  1246. //
  1247. #ifdef IPMCAST
  1248. EXTERN
  1249. PUCHAR
  1250. AtmArpMcMakePacketCopy(
  1251. IN PNDIS_PACKET pNdisPacket,
  1252. IN PNDIS_BUFFER pNdisBuffer,
  1253. IN ULONG TotalLength
  1254. );
  1255. EXTERN
  1256. BOOLEAN
  1257. AtmArpMcProcessPacket(
  1258. IN PATMARP_VC pVc,
  1259. IN PNDIS_PACKET pNdisPacket,
  1260. IN PNDIS_BUFFER pNdisBuffer,
  1261. IN PAA_PKT_LLC_SNAP_HEADER pPktHeader,
  1262. IN ULONG TotalLength,
  1263. IN ULONG FirstBufferLength
  1264. );
  1265. EXTERN
  1266. BOOLEAN
  1267. AtmArpMcPreprocess(
  1268. IN PAA_MARS_PKT_FIXED_HEADER pControlHeader,
  1269. IN ULONG TotalLength,
  1270. OUT PAA_MARS_TLV_LIST pTlvList
  1271. );
  1272. EXTERN
  1273. VOID
  1274. AtmArpMcHandleMulti(
  1275. IN PATMARP_VC pVc,
  1276. IN PAA_MARS_PKT_FIXED_HEADER pControlHeader,
  1277. IN ULONG TotalLength,
  1278. IN PAA_MARS_TLV_LIST pTlvList
  1279. );
  1280. EXTERN
  1281. VOID
  1282. AtmArpMcHandleMigrate(
  1283. IN PATMARP_VC pVc,
  1284. IN PAA_MARS_PKT_FIXED_HEADER pControlHeader,
  1285. IN ULONG TotalLength,
  1286. IN PAA_MARS_TLV_LIST pTlvList
  1287. );
  1288. EXTERN
  1289. VOID
  1290. AtmArpMcHandleJoinOrLeave(
  1291. IN PATMARP_VC pVc,
  1292. IN PAA_MARS_PKT_FIXED_HEADER pControlHeader,
  1293. IN ULONG TotalLength,
  1294. IN PAA_MARS_TLV_LIST pTlvList
  1295. );
  1296. EXTERN
  1297. VOID
  1298. AtmArpMcHandleNak(
  1299. IN PATMARP_VC pVc,
  1300. IN PAA_MARS_PKT_FIXED_HEADER pControlHeader,
  1301. IN ULONG TotalLength,
  1302. IN PAA_MARS_TLV_LIST pTlvList
  1303. );
  1304. EXTERN
  1305. VOID
  1306. AtmArpMcHandleGroupListReply(
  1307. IN PATMARP_VC pVc,
  1308. IN PAA_MARS_PKT_FIXED_HEADER pControlHeader,
  1309. IN ULONG TotalLength,
  1310. IN PAA_MARS_TLV_LIST pTlvList
  1311. );
  1312. EXTERN
  1313. VOID
  1314. AtmArpMcHandleRedirectMap(
  1315. IN PATMARP_VC pVc,
  1316. IN PAA_MARS_PKT_FIXED_HEADER pControlHeader,
  1317. IN ULONG TotalLength,
  1318. IN PAA_MARS_TLV_LIST pTlvList
  1319. );
  1320. #endif // IPMCAST
  1321. //
  1322. // --------------- from ntentry.c ----------------------------
  1323. //
  1324. //
  1325. EXTERN
  1326. NTSTATUS
  1327. DriverEntry(
  1328. IN PDRIVER_OBJECT pDriverObject,
  1329. IN PUNICODE_STRING pRegistryPath
  1330. );
  1331. #if !BINARY_COMPATIBLE
  1332. EXTERN
  1333. NTSTATUS
  1334. Dispatch(
  1335. IN PDEVICE_OBJECT pDeviceObject,
  1336. IN PIRP pIrp
  1337. );
  1338. NTSTATUS
  1339. AtmArpHandleIoctlRequest(
  1340. IN PIRP pIrp,
  1341. IN PIO_STACK_LOCATION pIrpSp
  1342. );
  1343. #endif // !BINARY_COMPATIBLE
  1344. EXTERN
  1345. VOID
  1346. Unload(
  1347. IN PDRIVER_OBJECT pDriverObject
  1348. );
  1349. //
  1350. // --------------- from qos.c ------------------------------
  1351. //
  1352. //
  1353. EXTERN
  1354. VOID
  1355. AtmArpQosGetPacketSpecs(
  1356. IN PVOID Context,
  1357. IN PNDIS_PACKET pNdisPacket,
  1358. OUT PATMARP_FLOW_INFO *ppFlowInfo,
  1359. OUT PATMARP_FLOW_SPEC *ppFlowSpec,
  1360. OUT PATMARP_FILTER_SPEC *ppFilterSpec
  1361. );
  1362. EXTERN
  1363. BOOLEAN
  1364. AtmArpQosDoFlowsMatch(
  1365. IN PVOID Context,
  1366. IN PATMARP_FLOW_SPEC pFlowSpec,
  1367. IN PATMARP_FLOW_SPEC pTargetFlowSpec
  1368. );
  1369. EXTERN
  1370. BOOLEAN
  1371. AtmArpQosDoFiltersMatch(
  1372. IN PVOID Context,
  1373. IN PATMARP_FILTER_SPEC pFilterSpec,
  1374. IN PATMARP_FILTER_SPEC pTargetFilterSpec
  1375. );
  1376. #ifdef GPC
  1377. EXTERN
  1378. VOID
  1379. AtmArpGpcInitialize(
  1380. VOID
  1381. );
  1382. EXTERN
  1383. VOID
  1384. AtmArpGpcShutdown(
  1385. VOID
  1386. );
  1387. EXTERN
  1388. VOID
  1389. AtmArpGpcAddCfInfoComplete(
  1390. IN GPC_CLIENT_HANDLE ClientContext,
  1391. IN GPC_CLIENT_HANDLE ClientCfInfoContext,
  1392. IN GPC_STATUS GpcStatus
  1393. );
  1394. EXTERN
  1395. GPC_STATUS
  1396. AtmArpGpcAddCfInfoNotify(
  1397. IN GPC_CLIENT_HANDLE ClientContext,
  1398. IN GPC_HANDLE GpcCfInfoHandle,
  1399. IN ULONG CfInfoSize,
  1400. IN PVOID pCfInfo,
  1401. OUT PGPC_CLIENT_HANDLE pClientCfInfoContext
  1402. );
  1403. EXTERN
  1404. VOID
  1405. AtmArpGpcModifyCfInfoComplete(
  1406. IN GPC_CLIENT_HANDLE ClientContext,
  1407. IN GPC_CLIENT_HANDLE ClientCfInfoContext,
  1408. IN GPC_STATUS GpcStatus
  1409. );
  1410. EXTERN
  1411. GPC_STATUS
  1412. AtmArpGpcModifyCfInfoNotify(
  1413. IN GPC_CLIENT_HANDLE ClientContext,
  1414. IN GPC_CLIENT_HANDLE ClientCfInfoContext,
  1415. IN ULONG CfInfoSize,
  1416. IN PVOID pNewCfInfo
  1417. );
  1418. EXTERN
  1419. VOID
  1420. AtmArpGpcRemoveCfInfoComplete(
  1421. IN GPC_CLIENT_HANDLE ClientContext,
  1422. IN GPC_CLIENT_HANDLE ClientCfInfoContext,
  1423. IN GPC_STATUS GpcStatus
  1424. );
  1425. EXTERN
  1426. GPC_STATUS
  1427. AtmArpGpcRemoveCfInfoNotify(
  1428. IN GPC_CLIENT_HANDLE ClientContext,
  1429. IN GPC_CLIENT_HANDLE ClientCfInfoContext
  1430. );
  1431. EXTERN
  1432. GPC_STATUS
  1433. AtmArpGpcValidateCfInfo(
  1434. IN PVOID pCfInfo,
  1435. IN ULONG CfInfoSize
  1436. );
  1437. EXTERN
  1438. GPC_STATUS
  1439. AtmArpGpcGetCfInfoName(
  1440. IN GPC_CLIENT_HANDLE ClientContext,
  1441. IN GPC_CLIENT_HANDLE ClientCfInfoContext,
  1442. OUT PNDIS_STRING InstanceName
  1443. );
  1444. #endif // GPC
  1445. //
  1446. // --------------- from space.c ----------------------------
  1447. //
  1448. //
  1449. EXTERN ATMARP_GLOBALS AtmArpGlobalInfo;
  1450. EXTERN PATMARP_GLOBALS pAtmArpGlobalInfo;
  1451. EXTERN NDIS_PROTOCOL_CHARACTERISTICS AtmArpProtocolCharacteristics;
  1452. EXTERN NDIS_CLIENT_CHARACTERISTICS AtmArpClientCharacteristics;
  1453. EXTERN ATM_BLLI_IE AtmArpDefaultBlli;
  1454. EXTERN ATM_BHLI_IE AtmArpDefaultBhli;
  1455. EXTERN AA_PKT_LLC_SNAP_HEADER AtmArpLlcSnapHeader;
  1456. #ifdef QOS_HEURISTICS
  1457. EXTERN ATMARP_FLOW_INFO AtmArpDefaultFlowInfo;
  1458. #endif // QOS_HEURISTICS
  1459. #ifdef GPC
  1460. EXTERN GPC_CLASSIFY_PACKET_HANDLER AtmArpGpcClassifyPacketHandler;
  1461. EXTERN GPC_GET_CFINFO_CLIENT_CONTEXT_HANDLER AtmArpGpcGetCfInfoClientContextHandler;
  1462. #endif
  1463. #ifdef IPMCAST
  1464. EXTERN AA_MC_PKT_TYPE1_SHORT_HEADER AtmArpMcType1ShortHeader;
  1465. EXTERN AA_MARS_PKT_FIXED_HEADER AtmArpMcMARSFixedHeader;
  1466. #endif // IPMCAST
  1467. EXTERN ULONG AtmArpMaxTimerValue[];
  1468. EXTERN ULONG AtmArpTimerListSize[];
  1469. EXTERN ULONG AtmArpTimerPeriod[];
  1470. #ifdef ATMARP_WMI
  1471. EXTERN ATMARP_WMI_GUID AtmArpGuidList[];
  1472. EXTERN ULONG AtmArpGuidCount;
  1473. #endif // ATMARP_WMI
  1474. #ifdef BACK_FILL
  1475. EXTERN ULONG AtmArpDoBackFill;
  1476. EXTERN ULONG AtmArpBackFillCount;
  1477. #endif // BACK_FILL
  1478. //
  1479. // --------------- from timeouts.c ----------------------------
  1480. //
  1481. //
  1482. EXTERN
  1483. VOID
  1484. AtmArpServerConnectTimeout(
  1485. IN PATMARP_TIMER pTimer,
  1486. IN PVOID Context
  1487. );
  1488. EXTERN
  1489. VOID
  1490. AtmArpRegistrationTimeout(
  1491. IN PATMARP_TIMER pTimer,
  1492. IN PVOID Context
  1493. );
  1494. EXTERN
  1495. VOID
  1496. AtmArpServerRefreshTimeout(
  1497. IN PATMARP_TIMER pTimer,
  1498. IN PVOID Context
  1499. );
  1500. EXTERN
  1501. VOID
  1502. AtmArpAddressResolutionTimeout(
  1503. IN PATMARP_TIMER pTimer,
  1504. IN PVOID Context
  1505. );
  1506. EXTERN
  1507. VOID
  1508. AtmArpIPEntryInARPWaitTimeout(
  1509. IN PATMARP_TIMER pTimer,
  1510. IN PVOID Context
  1511. );
  1512. EXTERN
  1513. VOID
  1514. AtmArpPVCInARPWaitTimeout(
  1515. IN PATMARP_TIMER pTimer,
  1516. IN PVOID Context
  1517. );
  1518. EXTERN
  1519. VOID
  1520. AtmArpIPEntryAgingTimeout(
  1521. IN PATMARP_TIMER pTimer,
  1522. IN PVOID Context
  1523. );
  1524. EXTERN
  1525. VOID
  1526. AtmArpVcAgingTimeout(
  1527. IN PATMARP_TIMER pTimer,
  1528. IN PVOID Context
  1529. );
  1530. EXTERN
  1531. VOID
  1532. AtmArpNakDelayTimeout(
  1533. IN PATMARP_TIMER pTimer,
  1534. IN PVOID Context
  1535. );
  1536. #ifdef IPMCAST
  1537. EXTERN
  1538. VOID
  1539. AtmArpMcMARSRegistrationTimeout(
  1540. IN PATMARP_TIMER pTimer,
  1541. IN PVOID Context
  1542. );
  1543. EXTERN
  1544. VOID
  1545. AtmArpMcMARSReconnectTimeout(
  1546. IN PATMARP_TIMER pTimer,
  1547. IN PVOID Context
  1548. );
  1549. EXTERN
  1550. VOID
  1551. AtmArpMcMARSKeepAliveTimeout(
  1552. IN PATMARP_TIMER pTimer,
  1553. IN PVOID Context
  1554. );
  1555. EXTERN
  1556. VOID
  1557. AtmArpMcJoinOrLeaveTimeout(
  1558. IN PATMARP_TIMER pTimer,
  1559. IN PVOID Context
  1560. );
  1561. EXTERN
  1562. VOID
  1563. AtmArpMcRevalidationDelayTimeout(
  1564. IN PATMARP_TIMER pTimer,
  1565. IN PVOID Context
  1566. );
  1567. EXTERN
  1568. VOID
  1569. AtmArpMcPartyRetryDelayTimeout(
  1570. IN PATMARP_TIMER pTimer,
  1571. IN PVOID Context
  1572. );
  1573. #endif // IPMCAST
  1574. //
  1575. // --------------- from utils.c ----------------------------
  1576. //
  1577. //
  1578. EXTERN
  1579. VOID
  1580. AtmArpSetMemory(
  1581. IN PUCHAR pStart,
  1582. IN UCHAR Value,
  1583. IN ULONG NumberOfBytes
  1584. );
  1585. EXTERN
  1586. ULONG
  1587. AtmArpMemCmp(
  1588. IN PUCHAR pString1,
  1589. IN PUCHAR pString2,
  1590. IN ULONG Length
  1591. );
  1592. EXTERN
  1593. LONG
  1594. AtmArpRandomNumber(
  1595. VOID
  1596. );
  1597. EXTERN
  1598. VOID
  1599. AtmArpCheckIfTimerIsInActiveList(
  1600. IN PATMARP_TIMER pTimerToCheck,
  1601. IN PATMARP_INTERFACE pInterface,
  1602. IN PVOID pStruct,
  1603. IN PCHAR pStructName
  1604. );
  1605. EXTERN
  1606. PATMARP_VC
  1607. AtmArpAllocateVc(
  1608. IN PATMARP_INTERFACE pInterface
  1609. );
  1610. EXTERN
  1611. VOID
  1612. AtmArpDeallocateVc(
  1613. IN PATMARP_VC pVc
  1614. );
  1615. EXTERN
  1616. VOID
  1617. AtmArpReferenceVc(
  1618. IN PATMARP_VC pVc
  1619. );
  1620. EXTERN
  1621. ULONG
  1622. AtmArpDereferenceVc(
  1623. IN PATMARP_VC pVc
  1624. );
  1625. EXTERN
  1626. PATMARP_ATM_ENTRY
  1627. AtmArpAllocateAtmEntry(
  1628. IN PATMARP_INTERFACE pInterface,
  1629. IN BOOLEAN IsMulticast
  1630. );
  1631. EXTERN
  1632. VOID
  1633. AtmArpDeallocateAtmEntry(
  1634. IN PATMARP_ATM_ENTRY pAtmEntry
  1635. );
  1636. EXTERN
  1637. VOID
  1638. AtmArpReferenceAtmEntry(
  1639. IN PATMARP_ATM_ENTRY pAtmEntry
  1640. );
  1641. EXTERN
  1642. ULONG
  1643. AtmArpDereferenceAtmEntry(
  1644. IN PATMARP_ATM_ENTRY pAtmEntry
  1645. );
  1646. EXTERN
  1647. PATMARP_IP_ENTRY
  1648. AtmArpAllocateIPEntry(
  1649. IN PATMARP_INTERFACE pInterface
  1650. );
  1651. EXTERN
  1652. VOID
  1653. AtmArpDeallocateIPEntry(
  1654. IN PATMARP_IP_ENTRY pIpEntry
  1655. );
  1656. EXTERN
  1657. VOID
  1658. AtmArpReferenceIPEntry(
  1659. IN PATMARP_IP_ENTRY pIpEntry
  1660. );
  1661. EXTERN
  1662. ULONG
  1663. AtmArpDereferenceIPEntry(
  1664. IN PATMARP_IP_ENTRY pIpEntry
  1665. );
  1666. EXTERN
  1667. PATMARP_INTERFACE
  1668. AtmArpAllocateInterface(
  1669. IN PATMARP_ADAPTER pAdapter
  1670. );
  1671. EXTERN
  1672. VOID
  1673. AtmArpDeallocateInterface(
  1674. IN PATMARP_INTERFACE pInterface
  1675. );
  1676. EXTERN
  1677. VOID
  1678. AtmArpReferenceInterface(
  1679. IN PATMARP_INTERFACE pInterface
  1680. );
  1681. EXTERN
  1682. ULONG
  1683. AtmArpDereferenceInterface(
  1684. IN PATMARP_INTERFACE pInterface
  1685. );
  1686. EXTERN
  1687. VOID
  1688. AtmArpReferenceJoinEntry(
  1689. IN PATMARP_IPMC_JOIN_ENTRY pJoinEntry
  1690. );
  1691. EXTERN
  1692. ULONG
  1693. AtmArpDereferenceJoinEntry(
  1694. IN PATMARP_IPMC_JOIN_ENTRY pJoinEntry
  1695. );
  1696. EXTERN
  1697. VOID
  1698. AtmArpStartTimer(
  1699. IN PATMARP_INTERFACE pInterface,
  1700. IN PATMARP_TIMER pTimer,
  1701. IN ATMARP_TIMEOUT_HANDLER TimeoutHandler,
  1702. IN ULONG SecondsToGo,
  1703. IN PVOID Context
  1704. );
  1705. EXTERN
  1706. BOOLEAN
  1707. AtmArpStopTimer(
  1708. IN PATMARP_TIMER pTimer,
  1709. IN PATMARP_INTERFACE pInterface
  1710. );
  1711. #ifdef NO_TIMER_MACRO
  1712. EXTERN
  1713. VOID
  1714. AtmArpRefreshTimer(
  1715. IN PATMARP_TIMER pTimer
  1716. );
  1717. #endif // NO_TIMER_MACRO
  1718. EXTERN
  1719. VOID
  1720. AtmArpTickHandler(
  1721. IN PVOID SystemSpecific1,
  1722. IN PVOID Context,
  1723. IN PVOID SystemSpecific2,
  1724. IN PVOID SystemSpecific3
  1725. );
  1726. EXTERN
  1727. PNDIS_PACKET
  1728. AtmArpAllocatePacket(
  1729. IN PATMARP_INTERFACE pInterface
  1730. );
  1731. EXTERN
  1732. VOID
  1733. AtmArpFreePacket(
  1734. IN PATMARP_INTERFACE pInterface,
  1735. IN PNDIS_PACKET pPacket
  1736. );
  1737. EXTERN
  1738. PNDIS_BUFFER
  1739. AtmArpGrowHeaders(
  1740. IN PATMARP_INTERFACE pInterface,
  1741. IN AA_HEADER_TYPE HdrType
  1742. );
  1743. EXTERN
  1744. PNDIS_BUFFER
  1745. AtmArpAllocateHeader(
  1746. IN PATMARP_INTERFACE pInterface,
  1747. IN AA_HEADER_TYPE HdrType,
  1748. OUT PUCHAR * pBufferAddress
  1749. );
  1750. EXTERN
  1751. VOID
  1752. AtmArpFreeHeader(
  1753. IN PATMARP_INTERFACE pInterface,
  1754. IN PNDIS_BUFFER pNdisBuffer,
  1755. IN AA_HEADER_TYPE HdrType
  1756. );
  1757. EXTERN
  1758. VOID
  1759. AtmArpDeallocateHeaderBuffers(
  1760. IN PATMARP_INTERFACE pInterface
  1761. );
  1762. EXTERN
  1763. PNDIS_BUFFER
  1764. AtmArpAllocateProtoBuffer(
  1765. IN PATMARP_INTERFACE pInterface,
  1766. IN ULONG Length,
  1767. OUT PUCHAR * pBufferAddress
  1768. );
  1769. EXTERN
  1770. VOID
  1771. AtmArpFreeProtoBuffer(
  1772. IN PATMARP_INTERFACE pInterface,
  1773. IN PNDIS_BUFFER pNdisBuffer
  1774. );
  1775. EXTERN
  1776. NDIS_STATUS
  1777. AtmArpInitProtoBuffers(
  1778. IN PATMARP_INTERFACE pInterface
  1779. );
  1780. EXTERN
  1781. VOID
  1782. AtmArpDeallocateProtoBuffers(
  1783. IN PATMARP_INTERFACE pInterface
  1784. );
  1785. EXTERN
  1786. VOID
  1787. AtmArpLinkVcToAtmEntry(
  1788. IN PATMARP_VC pVc,
  1789. IN PATMARP_ATM_ENTRY pAtmEntry
  1790. );
  1791. EXTERN
  1792. VOID
  1793. AtmArpUnlinkVcFromAtmEntry(
  1794. IN PATMARP_VC pVc,
  1795. IN BOOLEAN bDerefAtmEntry
  1796. );
  1797. EXTERN
  1798. VOID
  1799. AtmArpUnlinkIpEntryFromAtmEntry(
  1800. IN PATMARP_IP_ENTRY pIpEntry
  1801. );
  1802. EXTERN
  1803. PNDIS_BUFFER
  1804. AtmArpCopyToNdisBuffer(
  1805. IN PNDIS_BUFFER pDestBuffer,
  1806. IN PUCHAR pDataSrc,
  1807. IN UINT LenToCopy,
  1808. IN OUT PUINT pOffsetInBuffer
  1809. );
  1810. PATMARP_INTERFACE
  1811. AtmArpAddInterfaceToAdapter (
  1812. IN PATMARP_ADAPTER pAdapter,
  1813. IN NDIS_HANDLE LISConfigHandle, // Handle to per-LIS config
  1814. IN NDIS_STRING *pIPConfigString
  1815. );
  1816. #if DBG
  1817. //
  1818. // Following are versions of addref/deref which tracks referenc types.
  1819. //
  1820. EXTERN
  1821. VOID
  1822. AtmArpReferenceAtmEntryEx(
  1823. IN PATMARP_ATM_ENTRY pAtmEntry,
  1824. IN AE_REFTYPE RefType
  1825. );
  1826. EXTERN
  1827. ULONG
  1828. AtmArpDereferenceAtmEntryEx(
  1829. IN PATMARP_ATM_ENTRY pAtmEntry,
  1830. IN AE_REFTYPE RefType,
  1831. IN BOOLEAN fOkToDelete
  1832. );
  1833. EXTERN
  1834. VOID
  1835. AtmArpReferenceIPEntryEx(
  1836. IN PATMARP_IP_ENTRY pIpEntry,
  1837. IN IE_REFTYPE RefType
  1838. );
  1839. EXTERN
  1840. ULONG
  1841. AtmArpDereferenceIPEntryEx(
  1842. IN PATMARP_IP_ENTRY pIpEntry,
  1843. IN IE_REFTYPE RefType,
  1844. IN BOOLEAN fOkToDelete
  1845. );
  1846. EXTERN
  1847. VOID
  1848. AtmArpReferenceJoinEntryEx(
  1849. IN PATMARP_IPMC_JOIN_ENTRY pJoinEntry,
  1850. IN ULONG RefInfo
  1851. );
  1852. EXTERN
  1853. ULONG
  1854. AtmArpDereferenceJoinEntryEx(
  1855. IN PATMARP_IPMC_JOIN_ENTRY pJoinEntry,
  1856. IN ULONG RefInfo
  1857. );
  1858. #endif // DBG
  1859. #endif // _ATMARP_EXTERNS__H