html-to-markdown 2.27.2 → 2.27.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +8 -8
  3. data/ext/html-to-markdown-rb/native/Cargo.toml +1 -1
  4. data/lib/html_to_markdown/version.rb +1 -1
  5. data/rust-vendor/getrandom/.cargo-checksum.json +1 -1
  6. data/rust-vendor/getrandom/.cargo_vcs_info.json +1 -1
  7. data/rust-vendor/getrandom/CHANGELOG.md +62 -43
  8. data/rust-vendor/getrandom/Cargo.lock +49 -56
  9. data/rust-vendor/getrandom/Cargo.toml +2 -2
  10. data/rust-vendor/getrandom/Cargo.toml.orig +2 -2
  11. data/rust-vendor/getrandom/src/backends/efi_rng.rs +8 -10
  12. data/rust-vendor/getrandom/src/backends/getentropy.rs +13 -4
  13. data/rust-vendor/getrandom/src/backends/linux_android_with_fallback.rs +10 -25
  14. data/rust-vendor/getrandom/src/backends/netbsd.rs +17 -25
  15. data/rust-vendor/getrandom/src/backends/rdrand.rs +15 -9
  16. data/rust-vendor/getrandom/src/backends/rndr.rs +2 -1
  17. data/rust-vendor/getrandom/src/backends/vxworks.rs +7 -3
  18. data/rust-vendor/getrandom/src/backends/windows.rs +21 -5
  19. data/rust-vendor/getrandom/src/utils/lazy_bool.rs +39 -0
  20. data/rust-vendor/getrandom/src/utils/lazy_ptr.rs +57 -0
  21. data/rust-vendor/html-to-markdown-rs/Cargo.toml +2 -2
  22. data/rust-vendor/html-to-markdown-rs/src/converter/text_node.rs +2 -1
  23. data/rust-vendor/html-to-markdown-rs/tests/issue_216_217_regressions.rs +82 -0
  24. data/rust-vendor/quote/.cargo-checksum.json +1 -1
  25. data/rust-vendor/quote/.cargo_vcs_info.json +1 -1
  26. data/rust-vendor/quote/.github/workflows/ci.yml +2 -2
  27. data/rust-vendor/quote/Cargo.lock +21 -21
  28. data/rust-vendor/quote/Cargo.toml +2 -2
  29. data/rust-vendor/quote/Cargo.toml.orig +2 -2
  30. data/rust-vendor/quote/README.md +0 -1
  31. data/rust-vendor/quote/src/lib.rs +1 -1
  32. data/rust-vendor/quote/src/to_tokens.rs +7 -0
  33. data/rust-vendor/quote/tests/ui/not-quotable.stderr +1 -1
  34. data/rust-vendor/quote/tests/ui/not-repeatable.stderr +3 -11
  35. data/rust-vendor/r-efi/.cargo-checksum.json +1 -1
  36. data/rust-vendor/r-efi/.cargo_vcs_info.json +1 -1
  37. data/rust-vendor/r-efi/AUTHORS +1 -0
  38. data/rust-vendor/r-efi/Cargo.lock +1 -1
  39. data/rust-vendor/r-efi/Cargo.toml +1 -3
  40. data/rust-vendor/r-efi/Cargo.toml.orig +1 -5
  41. data/rust-vendor/r-efi/NEWS.md +16 -0
  42. data/rust-vendor/r-efi/src/base.rs +1 -1
  43. data/rust-vendor/r-efi/src/lib.rs +27 -12
  44. data/rust-vendor/r-efi/src/protocols/absolute_pointer.rs +4 -4
  45. data/rust-vendor/r-efi/src/protocols/block_io.rs +8 -8
  46. data/rust-vendor/r-efi/src/protocols/bus_specific_driver_override.rs +2 -2
  47. data/rust-vendor/r-efi/src/protocols/debug_support.rs +10 -10
  48. data/rust-vendor/r-efi/src/protocols/debugport.rs +8 -8
  49. data/rust-vendor/r-efi/src/protocols/decompress.rs +4 -4
  50. data/rust-vendor/r-efi/src/protocols/device_path_from_text.rs +4 -4
  51. data/rust-vendor/r-efi/src/protocols/device_path_to_text.rs +4 -4
  52. data/rust-vendor/r-efi/src/protocols/device_path_utilities.rs +16 -16
  53. data/rust-vendor/r-efi/src/protocols/disk_io.rs +4 -4
  54. data/rust-vendor/r-efi/src/protocols/disk_io2.rs +8 -8
  55. data/rust-vendor/r-efi/src/protocols/driver_binding.rs +6 -6
  56. data/rust-vendor/r-efi/src/protocols/driver_diagnostics2.rs +2 -2
  57. data/rust-vendor/r-efi/src/protocols/driver_family_override.rs +2 -2
  58. data/rust-vendor/r-efi/src/protocols/file.rs +28 -28
  59. data/rust-vendor/r-efi/src/protocols/graphics_output.rs +6 -6
  60. data/rust-vendor/r-efi/src/protocols/hii_database.rs +24 -24
  61. data/rust-vendor/r-efi/src/protocols/hii_font.rs +8 -8
  62. data/rust-vendor/r-efi/src/protocols/hii_font_ex.rs +10 -10
  63. data/rust-vendor/r-efi/src/protocols/hii_string.rs +10 -10
  64. data/rust-vendor/r-efi/src/protocols/ip4.rs +16 -16
  65. data/rust-vendor/r-efi/src/protocols/ip6.rs +18 -18
  66. data/rust-vendor/r-efi/src/protocols/load_file.rs +2 -2
  67. data/rust-vendor/r-efi/src/protocols/loaded_image.rs +2 -2
  68. data/rust-vendor/r-efi/src/protocols/managed_network.rs +16 -16
  69. data/rust-vendor/r-efi/src/protocols/memory_attribute.rs +6 -6
  70. data/rust-vendor/r-efi/src/protocols/mp_services.rs +15 -15
  71. data/rust-vendor/r-efi/src/protocols/pci_io.rs +26 -26
  72. data/rust-vendor/r-efi/src/protocols/platform_driver_override.rs +6 -6
  73. data/rust-vendor/r-efi/src/protocols/rng.rs +4 -4
  74. data/rust-vendor/r-efi/src/protocols/service_binding.rs +4 -4
  75. data/rust-vendor/r-efi/src/protocols/shell.rs +81 -81
  76. data/rust-vendor/r-efi/src/protocols/shell_dynamic_command.rs +4 -4
  77. data/rust-vendor/r-efi/src/protocols/simple_file_system.rs +2 -2
  78. data/rust-vendor/r-efi/src/protocols/simple_network.rs +26 -26
  79. data/rust-vendor/r-efi/src/protocols/simple_text_input.rs +4 -4
  80. data/rust-vendor/r-efi/src/protocols/simple_text_input_ex.rs +11 -11
  81. data/rust-vendor/r-efi/src/protocols/simple_text_output.rs +18 -18
  82. data/rust-vendor/r-efi/src/protocols/tcp4.rs +20 -20
  83. data/rust-vendor/r-efi/src/protocols/tcp6.rs +18 -18
  84. data/rust-vendor/r-efi/src/protocols/timestamp.rs +3 -3
  85. data/rust-vendor/r-efi/src/protocols/udp4.rs +16 -16
  86. data/rust-vendor/r-efi/src/protocols/udp6.rs +14 -14
  87. data/rust-vendor/r-efi/src/system.rs +115 -115
  88. data/rust-vendor/r-efi/src/vendor/intel/console_control.rs +6 -6
  89. data/rust-vendor/r-efi-5.3.0/.cargo-checksum.json +1 -0
  90. data/rust-vendor/r-efi-5.3.0/.cargo_vcs_info.json +6 -0
  91. data/rust-vendor/r-efi-5.3.0/.github/workflows/publish.yml +39 -0
  92. data/rust-vendor/r-efi-5.3.0/.github/workflows/rust-tests.yml +125 -0
  93. data/rust-vendor/r-efi-5.3.0/AUTHORS +74 -0
  94. data/rust-vendor/r-efi-5.3.0/Cargo.lock +16 -0
  95. data/rust-vendor/r-efi-5.3.0/Cargo.toml +70 -0
  96. data/rust-vendor/r-efi-5.3.0/Cargo.toml.orig +51 -0
  97. data/rust-vendor/r-efi-5.3.0/Makefile +85 -0
  98. data/rust-vendor/r-efi-5.3.0/NEWS.md +301 -0
  99. data/rust-vendor/r-efi-5.3.0/README.md +99 -0
  100. data/rust-vendor/r-efi-5.3.0/examples/freestanding.rs +34 -0
  101. data/rust-vendor/r-efi-5.3.0/examples/gop-query.rs +188 -0
  102. data/rust-vendor/r-efi-5.3.0/examples/hello-world.rs +55 -0
  103. data/rust-vendor/r-efi-5.3.0/src/base.rs +993 -0
  104. data/rust-vendor/r-efi-5.3.0/src/hii.rs +1300 -0
  105. data/rust-vendor/r-efi-5.3.0/src/lib.rs +182 -0
  106. data/rust-vendor/r-efi-5.3.0/src/protocols/absolute_pointer.rs +69 -0
  107. data/rust-vendor/r-efi-5.3.0/src/protocols/block_io.rs +70 -0
  108. data/rust-vendor/r-efi-5.3.0/src/protocols/bus_specific_driver_override.rs +32 -0
  109. data/rust-vendor/r-efi-5.3.0/src/protocols/debug_support.rs +835 -0
  110. data/rust-vendor/r-efi-5.3.0/src/protocols/debugport.rs +42 -0
  111. data/rust-vendor/r-efi-5.3.0/src/protocols/decompress.rs +37 -0
  112. data/rust-vendor/r-efi-5.3.0/src/protocols/device_path.rs +82 -0
  113. data/rust-vendor/r-efi-5.3.0/src/protocols/device_path_from_text.rs +26 -0
  114. data/rust-vendor/r-efi-5.3.0/src/protocols/device_path_to_text.rs +30 -0
  115. data/rust-vendor/r-efi-5.3.0/src/protocols/device_path_utilities.rs +63 -0
  116. data/rust-vendor/r-efi-5.3.0/src/protocols/disk_io.rs +40 -0
  117. data/rust-vendor/r-efi-5.3.0/src/protocols/disk_io2.rs +58 -0
  118. data/rust-vendor/r-efi-5.3.0/src/protocols/driver_binding.rs +42 -0
  119. data/rust-vendor/r-efi-5.3.0/src/protocols/driver_diagnostics2.rs +38 -0
  120. data/rust-vendor/r-efi-5.3.0/src/protocols/driver_family_override.rs +23 -0
  121. data/rust-vendor/r-efi-5.3.0/src/protocols/file.rs +183 -0
  122. data/rust-vendor/r-efi-5.3.0/src/protocols/graphics_output.rs +103 -0
  123. data/rust-vendor/r-efi-5.3.0/src/protocols/hii_database.rs +299 -0
  124. data/rust-vendor/r-efi-5.3.0/src/protocols/hii_font.rs +87 -0
  125. data/rust-vendor/r-efi-5.3.0/src/protocols/hii_font_ex.rs +107 -0
  126. data/rust-vendor/r-efi-5.3.0/src/protocols/hii_package_list.rs +14 -0
  127. data/rust-vendor/r-efi-5.3.0/src/protocols/hii_string.rs +71 -0
  128. data/rust-vendor/r-efi-5.3.0/src/protocols/ip4.rs +202 -0
  129. data/rust-vendor/r-efi-5.3.0/src/protocols/ip6.rs +264 -0
  130. data/rust-vendor/r-efi-5.3.0/src/protocols/load_file.rs +26 -0
  131. data/rust-vendor/r-efi-5.3.0/src/protocols/load_file2.rs +15 -0
  132. data/rust-vendor/r-efi-5.3.0/src/protocols/loaded_image.rs +39 -0
  133. data/rust-vendor/r-efi-5.3.0/src/protocols/loaded_image_device_path.rs +13 -0
  134. data/rust-vendor/r-efi-5.3.0/src/protocols/managed_network.rs +147 -0
  135. data/rust-vendor/r-efi-5.3.0/src/protocols/memory_attribute.rs +40 -0
  136. data/rust-vendor/r-efi-5.3.0/src/protocols/mp_services.rs +121 -0
  137. data/rust-vendor/r-efi-5.3.0/src/protocols/pci_io.rs +203 -0
  138. data/rust-vendor/r-efi-5.3.0/src/protocols/platform_driver_override.rs +46 -0
  139. data/rust-vendor/r-efi-5.3.0/src/protocols/rng.rs +83 -0
  140. data/rust-vendor/r-efi-5.3.0/src/protocols/service_binding.rs +20 -0
  141. data/rust-vendor/r-efi-5.3.0/src/protocols/shell.rs +295 -0
  142. data/rust-vendor/r-efi-5.3.0/src/protocols/shell_dynamic_command.rs +33 -0
  143. data/rust-vendor/r-efi-5.3.0/src/protocols/shell_parameters.rs +23 -0
  144. data/rust-vendor/r-efi-5.3.0/src/protocols/simple_file_system.rs +26 -0
  145. data/rust-vendor/r-efi-5.3.0/src/protocols/simple_network.rs +196 -0
  146. data/rust-vendor/r-efi-5.3.0/src/protocols/simple_text_input.rs +38 -0
  147. data/rust-vendor/r-efi-5.3.0/src/protocols/simple_text_input_ex.rs +85 -0
  148. data/rust-vendor/r-efi-5.3.0/src/protocols/simple_text_output.rs +86 -0
  149. data/rust-vendor/r-efi-5.3.0/src/protocols/tcp4.rs +224 -0
  150. data/rust-vendor/r-efi-5.3.0/src/protocols/tcp6.rs +202 -0
  151. data/rust-vendor/r-efi-5.3.0/src/protocols/timestamp.rs +32 -0
  152. data/rust-vendor/r-efi-5.3.0/src/protocols/udp4.rs +151 -0
  153. data/rust-vendor/r-efi-5.3.0/src/protocols/udp6.rs +137 -0
  154. data/rust-vendor/r-efi-5.3.0/src/protocols.rs +54 -0
  155. data/rust-vendor/r-efi-5.3.0/src/system.rs +1130 -0
  156. data/rust-vendor/r-efi-5.3.0/src/vendor/intel/console_control.rs +37 -0
  157. data/rust-vendor/r-efi-5.3.0/src/vendor.rs +10 -0
  158. data/rust-vendor/tokio/.cargo-checksum.json +1 -1
  159. data/rust-vendor/tokio/.cargo_vcs_info.json +1 -1
  160. data/rust-vendor/tokio/CHANGELOG.md +94 -0
  161. data/rust-vendor/tokio/Cargo.lock +1549 -0
  162. data/rust-vendor/tokio/Cargo.toml +96 -83
  163. data/rust-vendor/tokio/Cargo.toml.orig +7 -7
  164. data/rust-vendor/tokio/README.md +1 -1
  165. data/rust-vendor/tokio/src/fs/open_options.rs +4 -1
  166. data/rust-vendor/tokio/src/fs/read.rs +4 -1
  167. data/rust-vendor/tokio/src/fs/write.rs +4 -1
  168. data/rust-vendor/tokio/src/io/async_write.rs +3 -4
  169. data/rust-vendor/tokio/src/io/poll_evented.rs +23 -1
  170. data/rust-vendor/tokio/src/io/stderr.rs +15 -1
  171. data/rust-vendor/tokio/src/io/stdout.rs +14 -0
  172. data/rust-vendor/tokio/src/io/util/async_write_ext.rs +2 -2
  173. data/rust-vendor/tokio/src/io/util/write_buf.rs +11 -2
  174. data/rust-vendor/tokio/src/lib.rs +12 -28
  175. data/rust-vendor/tokio/src/macros/select.rs +6 -8
  176. data/rust-vendor/tokio/src/net/tcp/socket.rs +25 -1
  177. data/rust-vendor/tokio/src/net/tcp/stream.rs +40 -1
  178. data/rust-vendor/tokio/src/process/unix/pidfd_reaper.rs +1 -41
  179. data/rust-vendor/tokio/src/runtime/blocking/pool.rs +18 -14
  180. data/rust-vendor/tokio/src/runtime/builder.rs +10 -4
  181. data/rust-vendor/tokio/src/runtime/handle.rs +3 -2
  182. data/rust-vendor/tokio/src/runtime/io/driver/uring.rs +49 -61
  183. data/rust-vendor/tokio/src/runtime/io/driver.rs +6 -5
  184. data/rust-vendor/tokio/src/runtime/mod.rs +20 -1
  185. data/rust-vendor/tokio/src/runtime/runtime.rs +71 -1
  186. data/rust-vendor/tokio/src/runtime/scheduler/current_thread/mod.rs +24 -8
  187. data/rust-vendor/tokio/src/runtime/scheduler/multi_thread/worker.rs +5 -0
  188. data/rust-vendor/tokio/src/runtime/task/core.rs +1 -0
  189. data/rust-vendor/tokio/src/runtime/task/join.rs +7 -3
  190. data/rust-vendor/tokio/src/runtime/task/list.rs +5 -3
  191. data/rust-vendor/tokio/src/runtime/task/mod.rs +0 -5
  192. data/rust-vendor/tokio/src/runtime/tests/loom_blocking.rs +39 -1
  193. data/rust-vendor/tokio/src/signal/mod.rs +6 -17
  194. data/rust-vendor/tokio/src/signal/registry.rs +1 -1
  195. data/rust-vendor/tokio/src/signal/unix.rs +24 -44
  196. data/rust-vendor/tokio/src/signal/windows/sys.rs +52 -64
  197. data/rust-vendor/tokio/src/signal/windows.rs +35 -23
  198. data/rust-vendor/tokio/src/sync/mpsc/mod.rs +3 -1
  199. data/rust-vendor/tokio/src/sync/oneshot.rs +13 -0
  200. data/rust-vendor/tokio/src/sync/rwlock.rs +4 -5
  201. data/rust-vendor/tokio/src/sync/tests/loom_oneshot.rs +27 -1
  202. data/rust-vendor/tokio/src/task/blocking.rs +16 -1
  203. data/rust-vendor/tokio/src/task/builder.rs +2 -2
  204. data/rust-vendor/tokio/src/task/mod.rs +1 -1
  205. data/rust-vendor/tokio/src/task/spawn.rs +8 -3
  206. data/rust-vendor/tokio/src/task/yield_now.rs +13 -23
  207. data/rust-vendor/tokio/src/time/clock.rs +62 -0
  208. data/rust-vendor/tokio/src/util/memchr.rs +32 -4
  209. data/rust-vendor/tokio/src/util/sharded_list.rs +6 -4
  210. data/rust-vendor/tokio/tests/fs_link.rs +54 -0
  211. data/rust-vendor/tokio/tests/io_async_fd_memory_leak.rs +209 -0
  212. data/rust-vendor/tokio/tests/io_write_buf.rs +56 -0
  213. data/rust-vendor/tokio/tests/process_issue_7144.rs +8 -0
  214. data/rust-vendor/tokio/tests/rt_basic.rs +41 -0
  215. data/rust-vendor/tokio/tests/rt_common_before_park.rs +92 -0
  216. data/rust-vendor/tokio/tests/rt_metrics.rs +1 -1
  217. data/rust-vendor/tokio/tests/rt_panic.rs +12 -0
  218. data/rust-vendor/tokio/tests/rt_shutdown_err.rs +82 -0
  219. data/rust-vendor/tokio/tests/rt_threaded.rs +49 -1
  220. data/rust-vendor/tokio/tests/rt_unstable_metrics.rs +32 -0
  221. data/rust-vendor/tokio/tests/tcp_connect.rs +2 -3
  222. data/rust-vendor/tokio/tests/tcp_shutdown.rs +1 -3
  223. data/rust-vendor/tokio/tests/tcp_socket.rs +3 -4
  224. data/rust-vendor/tokio/tests/tcp_stream.rs +3 -0
  225. metadata +78 -3
  226. data/rust-vendor/getrandom/src/utils/lazy.rs +0 -64
