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.

723 lines
19 KiB

  1. /*++
  2. Copyright (c) 1998-1999 Microsoft Corporation
  3. Module Name:
  4. ioctl.h
  5. Abstract:
  6. This file contains the ioctl declarations for ARP1394, the IEEE1394 ARP module.
  7. Environment:
  8. Kernel mode
  9. Revision History:
  10. 11/20/1998 JosephJ Created
  11. 04/10/1999 JosephJ Defined structures to get/set info.
  12. --*/
  13. #ifndef _ARP1394_IOCTL_
  14. #define _ARP1394_IOCTL_
  15. #define ARP_CLIENT_DOS_DEVICE_NAME L"\\\\.\\ARP1394"
  16. #define ARP_IOCTL_CLIENT_OPERATION CTL_CODE(FILE_DEVICE_NETWORK, 100, METHOD_BUFFERED, FILE_ANY_ACCESS)
  17. // Current version. To rev the version, increment the 2nd number in the
  18. // expression. The 1st number is a random 32-bit number.
  19. //
  20. #define ARP1394_IOCTL_VERSION (0x1ac86e68+3)
  21. // Common header.
  22. //
  23. typedef struct
  24. {
  25. // Set version to ARP1394_IOCTL_VERSION
  26. //
  27. ULONG Version;
  28. // IP address (in network byte order) of interface this request applies to.
  29. // (All-zeros == use default).
  30. //
  31. ULONG IfIpAddress;
  32. // Operation code. Each operation code is associated with
  33. // a structure relevant to the operation.
  34. //
  35. enum
  36. {
  37. // Display all ARP entries
  38. // Associated struct: ARP1394_IOCTL_GET_ARPCACHE
  39. //
  40. ARP1394_IOCTL_OP_GET_ARPCACHE,
  41. // Add a static arp entry.
  42. // Associated struct: ARP1394_IOCTL_ADD_ARP_ENTRY
  43. //
  44. ARP1394_IOCTL_OP_ADD_STATIC_ENTRY,
  45. // Delete a static arp entry.
  46. // Associated struct: ARP1394_IOCTL_DEL_ARP_ENTRY
  47. //
  48. ARP1394_IOCTL_OP_DEL_STATIC_ENTRY,
  49. // Purge all DYNAMIC arp cache entries.
  50. //
  51. ARP1394_IOCTL_OP_PURGE_ARPCACHE,
  52. // Get packet statistics.
  53. // Associated struct: ARP1394_IOCTL_GET_PACKET_STATS
  54. //
  55. ARP1394_IOCTL_OP_GET_PACKET_STATS,
  56. // Get task statistics.
  57. // Associated struct: ARP1394_IOCTL_GET_TASK_STATS
  58. //
  59. ARP1394_IOCTL_OP_GET_TASK_STATS,
  60. // Get arp table statistics.
  61. // Associated struct: ARP1394_IOCTL_GET_ARPCACHE_STATS
  62. //
  63. ARP1394_IOCTL_OP_GET_ARPCACHE_STATS,
  64. // Get call statistics.
  65. // Associated struct: ARP1394_IOCTL_GET_CALL_STATS
  66. //
  67. ARP1394_IOCTL_OP_GET_CALL_STATS,
  68. // Reset statistics collection.
  69. //
  70. ARP1394_IOCTL_OP_RESET_STATS,
  71. // Reinit the interface (deactivate and then activate it).
  72. //
  73. ARP1394_IOCTL_OP_REINIT_INTERFACE,
  74. // Send a packet
  75. //
  76. ARP1394_IOCTL_OP_SEND_PACKET,
  77. // Receive a packet
  78. //
  79. ARP1394_IOCTL_OP_RECV_PACKET,
  80. // Get bus information
  81. //
  82. ARP1394_IOCTL_OP_GET_NICINFO,
  83. // Get MCAP-related information
  84. //
  85. ARP1394_IOCTL_OP_GET_MCAPINFO,
  86. //
  87. // FOLLOWING ARE FOR ETHERNET EMULATION. THESE SHOULD NOT BE
  88. // SUPPORTED FROM USER MODE. HOWEVER FOR TESTING PURPOSES THEY ARE
  89. // CURRENTLY SUPPORED FROM USER MODE
  90. //
  91. // This is a dummy op identifying the beginning of the ethernet-related
  92. // Ops.
  93. //
  94. ARP1394_IOCTL_OP_ETHERNET_FIRST = 0x100,
  95. // Start ethernet emulation on the specified adapter. We must not
  96. // currently be bound to this adapter.
  97. //
  98. ARP1394_IOCTL_OP_ETHERNET_START_EMULATION =
  99. ARP1394_IOCTL_OP_ETHERNET_FIRST,
  100. // Stop ethernet emulation on the specified adapter. We must be
  101. // currently using this adapter in ethernet mode.
  102. //
  103. ARP1394_IOCTL_OP_ETHERNET_STOP_EMULATION,
  104. // Start listening on this ethernet multicast address.
  105. //
  106. ARP1394_IOCTL_OP_ETHERNET_ADD_MULTICAST_ADDRESS,
  107. // Stop listening on this ethernet multicast address.
  108. //
  109. ARP1394_IOCTL_OP_ETHERNET_DEL_MULTICAST_ADDRESS,
  110. // Start listening on this ethernet multicast address.
  111. //
  112. ARP1394_IOCTL_OP_ETHERNET_ENABLE_PROMISCUOUS_MODE,
  113. // Stop listening on this ethernet multicast address.
  114. //
  115. ARP1394_IOCTL_OP_ETHERNET_DISABLE_PROMISCUOUS_MODE,
  116. // This is a dummy op identifying the beginning of the ethernet-related
  117. // Ops.
  118. //
  119. ARP1394_IOCTL_OP_ETHERNET_LAST =
  120. ARP1394_IOCTL_OP_ETHERNET_DISABLE_PROMISCUOUS_MODE,
  121. // This is an ioctl that returns, the Node, Euid, and Dummy Mac address
  122. // for the Bus
  123. ARP1394_IOCTL_OP_GET_EUID_NODE_MAC_TABLE
  124. } Op;
  125. } ARP1394_IOCTL_HEADER, *PARP1394_IOCTL_HEADER;
  126. typedef struct
  127. {
  128. UINT64 UniqueID;
  129. ULONG Off_Low;
  130. USHORT Off_High;
  131. } ARP1394_IOCTL_HW_ADDRESS, *PARP1394_IOCTL_HW_ADDRESS;
  132. typedef struct
  133. {
  134. ARP1394_IOCTL_HW_ADDRESS HwAddress;
  135. ULONG IpAddress;
  136. }
  137. ARP1394_ARP_ENTRY, *PARP1394_ARP_ENTRY;
  138. // Structure used to get items from the arp table.
  139. //
  140. typedef struct
  141. {
  142. // Hdr.Op must be set to ARP1394_IOCTL_OP_GET_ARPCACHE
  143. //
  144. ARP1394_IOCTL_HEADER Hdr;
  145. // Local HW Address (64-bit UniqueID and FIFO offset, if any).
  146. //
  147. ARP1394_IOCTL_HW_ADDRESS LocalHwAddress;
  148. // Total entries currently in the arp table.
  149. //
  150. UINT NumEntriesInArpCache;
  151. // Total number of entries avilable in THIS structure.
  152. //
  153. UINT NumEntriesAvailable;
  154. // Number of entries filled out in this structure.
  155. //
  156. UINT NumEntriesUsed;
  157. // Zero-based index of the first entry in the structure in the
  158. // arp table.
  159. //
  160. UINT Index;
  161. // Space for NumEntriesAvailable arp table entries.
  162. //
  163. ARP1394_ARP_ENTRY Entries[1];
  164. } ARP1394_IOCTL_GET_ARPCACHE, *PARP1394_IOCTL_GET_ARPCACHE;
  165. // Structure used to add a single static arp entry.
  166. //
  167. typedef struct
  168. {
  169. // Hdr.Op must be set to ARP1394_IOCTL_OP_ADD_STATIC_ENTRY
  170. //
  171. ARP1394_IOCTL_HEADER Hdr;
  172. // Destination HW Address.
  173. //
  174. ARP1394_IOCTL_HW_ADDRESS HwAddress;
  175. // Destination IP Address in network byte order
  176. //
  177. ULONG IpAddress;
  178. } ARP1394_IOCTL_ADD_ARP_ENTRY, *PARP1394_IOCTL_ADD_ARP_ENTRY;
  179. // Structure used to delete a single static arp entry.
  180. //
  181. typedef struct
  182. {
  183. // Hdr.Op must be set to ARP1394_IOCTL_OP_ADD_STATIC_ENTRY
  184. //
  185. ARP1394_IOCTL_HEADER Hdr;
  186. // Destination IP Address in network byte order.
  187. //
  188. ULONG IpAddress;
  189. } ARP1394_IOCTL_DEL_ARP_ENTRY, *PARP1394_IOCTL_DEL_ARP_ENTRY;
  190. // Structure used to purge all DYNAMIC arp entries from the arp
  191. // cache.
  192. //
  193. typedef struct
  194. {
  195. // Hdr.Op must be set to ARP1394_IOCTL_OP_PURGE_ARPCACHE
  196. //
  197. ARP1394_IOCTL_HEADER Hdr;
  198. } ARP1394_IOCTL_PURGE_ARPCACHE, *PARP1394_IOCTL_PURGE_ARPCACHE;
  199. // Enumeration of packet size slots
  200. //
  201. enum
  202. {
  203. ARP1394_PKTSIZE_128, // <= 128 bytes
  204. ARP1394_PKTSIZE_256, // 129 ... 256 bytes
  205. ARP1394_PKTSIZE_1K, // 257 ... 1K bytes
  206. ARP1394_PKTSIZE_2K, // 1K+1 .. .2K bytes
  207. ARP1394_PKTSIZE_G2K, // > 2K bytes
  208. ARP1394_NUM_PKTSIZE_SLOTS
  209. };
  210. // Enumeration of packet send/recv time slots
  211. //
  212. enum
  213. {
  214. // ARP1394_PKTTIME_1US, // <= 1 microsecond
  215. // ARP1394_PKTTIME_100US, // 1+ ... 100 microsecond
  216. ARP1394_PKTTIME_100US, // <= 100 microsecond
  217. ARP1394_PKTTIME_1MS, // 0.1+ ... 1 millisecond
  218. ARP1394_PKTTIME_10MS, // 1+ ... 10 milliseconds
  219. ARP1394_PKTTIME_100MS, // 10+ ...100 milliseconds
  220. ARP1394_PKTTIME_G100MS, // > 100 milliseconds
  221. // ARP1394_PKTTIME_G10MS, // > 10 milliseconds
  222. ARP1394_NUM_PKTTIME_SLOTS
  223. };
  224. // Enumeration of task time slots
  225. //
  226. enum
  227. {
  228. ARP1394_TASKTIME_1MS, // <= 1 millisecond
  229. ARP1394_TASKTIME_100MS, // 1+ ... 100 milliseconds
  230. ARP1394_TASKTIME_1S, // 0.1+ ... 1 second
  231. ARP1394_TASKTIME_10S, // 1+ ... 10 seconds
  232. ARP1394_TASKTIME_G10S, // > 10 seconds
  233. ARP1394_NUM_TASKTIME_SLOTS
  234. };
  235. // Keeps track of the packet counts for each combination of packet-size-slot
  236. // and packet-time-slot.
  237. //
  238. typedef struct
  239. {
  240. // Count of successful packets
  241. //
  242. UINT GoodCounts[ARP1394_NUM_PKTSIZE_SLOTS][ARP1394_NUM_PKTTIME_SLOTS];
  243. // Count of unsuccessful packets
  244. //
  245. UINT BadCounts [ARP1394_NUM_PKTSIZE_SLOTS][ARP1394_NUM_PKTTIME_SLOTS];
  246. } ARP1394_PACKET_COUNTS, *PARP1394_PACKET_COUNTS;
  247. // Structure used to get packet stats.
  248. //
  249. typedef struct
  250. {
  251. // Hdr.Op must be set to ARP1394_IOCTL_OP_GET_PACKET_STATS
  252. //
  253. ARP1394_IOCTL_HEADER Hdr;
  254. // Duration of stats collection, in seconds.
  255. //
  256. UINT StatsDuration;
  257. //
  258. // Some send stats
  259. //
  260. UINT TotSends;
  261. UINT FastSends;
  262. UINT MediumSends;
  263. UINT SlowSends;
  264. UINT BackFills;
  265. UINT HeaderBufUses;
  266. UINT HeaderBufCacheHits;
  267. //
  268. // Some recv stats
  269. //
  270. UINT TotRecvs;
  271. UINT NoCopyRecvs;
  272. UINT CopyRecvs;
  273. UINT ResourceRecvs;
  274. //
  275. // Packet counts
  276. //
  277. ARP1394_PACKET_COUNTS SendFifoCounts;
  278. ARP1394_PACKET_COUNTS RecvFifoCounts;
  279. ARP1394_PACKET_COUNTS SendChannelCounts;
  280. ARP1394_PACKET_COUNTS RecvChannelCounts;
  281. } ARP1394_IOCTL_GET_PACKET_STATS, *PARP1394_IOCTL_GET_PACKET_STATS;
  282. // Structure used to get task stats.
  283. //
  284. typedef struct
  285. {
  286. // Hdr.Op must be set to ARP1394_IOCTL_OP_GET_TASK_STATS
  287. //
  288. ARP1394_IOCTL_HEADER Hdr;
  289. // Duration of stats collection, in seconds.
  290. //
  291. UINT StatsDuration;
  292. UINT TotalTasks;
  293. UINT CurrentTasks;
  294. UINT TimeCounts[ARP1394_NUM_TASKTIME_SLOTS];
  295. } ARP1394_IOCTL_GET_TASK_STATS, *PARP1394_IOCTL_GET_TASK_STATS;
  296. // Structure used to get arp table stats.
  297. //
  298. typedef struct
  299. {
  300. // Hdr.Op must be set to ARP1394_IOCTL_OP_GET_ARPCACHE_STATS
  301. //
  302. ARP1394_IOCTL_HEADER Hdr;
  303. // Duration of stats collection, in seconds.
  304. //
  305. UINT StatsDuration;
  306. UINT TotalQueries;
  307. UINT SuccessfulQueries;
  308. UINT FailedQueries;
  309. UINT TotalResponses;
  310. UINT TotalLookups;
  311. UINT TraverseRatio;
  312. } ARP1394_IOCTL_GET_ARPCACHE_STATS, *PARP1394_IOCTL_GET_ARPCACHE_STATS;
  313. // Structure used to get call stats.
  314. //
  315. typedef struct
  316. {
  317. // Hdr.Op must be set to ARP1394_IOCTL_OP_GET_CALL_STATS
  318. //
  319. ARP1394_IOCTL_HEADER Hdr;
  320. // Duration of stats collection, in seconds.
  321. //
  322. UINT StatsDuration;
  323. //
  324. // FIFO-related call stats.
  325. //
  326. UINT TotalSendFifoMakeCalls;
  327. UINT SuccessfulSendFifoMakeCalls;
  328. UINT FailedSendFifoMakeCalls;
  329. UINT IncomingClosesOnSendFifos;
  330. //
  331. // Channel-related call stats.
  332. //
  333. UINT TotalChannelMakeCalls;
  334. UINT SuccessfulChannelMakeCalls;
  335. UINT FailedChannelMakeCalls;
  336. UINT IncomingClosesOnChannels;
  337. } ARP1394_IOCTL_GET_CALL_STATS, *PARP1394_IOCTL_GET_CALL_STATS;
  338. // Structure used to reset statistics.
  339. //
  340. typedef struct
  341. {
  342. // Hdr.Op must be set to ARP1394_IOCTL_OP_RESET_STATS
  343. //
  344. ARP1394_IOCTL_HEADER Hdr;
  345. } ARP1394_IOCTL_RESET_STATS, *PARP1394_IOCTL_RESET_STATS;
  346. // Structure used to re-init the interface.
  347. //
  348. typedef struct
  349. {
  350. // Hdr.Op must be set to ARP1394_IOCTL_OP_REINIT_INTERFACE
  351. //
  352. ARP1394_IOCTL_HEADER Hdr;
  353. } ARP1394_IOCTL_REINIT_INTERFACE, *PARP1394_IOCTL_REINIT_INTERFACE;
  354. #if 0
  355. //
  356. // the structure for returning basic information about the miniport.
  357. //
  358. typedef struct
  359. {
  360. UINT64 UniqueID; // This node's 64-bit Unique ID.
  361. ULONG BusGeneration; // 1394 Bus generation ID.
  362. USHORT NodeAddress; // Local nodeID for the current bus
  363. // generation.
  364. USHORT Reserved; // Padding.
  365. UINT MaxRecvBlockSize; // Maximum size, in bytes, of blocks
  366. // that can be read.
  367. UINT MaxRecvSpeed; // Max speed which can be accepted
  368. // -- minimum
  369. // of the max local link speed and
  370. // the max local PHY speed.
  371. } ARP1394_IOCTL_LOCAL_NODE_INFO, *PARP1394_IOCTL_LOCAL_NODE_INFO;
  372. //
  373. // the structure for returning basic information about a remote node.
  374. //
  375. typedef struct
  376. {
  377. UINT64 UniqueID; // This node's 64-bit Unique ID.
  378. USHORT NodeAddress; // Local nodeID for the current bus
  379. // generation.
  380. USHORT Reserved; // Padding.
  381. UINT MaxRecvBlockSize; // Maximum size, in bytes, of blocks
  382. // that can be read.
  383. UINT MaxRecvSpeed; // Max speed which can be accepted
  384. // -- minimum
  385. // of the max local link speed and
  386. // the max local PHY speed.
  387. UINT MaxSpeedBetweenNodes;// Max speed which can be accepted
  388. UINT Flags; // One or more ARP1394_IOCTL_REMOTEFLAGS_* consts
  389. #define ARP1394_IOCTL_REMOTEFLAGS_ACTIVE (0x1<<0)
  390. #define ARP1394_IOCTL_REMOTEFLAGS_LOADING (0x1<<1)
  391. #define ARP1394_IOCTL_REMOTEFLAGS_UNLOADING (0x1<<2)
  392. #if 0 // later
  393. //
  394. // Following numbers are since the last bus reset.
  395. //
  396. UINT NumFifoPktsSent;
  397. UINT NumFifoPktsReceived;
  398. UINT NumChannelPktsReceived;
  399. UINT NumFifoSendFailures;
  400. UINT NumFifoReceiveDiscards;
  401. UINT NumChannelPktsReceived;
  402. UINT64 NumFifoBytesSent;
  403. UINT64 NumChannelBytesSent;
  404. UINT64 NumFifoBytesReceived;
  405. UINT64 NumChannelBytesReceived;
  406. #endif // 0
  407. } ARP1394_IOCTL_REMOTE_NODE_INFO, *PARP1394_IOCTL_REMOTE_NODE_INFO;
  408. typedef struct
  409. {
  410. UINT NumPacketsSent;
  411. UINT NumPacketsReceived;
  412. #if 0 // later
  413. UINT NumSendFailures;
  414. UINT NumReceiveDiscards;
  415. UINT64 NumBytesSent;
  416. UINT64 NumBytesReceived;
  417. #endif // 0
  418. } ARP1394_IOCTL_CHANNEL_INFO, *PARP1394_IOCTL_CHANNEL_INFO;
  419. #endif // 0
  420. #define ARP1394_IOCTL_MAX_BUSINFO_NODES 64
  421. #define ARP1394_IOCTL_MAX_BUSINFO_CHANNELS 64
  422. #define ARP1394_IOCTL_MAX_PACKET_SIZE 1000
  423. typedef struct
  424. {
  425. // Hdr.Op must be set to ARP1394_IOCTL_NICINFO
  426. //
  427. ARP1394_IOCTL_HEADER Hdr;
  428. // NIC information (defined in nic1394.h)
  429. //
  430. NIC1394_NICINFO Info;
  431. #if 0
  432. UINT Version;
  433. UINT ChannelMapLow; // LSB bit == channel 0
  434. UINT ChannelMapHigh; // MSB bit == channel 63
  435. UINT NumBusResets;
  436. UINT SecondsSinceLastBusReset;
  437. UINT NumRemoteNodes;
  438. ARP1394_IOCTL_LOCAL_NODE_INFO LocalNodeInfo;
  439. ARP1394_IOCTL_REMOTE_NODE_INFO RemoteNodeInfo[ARP1394_IOCTL_MAX_BUSINFO_NODES];
  440. ARP1394_IOCTL_CHANNEL_INFO ChannelInfo[ARP1394_IOCTL_MAX_BUSINFO_CHANNELS];
  441. #endif
  442. } ARP1394_IOCTL_NICINFO, *PARP1394_IOCTL_NICINFO;
  443. typedef struct
  444. {
  445. // Hdr.Op must be set to ARP1394_IOCTL_SEND_PACKET
  446. //
  447. ARP1394_IOCTL_HEADER Hdr;
  448. UINT PacketSize;
  449. UCHAR Data[ARP1394_IOCTL_MAX_PACKET_SIZE];
  450. } ARP1394_IOCTL_SEND_PACKET, *PARP1394_IOCTL_SEND_PACKET;
  451. typedef struct
  452. {
  453. // Hdr.Op must be set to ARP1394_IOCTL_RECV_PACKET
  454. //
  455. ARP1394_IOCTL_HEADER Hdr;
  456. UINT PacketSize;
  457. UCHAR Data[ARP1394_IOCTL_MAX_PACKET_SIZE];
  458. } ARP1394_IOCTL_RECV_PACKET, *PARP1394_IOCTL_RECV_PACKET;
  459. typedef struct
  460. {
  461. // Channel number.
  462. //
  463. UINT Channel;
  464. // IP multicast group address bound to this channel.
  465. //
  466. ULONG GroupAddress;
  467. // Absolute time at which this information was updated,
  468. // in seconds.
  469. //
  470. UINT UpdateTime;
  471. // Absolute time at which this mapping will expire.
  472. // In seconds.
  473. //
  474. UINT ExpieryTime;
  475. UINT SpeedCode;
  476. // Status
  477. //
  478. UINT Flags; // One of the ARP1394_IOCTL_MCIFLAGS_*
  479. #define ARP1394_IOCTL_MCIFLAGS_ALLOCATED 0x1
  480. // NodeID of owner of this channel.
  481. //
  482. UINT NodeId;
  483. } ARP1394_IOCTL_MCAP_CHANNEL_INFO;
  484. // Structure used to get MCAP-related info.
  485. //
  486. typedef struct
  487. {
  488. // Hdr.Op must be set to ARP1394_IOCTL_OP_GET_MCAPINFO
  489. //
  490. ARP1394_IOCTL_HEADER Hdr;
  491. // Number of entries filled out in this structure.
  492. //
  493. UINT NumEntries;
  494. // Space for NumEntriesAvailable arp table entries.
  495. //
  496. ARP1394_IOCTL_MCAP_CHANNEL_INFO
  497. Entries[ARP1394_IOCTL_MAX_BUSINFO_CHANNELS];
  498. } ARP1394_IOCTL_GET_MCAPINFO, *PARP1394_IOCTL_GET_MCAPINFO;
  499. typedef struct
  500. {
  501. // Hdr.Op must be set to one of
  502. // ARP1394_IOCTL_OP_ETHERNET_START_EMULATION
  503. // ARP1394_IOCTL_OP_ETHERNET_STOP_EMULATION
  504. // ARP1394_IOCTL_OP_ETHERNET_ADD_MULTICAST_ADDRESS
  505. // ARP1394_IOCTL_OP_ETHERNET_DEL_MULTICAST_ADDRESS
  506. // ARP1394_IOCTL_OP_ETHERNET_ENABLE_PROMISCUOUS_MODE
  507. // ARP1394_IOCTL_OP_ETHERNET_DISABLE_PROMISCUOUS_MODE
  508. //
  509. ARP1394_IOCTL_HEADER Hdr;
  510. // Null-terminated NDIS Adapter name
  511. //
  512. #define ARP1394_MAX_ADAPTER_NAME_LENGTH 128
  513. WCHAR AdapterName[ARP1394_MAX_ADAPTER_NAME_LENGTH+1];
  514. // Flags. Reserved for future use.
  515. //
  516. UINT Flags;
  517. // Ethernet MAC address. Usage as follows:
  518. //
  519. // ARP1394_IOCTL_OP_ETHERNET_ADD_MULTICAST_ADDRESS: Multicast address
  520. // ARP1394_IOCTL_OP_ETHERNET_DEL_MULTICAST_ADDRESS: Multicast address
  521. //
  522. // Unused for other operations.
  523. //
  524. UCHAR MacAddress[6];
  525. } ARP1394_IOCTL_ETHERNET_NOTIFICATION, *PARP1394_IOCTL_ETHERNET_NOTIFICATION;
  526. typedef struct
  527. {
  528. // Hdr.Op must be set to ARP1394_IOCTL_OP_GET_EUID_NODE_MAC_TABLE
  529. //
  530. ARP1394_IOCTL_HEADER Hdr;
  531. //
  532. //This contains the Topology
  533. EUID_TOPOLOGY Map;
  534. } ARP1394_IOCTL_EUID_NODE_MAC_INFO, *PARP1394_IOCTL_EUID_NODE_MAC_INFO;
  535. typedef union
  536. {
  537. ARP1394_IOCTL_HEADER Hdr;
  538. ARP1394_IOCTL_GET_ARPCACHE GetArpCache;
  539. ARP1394_IOCTL_ADD_ARP_ENTRY AddArpEntry;
  540. ARP1394_IOCTL_DEL_ARP_ENTRY DelArpEntry;
  541. ARP1394_IOCTL_PURGE_ARPCACHE PurgeArpCache;
  542. ARP1394_IOCTL_GET_PACKET_STATS GetPktStats;
  543. ARP1394_IOCTL_GET_TASK_STATS GetTaskStats;
  544. ARP1394_IOCTL_GET_ARPCACHE_STATS GetArpStats;
  545. ARP1394_IOCTL_GET_CALL_STATS GetCallStats;
  546. ARP1394_IOCTL_RESET_STATS ResetStats;
  547. ARP1394_IOCTL_REINIT_INTERFACE ReinitInterface;
  548. ARP1394_IOCTL_NICINFO IoctlNicInfo;
  549. ARP1394_IOCTL_SEND_PACKET SendPacket;
  550. ARP1394_IOCTL_RECV_PACKET RecvPacket;
  551. ARP1394_IOCTL_ETHERNET_NOTIFICATION EthernetNotification;
  552. ARP1394_IOCTL_EUID_NODE_MAC_INFO EuidNodeMacInfo;
  553. } ARP1394_IOCTL_COMMAND, *PARP1394_IOCTL_COMMAND;
  554. #endif // _ARP1394_IOCTL_