@@ -0,0 +1,202 @@
1
+ //! IPv4 Protocol
2
+ //!
3
+ //! It implements a simple packet-oriented interface that can be used by
4
+ //! drivers, daemons, and applications to transmit and receive network packets.
5
+
6
+ pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
7
+ 0x41d94cd2,
8
+ 0x35b6,
9
+ 0x455a,
10
+ 0x82,
11
+ 0x58,
12
+ &[0xd4, 0xe5, 0x13, 0x34, 0xaa, 0xdd],
13
+ );
14
+
15
+ pub const SERVICE_BINDING_PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
16
+ 0xc51711e7,
17
+ 0xb4bf,
18
+ 0x404a,
19
+ 0xbf,
20
+ 0xb8,
21
+ &[0x0a, 0x04, 0x8e, 0xf1, 0xff, 0xe4],
22
+ );
23
+
24
+ #[repr(C)]
25
+ #[derive(Clone, Copy, Debug)]
26
+ pub struct ConfigData {
27
+ pub default_protocol: u8,
28
+ pub accept_any_protocol: crate::base::Boolean,
29
+ pub accept_icmp_errors: crate::base::Boolean,
30
+ pub accept_broadcast: crate::base::Boolean,
31
+ pub accept_promiscuous: crate::base::Boolean,
32
+ pub use_default_address: crate::base::Boolean,
33
+ pub station_address: crate::base::Ipv4Address,
34
+ pub subnet_mask: crate::base::Ipv4Address,
35
+ pub type_of_service: u8,
36
+ pub time_to_live: u8,
37
+ pub do_not_fragment: crate::base::Boolean,
38
+ pub raw_data: crate::base::Boolean,
39
+ pub receive_timeout: u32,
40
+ pub transmit_timeout: u32,
41
+ }
42
+
43
+ #[repr(C)]
44
+ #[derive(Clone, Copy, Debug)]
45
+ pub struct RouteTable {
46
+ pub subnet_address: crate::base::Ipv4Address,
47
+ pub subnet_mask: crate::base::Ipv4Address,
48
+ pub gateway_address: crate::base::Ipv4Address,
49
+ }
50
+
51
+ #[repr(C)]
52
+ #[derive(Clone, Copy, Debug)]
53
+ pub struct IcmpType {
54
+ pub r#type: u8,
55
+ pub code: u8,
56
+ }
57
+
58
+ #[repr(C)]
59
+ #[derive(Clone, Copy, Debug)]
60
+ pub struct ModeData {
61
+ pub is_started: crate::base::Boolean,
62
+ pub max_packet_size: u32,
63
+ pub config_data: ConfigData,
64
+ pub is_configured: crate::base::Boolean,
65
+ pub group_count: u32,
66
+ pub group_table: *mut crate::base::Ipv4Address,
67
+ pub route_count: u32,
68
+ pub route_table: *mut RouteTable,
69
+ pub icmp_type_count: u32,
70
+ pub icmp_type_list: *mut IcmpType,
71
+ }
72
+
73
+ #[repr(C)]
74
+ #[derive(Clone, Copy)]
75
+ pub struct CompletionToken {
76
+ pub event: crate::base::Event,
77
+ pub status: crate::base::Status,
78
+ pub packet: CompletionTokenPacket,
79
+ }
80
+
81
+ #[repr(C)]
82
+ #[derive(Clone, Copy)]
83
+ pub union CompletionTokenPacket {
84
+ pub rx_data: *mut ReceiveData,
85
+ pub tx_data: *mut TransmitData,
86
+ }
87
+
88
+ #[repr(C)]
89
+ #[derive(Clone, Copy, Debug)]
90
+ pub struct ReceiveData<const N: usize = 0> {
91
+ pub time_stamp: crate::system::Time,
92
+ pub recycle_signal: crate::base::Event,
93
+ pub header_length: u32,
94
+ pub header: *mut Header,
95
+ pub options_length: u32,
96
+ pub options: *mut core::ffi::c_void,
97
+ pub data_length: u32,
98
+ pub fragment_count: u32,
99
+ pub fragment_table: [FragmentData; N],
100
+ }
101
+
102
+ #[repr(C)]
103
+ #[derive(Clone, Copy, Debug)]
104
+ pub struct TransmitData<const N: usize = 0> {
105
+ pub destination_address: crate::base::Ipv4Address,
106
+ pub override_data: *mut OverrideData,
107
+ pub options_length: u32,
108
+ pub options_buffer: *mut core::ffi::c_void,
109
+ pub total_data_length: u32,
110
+ pub fragment_count: u32,
111
+ pub fragment_table: [FragmentData; N],
112
+ }
113
+
114
+ #[repr(C)]
115
+ #[derive(Clone, Copy, Debug)]
116
+ pub struct Header {
117
+ pub header_length_and_version: u8,
118
+ pub type_of_service: u8,
119
+ pub total_length: u16,
120
+ pub identification: u16,
121
+ pub fragmentation: u16,
122
+ pub time_to_live: u8,
123
+ pub protocol: u8,
124
+ pub checksum: u16,
125
+ pub source_address: crate::base::Ipv4Address,
126
+ pub destination_address: crate::base::Ipv4Address,
127
+ }
128
+
129
+ #[repr(C)]
130
+ #[derive(Clone, Copy, Debug)]
131
+ pub struct FragmentData {
132
+ pub fragment_length: u32,
133
+ pub fragment_buffer: *mut core::ffi::c_void,
134
+ }
135
+
136
+ #[repr(C)]
137
+ #[derive(Clone, Copy, Debug)]
138
+ pub struct OverrideData {
139
+ pub source_address: crate::base::Ipv4Address,
140
+ pub gateway_address: crate::base::Ipv4Address,
141
+ pub protocol: u8,
142
+ pub type_of_service: u8,
143
+ pub time_to_live: u8,
144
+ pub do_not_fragment: crate::base::Boolean,
145
+ }
146
+
147
+ pub type ProtocolGetModeData = eficall! {fn(
148
+ *mut Protocol,
149
+ *mut ModeData,
150
+ *mut crate::protocols::managed_network::ConfigData,
151
+ *mut crate::protocols::simple_network::Mode,
152
+ ) -> crate::base::Status};
153
+
154
+ pub type ProtocolConfigure = eficall! {fn(
155
+ *mut Protocol,
156
+ *mut ConfigData,
157
+ ) -> crate::base::Status};
158
+
159
+ pub type ProtocolGroups = eficall! {fn(
160
+ *mut Protocol,
161
+ crate::base::Boolean,
162
+ *mut crate::base::Ipv4Address,
163
+ ) -> crate::base::Status};
164
+
165
+ pub type ProtocolRoutes = eficall! {fn(
166
+ *mut Protocol,
167
+ crate::base::Boolean,
168
+ *mut crate::base::Ipv4Address,
169
+ *mut crate::base::Ipv4Address,
170
+ *mut crate::base::Ipv4Address,
171
+ ) -> crate::base::Status};
172
+
173
+ pub type ProtocolTransmit = eficall! {fn(
174
+ *mut Protocol,
175
+ *mut CompletionToken,
176
+ ) -> crate::base::Status};
177
+
178
+ pub type ProtocolReceive = eficall! {fn(
179
+ *mut Protocol,
180
+ *mut CompletionToken,
181
+ ) -> crate::base::Status};
182
+
183
+ pub type ProtocolCancel = eficall! {fn(
184
+ *mut Protocol,
185
+ *mut CompletionToken,
186
+ ) -> crate::base::Status};
187
+
188
+ pub type ProtocolPoll = eficall! {fn(
189
+ *mut Protocol,
190
+ ) -> crate::base::Status};
191
+
192
+ #[repr(C)]
193
+ pub struct Protocol {
194
+ pub get_mode_data: ProtocolGetModeData,
195
+ pub configure: ProtocolConfigure,
196
+ pub groups: ProtocolGroups,
197
+ pub routes: ProtocolRoutes,
198
+ pub transmit: ProtocolTransmit,
199
+ pub receive: ProtocolReceive,
200
+ pub cancel: ProtocolCancel,
201
+ pub poll: ProtocolPoll,
202
+ }
@@ -0,0 +1,264 @@
1
+ //! IPv6 Protocol
2
+ //!
3
+ //! It implements a simple packet-oriented interface that can be used by
4
+ //! drivers, daemons, and applications to transmit and receive network packets.
5
+
6
+ pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
7
+ 0x2c8759d5,
8
+ 0x5c2d,
9
+ 0x66ef,
10
+ 0x92,
11
+ 0x5f,
12
+ &[0xb6, 0x6c, 0x10, 0x19, 0x57, 0xe2],
13
+ );
14
+
15
+ pub const SERVICE_BINDING_PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
16
+ 0xec835dd3,
17
+ 0xfe0f,
18
+ 0x617b,
19
+ 0xa6,
20
+ 0x21,
21
+ &[0xb3, 0x50, 0xc3, 0xe1, 0x33, 0x88],
22
+ );
23
+
24
+ #[repr(C)]
25
+ #[derive(Clone, Copy, Debug)]
26
+ pub struct ModeData {
27
+ pub is_started: crate::base::Boolean,
28
+ pub max_packet_size: u32,
29
+ pub config_data: ConfigData,
30
+ pub is_configured: crate::base::Boolean,
31
+ pub address_count: u32,
32
+ pub address_list: *mut AddressInfo,
33
+ pub group_count: u32,
34
+ pub group_table: *mut crate::base::Ipv6Address,
35
+ pub route_count: u32,
36
+ pub route_table: *mut RouteTable,
37
+ pub neighbor_count: u32,
38
+ pub neighbor_cache: *mut NeighborCache,
39
+ pub prefix_count: u32,
40
+ pub prefix_table: *mut AddressInfo,
41
+ pub icmp_type_count: u32,
42
+ pub icmp_type_list: *mut IcmpType,
43
+ }
44
+
45
+ #[repr(C)]
46
+ #[derive(Clone, Copy, Debug)]
47
+ pub struct ConfigData {
48
+ pub default_protocol: u8,
49
+ pub accept_any_protocol: crate::base::Boolean,
50
+ pub accept_icmp_errors: crate::base::Boolean,
51
+ pub accept_promiscuous: crate::base::Boolean,
52
+ pub destination_address: crate::base::Ipv6Address,
53
+ pub station_address: crate::base::Ipv6Address,
54
+ pub traffic_class: u8,
55
+ pub hop_limit: u8,
56
+ pub flow_lable: u32,
57
+ pub receive_timeout: u32,
58
+ pub transmit_timeout: u32,
59
+ }
60
+
61
+ #[repr(C)]
62
+ #[derive(Clone, Copy, Debug)]
63
+ pub struct AddressInfo {
64
+ pub address: crate::base::Ipv6Address,
65
+ pub prefix_length: u8,
66
+ }
67
+
68
+ #[repr(C)]
69
+ #[derive(Clone, Copy, Debug)]
70
+ pub struct RouteTable {
71
+ pub gateway: crate::base::Ipv6Address,
72
+ pub destination: crate::base::Ipv6Address,
73
+ pub prefix_length: u8,
74
+ }
75
+
76
+ pub type NeighborState = u32;
77
+
78
+ pub const NEIGHBOR_IN_COMPLETE: NeighborState = 0x00000000;
79
+ pub const NEIGHBOR_REACHABLE: NeighborState = 0x00000001;
80
+ pub const NEIGHBOR_STATE: NeighborState = 0x00000002;
81
+ pub const NEIGHBOR_DELAY: NeighborState = 0x00000003;
82
+ pub const NEIGHBOR_PROBE: NeighborState = 0x00000004;
83
+
84
+ #[repr(C)]
85
+ #[derive(Clone, Copy, Debug)]
86
+ pub struct NeighborCache {
87
+ pub neighbor: crate::base::Ipv6Address,
88
+ pub link_address: crate::base::MacAddress,
89
+ pub state: NeighborState,
90
+ }
91
+
92
+ #[repr(C)]
93
+ #[derive(Clone, Copy, Debug)]
94
+ pub struct IcmpType {
95
+ pub r#type: u8,
96
+ pub code: u8,
97
+ }
98
+
99
+ pub const ICMP_V6_DEST_UNREACHABLE: u8 = 0x01;
100
+ pub const ICMP_V6_PACKET_TOO_BIG: u8 = 0x02;
101
+ pub const ICMP_V6_TIME_EXCEEDED: u8 = 0x03;
102
+ pub const ICMP_V6_PARAMETER_PROBLEM: u8 = 0x04;
103
+
104
+ pub const ICMP_V6_ECHO_REQUEST: u8 = 0x80;
105
+ pub const ICMP_V6_ECHO_REPLY: u8 = 0x81;
106
+ pub const ICMP_V6_LISTENER_QUERY: u8 = 0x82;
107
+ pub const ICMP_V6_LISTENER_REPORT: u8 = 0x83;
108
+ pub const ICMP_V6_LISTENER_DONE: u8 = 0x84;
109
+ pub const ICMP_V6_ROUTER_SOLICIT: u8 = 0x85;
110
+ pub const ICMP_V6_ROUTER_ADVERTISE: u8 = 0x86;
111
+ pub const ICMP_V6_NEIGHBOR_SOLICIT: u8 = 0x87;
112
+ pub const ICMP_V6_NEIGHBOR_ADVERTISE: u8 = 0x88;
113
+ pub const ICMP_V6_REDIRECT: u8 = 0x89;
114
+ pub const ICMP_V6_LISTENER_REPORT_2: u8 = 0x8f;
115
+
116
+ pub const ICMP_V6_NO_ROUTE_TO_DEST: u8 = 0x00;
117
+ pub const ICMP_V6_COMM_PROHIBITED: u8 = 0x01;
118
+ pub const ICMP_V6_BEYOND_SCOPE: u8 = 0x02;
119
+ pub const ICMP_V6_ADDR_UNREACHABLE: u8 = 0x03;
120
+ pub const ICMP_V6_PORT_UNREACHABLE: u8 = 0x04;
121
+ pub const ICMP_V6_SOURCE_ADDR_FAILED: u8 = 0x05;
122
+ pub const ICMP_V6_ROUTE_REJECTED: u8 = 0x06;
123
+
124
+ pub const ICMP_V6_TIMEOUT_HOP_LIMIT: u8 = 0x00;
125
+ pub const ICMP_V6_TIMEOUT_REASSEMBLE: u8 = 0x01;
126
+
127
+ pub const ICMP_V6_ERRONEOUS_HEADER: u8 = 0x00;
128
+ pub const ICMP_V6_UNRECOGNIZE_NEXT_HDR: u8 = 0x01;
129
+ pub const ICMP_V6_UNRECOGNIZE_OPTION: u8 = 0x02;
130
+
131
+ #[repr(C)]
132
+ #[derive(Clone, Copy)]
133
+ pub struct CompletionToken {
134
+ pub event: crate::base::Event,
135
+ pub status: crate::base::Status,
136
+ pub packet: CompletionTokenPacket,
137
+ }
138
+
139
+ #[repr(C)]
140
+ #[derive(Clone, Copy)]
141
+ pub union CompletionTokenPacket {
142
+ pub rx_data: *mut ReceiveData,
143
+ pub tx_data: *mut TransmitData,
144
+ }
145
+
146
+ #[repr(C)]
147
+ #[derive(Clone, Copy, Debug)]
148
+ pub struct ReceiveData<const N: usize = 0> {
149
+ pub time_stamp: crate::system::Time,
150
+ pub recycle_signal: crate::base::Event,
151
+ pub header_length: u32,
152
+ pub header: *mut Header,
153
+ pub data_length: u32,
154
+ pub fragment_count: u32,
155
+ pub fragment_table: [FragmentData; N],
156
+ }
157
+
158
+ #[repr(C)]
159
+ #[derive(Clone, Copy, Debug)]
160
+ pub struct Header {
161
+ pub traffic_class_h_version: u8,
162
+ pub flow_label_h_traffic_class_l: u8,
163
+ pub flow_label_l: u16,
164
+ pub payload_length: u16,
165
+ pub next_header: u8,
166
+ pub hop_limit: u8,
167
+ pub source_address: crate::base::Ipv6Address,
168
+ pub destination_address: crate::base::Ipv6Address,
169
+ }
170
+
171
+ #[repr(C)]
172
+ #[derive(Clone, Copy, Debug)]
173
+ pub struct FragmentData {
174
+ pub fragment_length: u32,
175
+ pub fragment_buffer: *mut core::ffi::c_void,
176
+ }
177
+
178
+ #[repr(C)]
179
+ #[derive(Clone, Copy, Debug)]
180
+ pub struct TransmitData<const N: usize = 0> {
181
+ pub destination_address: *mut crate::base::Ipv6Address,
182
+ pub override_data: *mut OverrideData,
183
+ pub ext_hdrs_length: u32,
184
+ pub ext_hdrs: *mut core::ffi::c_void,
185
+ pub next_header: u8,
186
+ pub data_length: u32,
187
+ pub fragment_count: u32,
188
+ pub fragment_table: [FragmentData; N],
189
+ }
190
+
191
+ #[repr(C)]
192
+ #[derive(Clone, Copy, Debug)]
193
+ pub struct OverrideData {
194
+ pub protocol: u8,
195
+ pub hop_limit: u8,
196
+ pub flow_label: u32,
197
+ }
198
+
199
+ pub type ProtocolGetModeData = eficall! {fn(
200
+ *mut Protocol,
201
+ *mut ModeData,
202
+ *mut crate::protocols::managed_network::ConfigData,
203
+ *mut crate::protocols::simple_network::Mode,
204
+ ) -> crate::base::Status};
205
+
206
+ pub type ProtocolConfigure = eficall! {fn(
207
+ *mut Protocol,
208
+ *mut ConfigData,
209
+ ) -> crate::base::Status};
210
+
211
+ pub type ProtocolGroups = eficall! {fn(
212
+ *mut Protocol,
213
+ crate::base::Boolean,
214
+ *mut crate::base::Ipv6Address,
215
+ ) -> crate::base::Status};
216
+
217
+ pub type ProtocolRoutes = eficall! {fn(
218
+ *mut Protocol,
219
+ crate::base::Boolean,
220
+ *mut crate::base::Ipv6Address,
221
+ u8,
222
+ *mut crate::base::Ipv6Address,
223
+ ) -> crate::base::Status};
224
+
225
+ pub type ProtocolNeighbors = eficall! {fn(
226
+ *mut Protocol,
227
+ crate::base::Boolean,
228
+ *mut crate::base::Ipv6Address,
229
+ *mut crate::base::MacAddress,
230
+ u32,
231
+ crate::base::Boolean,
232
+ ) -> crate::base::Status};
233
+
234
+ pub type ProtocolTransmit = eficall! {fn(
235
+ *mut Protocol,
236
+ *mut CompletionToken,
237
+ ) -> crate::base::Status};
238
+
239
+ pub type ProtocolReceive = eficall! {fn(
240
+ *mut Protocol,
241
+ *mut CompletionToken,
242
+ ) -> crate::base::Status};
243
+
244
+ pub type ProtocolCancel = eficall! {fn(
245
+ *mut Protocol,
246
+ *mut CompletionToken,
247
+ ) -> crate::base::Status};
248
+
249
+ pub type ProtocolPoll = eficall! {fn(
250
+ *mut Protocol,
251
+ ) -> crate::base::Status};
252
+
253
+ #[repr(C)]
254
+ pub struct Protocol {
255
+ pub get_mode_data: ProtocolGetModeData,
256
+ pub configure: ProtocolConfigure,
257
+ pub groups: ProtocolGroups,
258
+ pub routes: ProtocolRoutes,
259
+ pub neighbors: ProtocolNeighbors,
260
+ pub transmit: ProtocolTransmit,
261
+ pub receive: ProtocolReceive,
262
+ pub cancel: ProtocolCancel,
263
+ pub poll: ProtocolPoll,
264
+ }
@@ -0,0 +1,26 @@
1
+ //! Load File Protocol
2
+ //!
3
+ //! The Load File protocol is used to obtain files, that are primarily boot
4
+ //! options, from arbitrary devices.
5
+
6
+ pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
7
+ 0x56ec3091,
8
+ 0x954c,
9
+ 0x11d2,
10
+ 0x8e,
11
+ 0x3f,
12
+ &[0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b],
13
+ );
14
+
15
+ pub type ProtocolLoadFile = eficall! {fn(
16
+ *mut Protocol,
17
+ *mut crate::protocols::device_path::Protocol,
18
+ crate::base::Boolean,
19
+ *mut usize,
20
+ *mut core::ffi::c_void
21
+ ) -> crate::base::Status};
22
+
23
+ #[repr(C)]
24
+ pub struct Protocol {
25
+ pub load_file: ProtocolLoadFile,
26
+ }
@@ -0,0 +1,15 @@
1
+ //! Load File 2 Protocol
2
+ //!
3
+ //! The Load File 2 protocol is used to obtain files from arbitrary devices
4
+ //! that are not boot options.
5
+
6
+ pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
7
+ 0x4006c0c1,
8
+ 0xfcb3,
9
+ 0x403e,
10
+ 0x99,
11
+ 0x6d,
12
+ &[0x4a, 0x6c, 0x87, 0x24, 0xe0, 0x6d],
13
+ );
14
+
15
+ pub type Protocol = crate::protocols::load_file::Protocol;
@@ -0,0 +1,39 @@
1
+ //! Loaded Image Protocol
2
+ //!
3
+ //! The loaded image protocol defines how to obtain information about a loaded image from an
4
+ //! image handle.
5
+
6
+ pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
7
+ 0x5b1b31a1,
8
+ 0x9562,
9
+ 0x11d2,
10
+ 0x8e,
11
+ 0x3f,
12
+ &[0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b],
13
+ );
14
+
15
+ pub const REVISION: u32 = 0x00001000u32;
16
+
17
+ pub type ProtocolUnload = eficall! {fn(
18
+ crate::base::Handle,
19
+ ) -> crate::base::Status};
20
+
21
+ #[repr(C)]
22
+ pub struct Protocol {
23
+ pub revision: u32,
24
+ pub parent_handle: crate::base::Handle,
25
+ pub system_table: *mut crate::system::SystemTable,
26
+
27
+ pub device_handle: crate::base::Handle,
28
+ pub file_path: *mut crate::protocols::device_path::Protocol,
29
+ pub reserved: *mut core::ffi::c_void,
30
+
31
+ pub load_options_size: u32,
32
+ pub load_options: *mut core::ffi::c_void,
33
+
34
+ pub image_base: *mut core::ffi::c_void,
35
+ pub image_size: u64,
36
+ pub image_code_type: crate::system::MemoryType,
37
+ pub image_data_type: crate::system::MemoryType,
38
+ pub unload: Option<ProtocolUnload>,
39
+ }
@@ -0,0 +1,13 @@
1
+ //! Loaded Image Device Path Protocol
2
+ //!
3
+ //! The loaded image device path protocol provides the device path of a loaded image, using the
4
+ //! protocol structures of the device-path and loaded-image protocols.
5
+
6
+ pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
7
+ 0xbc62157e,
8
+ 0x3e33,
9
+ 0x4fec,
10
+ 0x99,
11
+ 0x20,
12
+ &[0x2d, 0x3b, 0x36, 0xd7, 0x50, 0xdf],
13
+ );
@@ -0,0 +1,147 @@
1
+ //! Managed Network Protocol
2
+ //!
3
+ //! It provides raw (unformatted) asynchronous network packet I/O services.
4
+ //! These services make it possible for multiple-event-driven drivers and
5
+ //! applications to access and use the system network interfaces at the same
6
+ //! time.
7
+
8
+ pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
9
+ 0x7ab33a91,
10
+ 0xace5,
11
+ 0x4326,
12
+ 0xb5,
13
+ 0x72,
14
+ &[0xe7, 0xee, 0x33, 0xd3, 0x9f, 0x16],
15
+ );
16
+
17
+ pub const SERVICE_BINDING_PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
18
+ 0xf36ff770,
19
+ 0xa7e1,
20
+ 0x42cf,
21
+ 0x9e,
22
+ 0xd2,
23
+ &[0x56, 0xf0, 0xf2, 0x71, 0xf4, 0x4c],
24
+ );
25
+
26
+ #[repr(C)]
27
+ #[derive(Clone, Copy, Debug)]
28
+ pub struct ConfigData {
29
+ pub received_queue_timeout_value: u32,
30
+ pub transmit_queue_timeout_value: u32,
31
+ pub protocol_type_filter: u16,
32
+ pub enable_unicast_receive: crate::base::Boolean,
33
+ pub enable_multicast_receive: crate::base::Boolean,
34
+ pub enable_broadcast_receive: crate::base::Boolean,
35
+ pub enable_promiscuous_receive: crate::base::Boolean,
36
+ pub flush_queues_on_reset: crate::base::Boolean,
37
+ pub enable_receive_timestamps: crate::base::Boolean,
38
+ pub disable_background_polling: crate::base::Boolean,
39
+ }
40
+
41
+ #[repr(C)]
42
+ #[derive(Clone, Copy)]
43
+ pub struct CompletionToken {
44
+ pub event: crate::base::Event,
45
+ pub status: crate::base::Status,
46
+ pub packet: CompletionTokenPacket,
47
+ }
48
+
49
+ #[repr(C)]
50
+ #[derive(Clone, Copy)]
51
+ pub union CompletionTokenPacket {
52
+ pub rx_data: *mut ReceiveData,
53
+ pub tx_data: *mut TransmitData,
54
+ }
55
+
56
+ #[repr(C)]
57
+ #[derive(Clone, Copy, Debug)]
58
+ pub struct ReceiveData {
59
+ pub timestamp: crate::system::Time,
60
+ pub recycle_event: crate::base::Event,
61
+ pub packet_length: u32,
62
+ pub header_length: u32,
63
+ pub address_length: u32,
64
+ pub data_length: u32,
65
+ pub broadcast_flag: crate::base::Boolean,
66
+ pub multicast_flag: crate::base::Boolean,
67
+ pub promiscuous_flag: crate::base::Boolean,
68
+ pub protocol_type: u16,
69
+ pub destination_address: *mut core::ffi::c_void,
70
+ pub source_address: *mut core::ffi::c_void,
71
+ pub media_header: *mut core::ffi::c_void,
72
+ pub packet_data: *mut core::ffi::c_void,
73
+ }
74
+
75
+ #[repr(C)]
76
+ #[derive(Clone, Copy, Debug)]
77
+ pub struct TransmitData<const N: usize = 0> {
78
+ pub destination_address: *mut crate::base::MacAddress,
79
+ pub source_address: *mut crate::base::MacAddress,
80
+ pub protocol_type: u16,
81
+ pub data_length: u32,
82
+ pub header_length: u16,
83
+ pub fragment_count: u16,
84
+ pub fragment_table: [FragmentData; N],
85
+ }
86
+
87
+ #[repr(C)]
88
+ #[derive(Clone, Copy, Debug)]
89
+ pub struct FragmentData {
90
+ pub fragment_length: u32,
91
+ pub fragment_buffer: *mut core::ffi::c_void,
92
+ }
93
+
94
+ pub type ProtocolGetModeData = eficall! {fn(
95
+ *mut Protocol,
96
+ *mut ConfigData,
97
+ *mut crate::protocols::simple_network::Mode,
98
+ ) -> crate::base::Status};
99
+
100
+ pub type ProtocolConfigure = eficall! {fn(
101
+ *mut Protocol,
102
+ *mut ConfigData,
103
+ ) -> crate::base::Status};
104
+
105
+ pub type ProtocolMcastIpToMac = eficall! {fn(
106
+ *mut Protocol,
107
+ crate::base::Boolean,
108
+ *mut crate::base::IpAddress,
109
+ *mut crate::base::MacAddress,
110
+ ) -> crate::base::Status};
111
+
112
+ pub type ProtocolGroups = eficall! {fn(
113
+ *mut Protocol,
114
+ crate::base::Boolean,
115
+ *mut crate::base::MacAddress,
116
+ ) -> crate::base::Status};
117
+
118
+ pub type ProtocolTransmit = eficall! {fn(
119
+ *mut Protocol,
120
+ *mut CompletionToken,
121
+ ) -> crate::base::Status};
122
+
123
+ pub type ProtocolReceive = eficall! {fn(
124
+ *mut Protocol,
125
+ *mut CompletionToken,
126
+ ) -> crate::base::Status};
127
+
128
+ pub type ProtocolCancel = eficall! {fn(
129
+ *mut Protocol,
130
+ *mut CompletionToken,
131
+ ) -> crate::base::Status};
132
+
133
+ pub type ProtocolPoll = eficall! {fn(
134
+ *mut Protocol,
135
+ ) -> crate::base::Status};
136
+
137
+ #[repr(C)]
138
+ pub struct Protocol {
139
+ pub get_mode_data: ProtocolGetModeData,
140
+ pub configure: ProtocolConfigure,
141
+ pub mcast_ip_to_mac: ProtocolMcastIpToMac,
142
+ pub groups: ProtocolGroups,
143
+ pub transmit: ProtocolTransmit,
144
+ pub receive: ProtocolReceive,
145
+ pub cancel: ProtocolCancel,
146
+ pub poll: ProtocolPoll,
147
+ }