1 /* automatically generated by rust-bindgen 0.63.0 */
2 
3 #[repr(C)]
4 #[derive(Default)]
5 pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
6 impl<T> __IncompleteArrayField<T> {
7     #[inline]
new() -> Self8     pub const fn new() -> Self {
9         __IncompleteArrayField(::std::marker::PhantomData, [])
10     }
11     #[inline]
as_ptr(&self) -> *const T12     pub fn as_ptr(&self) -> *const T {
13         self as *const _ as *const T
14     }
15     #[inline]
as_mut_ptr(&mut self) -> *mut T16     pub fn as_mut_ptr(&mut self) -> *mut T {
17         self as *mut _ as *mut T
18     }
19     #[inline]
as_slice(&self, len: usize) -> &[T]20     pub unsafe fn as_slice(&self, len: usize) -> &[T] {
21         ::std::slice::from_raw_parts(self.as_ptr(), len)
22     }
23     #[inline]
as_mut_slice(&mut self, len: usize) -> &mut [T]24     pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
25         ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
26     }
27 }
28 impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result29     fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
30         fmt.write_str("__IncompleteArrayField")
31     }
32 }
33 pub const VIRTIO_NET_F_CSUM: u32 = 0;
34 pub const VIRTIO_NET_F_GUEST_CSUM: u32 = 1;
35 pub const VIRTIO_NET_F_CTRL_GUEST_OFFLOADS: u32 = 2;
36 pub const VIRTIO_NET_F_MTU: u32 = 3;
37 pub const VIRTIO_NET_F_MAC: u32 = 5;
38 pub const VIRTIO_NET_F_GUEST_TSO4: u32 = 7;
39 pub const VIRTIO_NET_F_GUEST_TSO6: u32 = 8;
40 pub const VIRTIO_NET_F_GUEST_ECN: u32 = 9;
41 pub const VIRTIO_NET_F_GUEST_UFO: u32 = 10;
42 pub const VIRTIO_NET_F_HOST_TSO4: u32 = 11;
43 pub const VIRTIO_NET_F_HOST_TSO6: u32 = 12;
44 pub const VIRTIO_NET_F_HOST_ECN: u32 = 13;
45 pub const VIRTIO_NET_F_HOST_UFO: u32 = 14;
46 pub const VIRTIO_NET_F_MRG_RXBUF: u32 = 15;
47 pub const VIRTIO_NET_F_STATUS: u32 = 16;
48 pub const VIRTIO_NET_F_CTRL_VQ: u32 = 17;
49 pub const VIRTIO_NET_F_CTRL_RX: u32 = 18;
50 pub const VIRTIO_NET_F_CTRL_VLAN: u32 = 19;
51 pub const VIRTIO_NET_F_CTRL_RX_EXTRA: u32 = 20;
52 pub const VIRTIO_NET_F_GUEST_ANNOUNCE: u32 = 21;
53 pub const VIRTIO_NET_F_MQ: u32 = 22;
54 pub const VIRTIO_NET_F_CTRL_MAC_ADDR: u32 = 23;
55 pub const VIRTIO_NET_F_NOTF_COAL: u32 = 53;
56 pub const VIRTIO_NET_F_GUEST_USO4: u32 = 54;
57 pub const VIRTIO_NET_F_GUEST_USO6: u32 = 55;
58 pub const VIRTIO_NET_F_HOST_USO: u32 = 56;
59 pub const VIRTIO_NET_F_HASH_REPORT: u32 = 57;
60 pub const VIRTIO_NET_F_GUEST_HDRLEN: u32 = 59;
61 pub const VIRTIO_NET_F_RSS: u32 = 60;
62 pub const VIRTIO_NET_F_RSC_EXT: u32 = 61;
63 pub const VIRTIO_NET_F_STANDBY: u32 = 62;
64 pub const VIRTIO_NET_F_SPEED_DUPLEX: u32 = 63;
65 pub const VIRTIO_NET_F_GSO: u32 = 6;
66 pub const VIRTIO_NET_S_LINK_UP: u32 = 1;
67 pub const VIRTIO_NET_S_ANNOUNCE: u32 = 2;
68 pub const VIRTIO_NET_RSS_HASH_TYPE_IPv4: u32 = 1;
69 pub const VIRTIO_NET_RSS_HASH_TYPE_TCPv4: u32 = 2;
70 pub const VIRTIO_NET_RSS_HASH_TYPE_UDPv4: u32 = 4;
71 pub const VIRTIO_NET_RSS_HASH_TYPE_IPv6: u32 = 8;
72 pub const VIRTIO_NET_RSS_HASH_TYPE_TCPv6: u32 = 16;
73 pub const VIRTIO_NET_RSS_HASH_TYPE_UDPv6: u32 = 32;
74 pub const VIRTIO_NET_RSS_HASH_TYPE_IP_EX: u32 = 64;
75 pub const VIRTIO_NET_RSS_HASH_TYPE_TCP_EX: u32 = 128;
76 pub const VIRTIO_NET_RSS_HASH_TYPE_UDP_EX: u32 = 256;
77 pub const VIRTIO_NET_HDR_F_NEEDS_CSUM: u32 = 1;
78 pub const VIRTIO_NET_HDR_F_DATA_VALID: u32 = 2;
79 pub const VIRTIO_NET_HDR_F_RSC_INFO: u32 = 4;
80 pub const VIRTIO_NET_HDR_GSO_NONE: u32 = 0;
81 pub const VIRTIO_NET_HDR_GSO_TCPV4: u32 = 1;
82 pub const VIRTIO_NET_HDR_GSO_UDP: u32 = 3;
83 pub const VIRTIO_NET_HDR_GSO_TCPV6: u32 = 4;
84 pub const VIRTIO_NET_HDR_GSO_UDP_L4: u32 = 5;
85 pub const VIRTIO_NET_HDR_GSO_ECN: u32 = 128;
86 pub const VIRTIO_NET_HASH_REPORT_NONE: u32 = 0;
87 pub const VIRTIO_NET_HASH_REPORT_IPv4: u32 = 1;
88 pub const VIRTIO_NET_HASH_REPORT_TCPv4: u32 = 2;
89 pub const VIRTIO_NET_HASH_REPORT_UDPv4: u32 = 3;
90 pub const VIRTIO_NET_HASH_REPORT_IPv6: u32 = 4;
91 pub const VIRTIO_NET_HASH_REPORT_TCPv6: u32 = 5;
92 pub const VIRTIO_NET_HASH_REPORT_UDPv6: u32 = 6;
93 pub const VIRTIO_NET_HASH_REPORT_IPv6_EX: u32 = 7;
94 pub const VIRTIO_NET_HASH_REPORT_TCPv6_EX: u32 = 8;
95 pub const VIRTIO_NET_HASH_REPORT_UDPv6_EX: u32 = 9;
96 pub const VIRTIO_NET_OK: u32 = 0;
97 pub const VIRTIO_NET_ERR: u32 = 1;
98 pub const VIRTIO_NET_CTRL_RX: u32 = 0;
99 pub const VIRTIO_NET_CTRL_RX_PROMISC: u32 = 0;
100 pub const VIRTIO_NET_CTRL_RX_ALLMULTI: u32 = 1;
101 pub const VIRTIO_NET_CTRL_RX_ALLUNI: u32 = 2;
102 pub const VIRTIO_NET_CTRL_RX_NOMULTI: u32 = 3;
103 pub const VIRTIO_NET_CTRL_RX_NOUNI: u32 = 4;
104 pub const VIRTIO_NET_CTRL_RX_NOBCAST: u32 = 5;
105 pub const VIRTIO_NET_CTRL_MAC: u32 = 1;
106 pub const VIRTIO_NET_CTRL_MAC_TABLE_SET: u32 = 0;
107 pub const VIRTIO_NET_CTRL_MAC_ADDR_SET: u32 = 1;
108 pub const VIRTIO_NET_CTRL_VLAN: u32 = 2;
109 pub const VIRTIO_NET_CTRL_VLAN_ADD: u32 = 0;
110 pub const VIRTIO_NET_CTRL_VLAN_DEL: u32 = 1;
111 pub const VIRTIO_NET_CTRL_ANNOUNCE: u32 = 3;
112 pub const VIRTIO_NET_CTRL_ANNOUNCE_ACK: u32 = 0;
113 pub const VIRTIO_NET_CTRL_MQ: u32 = 4;
114 pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET: u32 = 0;
115 pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN: u32 = 1;
116 pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX: u32 = 32768;
117 pub const VIRTIO_NET_CTRL_MQ_RSS_CONFIG: u32 = 1;
118 pub const VIRTIO_NET_CTRL_MQ_HASH_CONFIG: u32 = 2;
119 pub const VIRTIO_NET_CTRL_GUEST_OFFLOADS: u32 = 5;
120 pub const VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET: u32 = 0;
121 pub const VIRTIO_NET_CTRL_NOTF_COAL: u32 = 6;
122 pub const VIRTIO_NET_CTRL_NOTF_COAL_TX_SET: u32 = 0;
123 pub const VIRTIO_NET_CTRL_NOTF_COAL_RX_SET: u32 = 1;
124 pub type __u8 = ::std::os::raw::c_uchar;
125 pub type __u16 = ::std::os::raw::c_ushort;
126 pub type __u32 = ::std::os::raw::c_uint;
127 pub type __le16 = __u16;
128 pub type __le32 = __u32;
129 pub type __virtio16 = __u16;
130 pub type __virtio32 = __u32;
131 #[repr(C, packed)]
132 #[derive(Debug, Default, Copy, Clone, PartialEq)]
133 pub struct virtio_net_config {
134     pub mac: [__u8; 6usize],
135     pub status: __virtio16,
136     pub max_virtqueue_pairs: __virtio16,
137     pub mtu: __virtio16,
138     pub speed: __le32,
139     pub duplex: __u8,
140     pub rss_max_key_size: __u8,
141     pub rss_max_indirection_table_length: __le16,
142     pub supported_hash_types: __le32,
143 }
144 #[test]
bindgen_test_layout_virtio_net_config()145 fn bindgen_test_layout_virtio_net_config() {
146     const UNINIT: ::std::mem::MaybeUninit<virtio_net_config> = ::std::mem::MaybeUninit::uninit();
147     let ptr = UNINIT.as_ptr();
148     assert_eq!(
149         ::std::mem::size_of::<virtio_net_config>(),
150         24usize,
151         concat!("Size of: ", stringify!(virtio_net_config))
152     );
153     assert_eq!(
154         ::std::mem::align_of::<virtio_net_config>(),
155         1usize,
156         concat!("Alignment of ", stringify!(virtio_net_config))
157     );
158     assert_eq!(
159         unsafe { ::std::ptr::addr_of!((*ptr).mac) as usize - ptr as usize },
160         0usize,
161         concat!(
162             "Offset of field: ",
163             stringify!(virtio_net_config),
164             "::",
165             stringify!(mac)
166         )
167     );
168     assert_eq!(
169         unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize },
170         6usize,
171         concat!(
172             "Offset of field: ",
173             stringify!(virtio_net_config),
174             "::",
175             stringify!(status)
176         )
177     );
178     assert_eq!(
179         unsafe { ::std::ptr::addr_of!((*ptr).max_virtqueue_pairs) as usize - ptr as usize },
180         8usize,
181         concat!(
182             "Offset of field: ",
183             stringify!(virtio_net_config),
184             "::",
185             stringify!(max_virtqueue_pairs)
186         )
187     );
188     assert_eq!(
189         unsafe { ::std::ptr::addr_of!((*ptr).mtu) as usize - ptr as usize },
190         10usize,
191         concat!(
192             "Offset of field: ",
193             stringify!(virtio_net_config),
194             "::",
195             stringify!(mtu)
196         )
197     );
198     assert_eq!(
199         unsafe { ::std::ptr::addr_of!((*ptr).speed) as usize - ptr as usize },
200         12usize,
201         concat!(
202             "Offset of field: ",
203             stringify!(virtio_net_config),
204             "::",
205             stringify!(speed)
206         )
207     );
208     assert_eq!(
209         unsafe { ::std::ptr::addr_of!((*ptr).duplex) as usize - ptr as usize },
210         16usize,
211         concat!(
212             "Offset of field: ",
213             stringify!(virtio_net_config),
214             "::",
215             stringify!(duplex)
216         )
217     );
218     assert_eq!(
219         unsafe { ::std::ptr::addr_of!((*ptr).rss_max_key_size) as usize - ptr as usize },
220         17usize,
221         concat!(
222             "Offset of field: ",
223             stringify!(virtio_net_config),
224             "::",
225             stringify!(rss_max_key_size)
226         )
227     );
228     assert_eq!(
229         unsafe {
230             ::std::ptr::addr_of!((*ptr).rss_max_indirection_table_length) as usize - ptr as usize
231         },
232         18usize,
233         concat!(
234             "Offset of field: ",
235             stringify!(virtio_net_config),
236             "::",
237             stringify!(rss_max_indirection_table_length)
238         )
239     );
240     assert_eq!(
241         unsafe { ::std::ptr::addr_of!((*ptr).supported_hash_types) as usize - ptr as usize },
242         20usize,
243         concat!(
244             "Offset of field: ",
245             stringify!(virtio_net_config),
246             "::",
247             stringify!(supported_hash_types)
248         )
249     );
250 }
251 #[repr(C)]
252 #[derive(Copy, Clone)]
253 pub struct virtio_net_hdr_v1 {
254     pub flags: __u8,
255     pub gso_type: __u8,
256     pub hdr_len: __virtio16,
257     pub gso_size: __virtio16,
258     pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1,
259     pub num_buffers: __virtio16,
260 }
261 #[repr(C)]
262 #[derive(Copy, Clone)]
263 pub union virtio_net_hdr_v1__bindgen_ty_1 {
264     pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1,
265     pub csum: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2,
266     pub rsc: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3,
267 }
268 #[repr(C)]
269 #[derive(Debug, Default, Copy, Clone, PartialEq)]
270 pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1 {
271     pub csum_start: __virtio16,
272     pub csum_offset: __virtio16,
273 }
274 #[test]
bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1()275 fn bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1() {
276     const UNINIT: ::std::mem::MaybeUninit<virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1> =
277         ::std::mem::MaybeUninit::uninit();
278     let ptr = UNINIT.as_ptr();
279     assert_eq!(
280         ::std::mem::size_of::<virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1>(),
281         4usize,
282         concat!(
283             "Size of: ",
284             stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1)
285         )
286     );
287     assert_eq!(
288         ::std::mem::align_of::<virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1>(),
289         2usize,
290         concat!(
291             "Alignment of ",
292             stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1)
293         )
294     );
295     assert_eq!(
296         unsafe { ::std::ptr::addr_of!((*ptr).csum_start) as usize - ptr as usize },
297         0usize,
298         concat!(
299             "Offset of field: ",
300             stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1),
301             "::",
302             stringify!(csum_start)
303         )
304     );
305     assert_eq!(
306         unsafe { ::std::ptr::addr_of!((*ptr).csum_offset) as usize - ptr as usize },
307         2usize,
308         concat!(
309             "Offset of field: ",
310             stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1),
311             "::",
312             stringify!(csum_offset)
313         )
314     );
315 }
316 #[repr(C)]
317 #[derive(Debug, Default, Copy, Clone, PartialEq)]
318 pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2 {
319     pub start: __virtio16,
320     pub offset: __virtio16,
321 }
322 #[test]
bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2()323 fn bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2() {
324     const UNINIT: ::std::mem::MaybeUninit<virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2> =
325         ::std::mem::MaybeUninit::uninit();
326     let ptr = UNINIT.as_ptr();
327     assert_eq!(
328         ::std::mem::size_of::<virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2>(),
329         4usize,
330         concat!(
331             "Size of: ",
332             stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2)
333         )
334     );
335     assert_eq!(
336         ::std::mem::align_of::<virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2>(),
337         2usize,
338         concat!(
339             "Alignment of ",
340             stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2)
341         )
342     );
343     assert_eq!(
344         unsafe { ::std::ptr::addr_of!((*ptr).start) as usize - ptr as usize },
345         0usize,
346         concat!(
347             "Offset of field: ",
348             stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2),
349             "::",
350             stringify!(start)
351         )
352     );
353     assert_eq!(
354         unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize },
355         2usize,
356         concat!(
357             "Offset of field: ",
358             stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2),
359             "::",
360             stringify!(offset)
361         )
362     );
363 }
364 #[repr(C)]
365 #[derive(Debug, Default, Copy, Clone, PartialEq)]
366 pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3 {
367     pub segments: __le16,
368     pub dup_acks: __le16,
369 }
370 #[test]
bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3()371 fn bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3() {
372     const UNINIT: ::std::mem::MaybeUninit<virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3> =
373         ::std::mem::MaybeUninit::uninit();
374     let ptr = UNINIT.as_ptr();
375     assert_eq!(
376         ::std::mem::size_of::<virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3>(),
377         4usize,
378         concat!(
379             "Size of: ",
380             stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3)
381         )
382     );
383     assert_eq!(
384         ::std::mem::align_of::<virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3>(),
385         2usize,
386         concat!(
387             "Alignment of ",
388             stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3)
389         )
390     );
391     assert_eq!(
392         unsafe { ::std::ptr::addr_of!((*ptr).segments) as usize - ptr as usize },
393         0usize,
394         concat!(
395             "Offset of field: ",
396             stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3),
397             "::",
398             stringify!(segments)
399         )
400     );
401     assert_eq!(
402         unsafe { ::std::ptr::addr_of!((*ptr).dup_acks) as usize - ptr as usize },
403         2usize,
404         concat!(
405             "Offset of field: ",
406             stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3),
407             "::",
408             stringify!(dup_acks)
409         )
410     );
411 }
412 #[test]
bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1()413 fn bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1() {
414     const UNINIT: ::std::mem::MaybeUninit<virtio_net_hdr_v1__bindgen_ty_1> =
415         ::std::mem::MaybeUninit::uninit();
416     let ptr = UNINIT.as_ptr();
417     assert_eq!(
418         ::std::mem::size_of::<virtio_net_hdr_v1__bindgen_ty_1>(),
419         4usize,
420         concat!("Size of: ", stringify!(virtio_net_hdr_v1__bindgen_ty_1))
421     );
422     assert_eq!(
423         ::std::mem::align_of::<virtio_net_hdr_v1__bindgen_ty_1>(),
424         2usize,
425         concat!("Alignment of ", stringify!(virtio_net_hdr_v1__bindgen_ty_1))
426     );
427     assert_eq!(
428         unsafe { ::std::ptr::addr_of!((*ptr).csum) as usize - ptr as usize },
429         0usize,
430         concat!(
431             "Offset of field: ",
432             stringify!(virtio_net_hdr_v1__bindgen_ty_1),
433             "::",
434             stringify!(csum)
435         )
436     );
437     assert_eq!(
438         unsafe { ::std::ptr::addr_of!((*ptr).rsc) as usize - ptr as usize },
439         0usize,
440         concat!(
441             "Offset of field: ",
442             stringify!(virtio_net_hdr_v1__bindgen_ty_1),
443             "::",
444             stringify!(rsc)
445         )
446     );
447 }
448 impl Default for virtio_net_hdr_v1__bindgen_ty_1 {
default() -> Self449     fn default() -> Self {
450         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
451         unsafe {
452             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
453             s.assume_init()
454         }
455     }
456 }
457 #[test]
bindgen_test_layout_virtio_net_hdr_v1()458 fn bindgen_test_layout_virtio_net_hdr_v1() {
459     const UNINIT: ::std::mem::MaybeUninit<virtio_net_hdr_v1> = ::std::mem::MaybeUninit::uninit();
460     let ptr = UNINIT.as_ptr();
461     assert_eq!(
462         ::std::mem::size_of::<virtio_net_hdr_v1>(),
463         12usize,
464         concat!("Size of: ", stringify!(virtio_net_hdr_v1))
465     );
466     assert_eq!(
467         ::std::mem::align_of::<virtio_net_hdr_v1>(),
468         2usize,
469         concat!("Alignment of ", stringify!(virtio_net_hdr_v1))
470     );
471     assert_eq!(
472         unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize },
473         0usize,
474         concat!(
475             "Offset of field: ",
476             stringify!(virtio_net_hdr_v1),
477             "::",
478             stringify!(flags)
479         )
480     );
481     assert_eq!(
482         unsafe { ::std::ptr::addr_of!((*ptr).gso_type) as usize - ptr as usize },
483         1usize,
484         concat!(
485             "Offset of field: ",
486             stringify!(virtio_net_hdr_v1),
487             "::",
488             stringify!(gso_type)
489         )
490     );
491     assert_eq!(
492         unsafe { ::std::ptr::addr_of!((*ptr).hdr_len) as usize - ptr as usize },
493         2usize,
494         concat!(
495             "Offset of field: ",
496             stringify!(virtio_net_hdr_v1),
497             "::",
498             stringify!(hdr_len)
499         )
500     );
501     assert_eq!(
502         unsafe { ::std::ptr::addr_of!((*ptr).gso_size) as usize - ptr as usize },
503         4usize,
504         concat!(
505             "Offset of field: ",
506             stringify!(virtio_net_hdr_v1),
507             "::",
508             stringify!(gso_size)
509         )
510     );
511     assert_eq!(
512         unsafe { ::std::ptr::addr_of!((*ptr).num_buffers) as usize - ptr as usize },
513         10usize,
514         concat!(
515             "Offset of field: ",
516             stringify!(virtio_net_hdr_v1),
517             "::",
518             stringify!(num_buffers)
519         )
520     );
521 }
522 impl Default for virtio_net_hdr_v1 {
default() -> Self523     fn default() -> Self {
524         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
525         unsafe {
526             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
527             s.assume_init()
528         }
529     }
530 }
531 #[repr(C)]
532 #[derive(Copy, Clone)]
533 pub struct virtio_net_hdr_v1_hash {
534     pub hdr: virtio_net_hdr_v1,
535     pub hash_value: __le32,
536     pub hash_report: __le16,
537     pub padding: __le16,
538 }
539 #[test]
bindgen_test_layout_virtio_net_hdr_v1_hash()540 fn bindgen_test_layout_virtio_net_hdr_v1_hash() {
541     const UNINIT: ::std::mem::MaybeUninit<virtio_net_hdr_v1_hash> =
542         ::std::mem::MaybeUninit::uninit();
543     let ptr = UNINIT.as_ptr();
544     assert_eq!(
545         ::std::mem::size_of::<virtio_net_hdr_v1_hash>(),
546         20usize,
547         concat!("Size of: ", stringify!(virtio_net_hdr_v1_hash))
548     );
549     assert_eq!(
550         ::std::mem::align_of::<virtio_net_hdr_v1_hash>(),
551         4usize,
552         concat!("Alignment of ", stringify!(virtio_net_hdr_v1_hash))
553     );
554     assert_eq!(
555         unsafe { ::std::ptr::addr_of!((*ptr).hdr) as usize - ptr as usize },
556         0usize,
557         concat!(
558             "Offset of field: ",
559             stringify!(virtio_net_hdr_v1_hash),
560             "::",
561             stringify!(hdr)
562         )
563     );
564     assert_eq!(
565         unsafe { ::std::ptr::addr_of!((*ptr).hash_value) as usize - ptr as usize },
566         12usize,
567         concat!(
568             "Offset of field: ",
569             stringify!(virtio_net_hdr_v1_hash),
570             "::",
571             stringify!(hash_value)
572         )
573     );
574     assert_eq!(
575         unsafe { ::std::ptr::addr_of!((*ptr).hash_report) as usize - ptr as usize },
576         16usize,
577         concat!(
578             "Offset of field: ",
579             stringify!(virtio_net_hdr_v1_hash),
580             "::",
581             stringify!(hash_report)
582         )
583     );
584     assert_eq!(
585         unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize },
586         18usize,
587         concat!(
588             "Offset of field: ",
589             stringify!(virtio_net_hdr_v1_hash),
590             "::",
591             stringify!(padding)
592         )
593     );
594 }
595 impl Default for virtio_net_hdr_v1_hash {
default() -> Self596     fn default() -> Self {
597         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
598         unsafe {
599             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
600             s.assume_init()
601         }
602     }
603 }
604 #[repr(C)]
605 #[derive(Debug, Default, Copy, Clone, PartialEq)]
606 pub struct virtio_net_hdr {
607     pub flags: __u8,
608     pub gso_type: __u8,
609     pub hdr_len: __virtio16,
610     pub gso_size: __virtio16,
611     pub csum_start: __virtio16,
612     pub csum_offset: __virtio16,
613 }
614 #[test]
bindgen_test_layout_virtio_net_hdr()615 fn bindgen_test_layout_virtio_net_hdr() {
616     const UNINIT: ::std::mem::MaybeUninit<virtio_net_hdr> = ::std::mem::MaybeUninit::uninit();
617     let ptr = UNINIT.as_ptr();
618     assert_eq!(
619         ::std::mem::size_of::<virtio_net_hdr>(),
620         10usize,
621         concat!("Size of: ", stringify!(virtio_net_hdr))
622     );
623     assert_eq!(
624         ::std::mem::align_of::<virtio_net_hdr>(),
625         2usize,
626         concat!("Alignment of ", stringify!(virtio_net_hdr))
627     );
628     assert_eq!(
629         unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize },
630         0usize,
631         concat!(
632             "Offset of field: ",
633             stringify!(virtio_net_hdr),
634             "::",
635             stringify!(flags)
636         )
637     );
638     assert_eq!(
639         unsafe { ::std::ptr::addr_of!((*ptr).gso_type) as usize - ptr as usize },
640         1usize,
641         concat!(
642             "Offset of field: ",
643             stringify!(virtio_net_hdr),
644             "::",
645             stringify!(gso_type)
646         )
647     );
648     assert_eq!(
649         unsafe { ::std::ptr::addr_of!((*ptr).hdr_len) as usize - ptr as usize },
650         2usize,
651         concat!(
652             "Offset of field: ",
653             stringify!(virtio_net_hdr),
654             "::",
655             stringify!(hdr_len)
656         )
657     );
658     assert_eq!(
659         unsafe { ::std::ptr::addr_of!((*ptr).gso_size) as usize - ptr as usize },
660         4usize,
661         concat!(
662             "Offset of field: ",
663             stringify!(virtio_net_hdr),
664             "::",
665             stringify!(gso_size)
666         )
667     );
668     assert_eq!(
669         unsafe { ::std::ptr::addr_of!((*ptr).csum_start) as usize - ptr as usize },
670         6usize,
671         concat!(
672             "Offset of field: ",
673             stringify!(virtio_net_hdr),
674             "::",
675             stringify!(csum_start)
676         )
677     );
678     assert_eq!(
679         unsafe { ::std::ptr::addr_of!((*ptr).csum_offset) as usize - ptr as usize },
680         8usize,
681         concat!(
682             "Offset of field: ",
683             stringify!(virtio_net_hdr),
684             "::",
685             stringify!(csum_offset)
686         )
687     );
688 }
689 #[repr(C)]
690 #[derive(Debug, Default, Copy, Clone, PartialEq)]
691 pub struct virtio_net_hdr_mrg_rxbuf {
692     pub hdr: virtio_net_hdr,
693     pub num_buffers: __virtio16,
694 }
695 #[test]
bindgen_test_layout_virtio_net_hdr_mrg_rxbuf()696 fn bindgen_test_layout_virtio_net_hdr_mrg_rxbuf() {
697     const UNINIT: ::std::mem::MaybeUninit<virtio_net_hdr_mrg_rxbuf> =
698         ::std::mem::MaybeUninit::uninit();
699     let ptr = UNINIT.as_ptr();
700     assert_eq!(
701         ::std::mem::size_of::<virtio_net_hdr_mrg_rxbuf>(),
702         12usize,
703         concat!("Size of: ", stringify!(virtio_net_hdr_mrg_rxbuf))
704     );
705     assert_eq!(
706         ::std::mem::align_of::<virtio_net_hdr_mrg_rxbuf>(),
707         2usize,
708         concat!("Alignment of ", stringify!(virtio_net_hdr_mrg_rxbuf))
709     );
710     assert_eq!(
711         unsafe { ::std::ptr::addr_of!((*ptr).hdr) as usize - ptr as usize },
712         0usize,
713         concat!(
714             "Offset of field: ",
715             stringify!(virtio_net_hdr_mrg_rxbuf),
716             "::",
717             stringify!(hdr)
718         )
719     );
720     assert_eq!(
721         unsafe { ::std::ptr::addr_of!((*ptr).num_buffers) as usize - ptr as usize },
722         10usize,
723         concat!(
724             "Offset of field: ",
725             stringify!(virtio_net_hdr_mrg_rxbuf),
726             "::",
727             stringify!(num_buffers)
728         )
729     );
730 }
731 #[repr(C, packed)]
732 #[derive(Debug, Default, Copy, Clone, PartialEq)]
733 pub struct virtio_net_ctrl_hdr {
734     pub class: __u8,
735     pub cmd: __u8,
736 }
737 #[test]
bindgen_test_layout_virtio_net_ctrl_hdr()738 fn bindgen_test_layout_virtio_net_ctrl_hdr() {
739     const UNINIT: ::std::mem::MaybeUninit<virtio_net_ctrl_hdr> = ::std::mem::MaybeUninit::uninit();
740     let ptr = UNINIT.as_ptr();
741     assert_eq!(
742         ::std::mem::size_of::<virtio_net_ctrl_hdr>(),
743         2usize,
744         concat!("Size of: ", stringify!(virtio_net_ctrl_hdr))
745     );
746     assert_eq!(
747         ::std::mem::align_of::<virtio_net_ctrl_hdr>(),
748         1usize,
749         concat!("Alignment of ", stringify!(virtio_net_ctrl_hdr))
750     );
751     assert_eq!(
752         unsafe { ::std::ptr::addr_of!((*ptr).class) as usize - ptr as usize },
753         0usize,
754         concat!(
755             "Offset of field: ",
756             stringify!(virtio_net_ctrl_hdr),
757             "::",
758             stringify!(class)
759         )
760     );
761     assert_eq!(
762         unsafe { ::std::ptr::addr_of!((*ptr).cmd) as usize - ptr as usize },
763         1usize,
764         concat!(
765             "Offset of field: ",
766             stringify!(virtio_net_ctrl_hdr),
767             "::",
768             stringify!(cmd)
769         )
770     );
771 }
772 pub type virtio_net_ctrl_ack = __u8;
773 #[repr(C, packed)]
774 pub struct virtio_net_ctrl_mac {
775     pub entries: __virtio32,
776     pub macs: __IncompleteArrayField<[__u8; 6usize]>,
777 }
778 #[test]
bindgen_test_layout_virtio_net_ctrl_mac()779 fn bindgen_test_layout_virtio_net_ctrl_mac() {
780     const UNINIT: ::std::mem::MaybeUninit<virtio_net_ctrl_mac> = ::std::mem::MaybeUninit::uninit();
781     let ptr = UNINIT.as_ptr();
782     assert_eq!(
783         ::std::mem::size_of::<virtio_net_ctrl_mac>(),
784         4usize,
785         concat!("Size of: ", stringify!(virtio_net_ctrl_mac))
786     );
787     assert_eq!(
788         ::std::mem::align_of::<virtio_net_ctrl_mac>(),
789         1usize,
790         concat!("Alignment of ", stringify!(virtio_net_ctrl_mac))
791     );
792     assert_eq!(
793         unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize },
794         0usize,
795         concat!(
796             "Offset of field: ",
797             stringify!(virtio_net_ctrl_mac),
798             "::",
799             stringify!(entries)
800         )
801     );
802     assert_eq!(
803         unsafe { ::std::ptr::addr_of!((*ptr).macs) as usize - ptr as usize },
804         4usize,
805         concat!(
806             "Offset of field: ",
807             stringify!(virtio_net_ctrl_mac),
808             "::",
809             stringify!(macs)
810         )
811     );
812 }
813 impl Default for virtio_net_ctrl_mac {
default() -> Self814     fn default() -> Self {
815         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
816         unsafe {
817             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
818             s.assume_init()
819         }
820     }
821 }
822 #[repr(C)]
823 #[derive(Debug, Default, Copy, Clone, PartialEq)]
824 pub struct virtio_net_ctrl_mq {
825     pub virtqueue_pairs: __virtio16,
826 }
827 #[test]
bindgen_test_layout_virtio_net_ctrl_mq()828 fn bindgen_test_layout_virtio_net_ctrl_mq() {
829     const UNINIT: ::std::mem::MaybeUninit<virtio_net_ctrl_mq> = ::std::mem::MaybeUninit::uninit();
830     let ptr = UNINIT.as_ptr();
831     assert_eq!(
832         ::std::mem::size_of::<virtio_net_ctrl_mq>(),
833         2usize,
834         concat!("Size of: ", stringify!(virtio_net_ctrl_mq))
835     );
836     assert_eq!(
837         ::std::mem::align_of::<virtio_net_ctrl_mq>(),
838         2usize,
839         concat!("Alignment of ", stringify!(virtio_net_ctrl_mq))
840     );
841     assert_eq!(
842         unsafe { ::std::ptr::addr_of!((*ptr).virtqueue_pairs) as usize - ptr as usize },
843         0usize,
844         concat!(
845             "Offset of field: ",
846             stringify!(virtio_net_ctrl_mq),
847             "::",
848             stringify!(virtqueue_pairs)
849         )
850     );
851 }
852 #[repr(C)]
853 #[derive(Debug, Default)]
854 pub struct virtio_net_rss_config {
855     pub hash_types: __le32,
856     pub indirection_table_mask: __le16,
857     pub unclassified_queue: __le16,
858     pub indirection_table: [__le16; 1usize],
859     pub max_tx_vq: __le16,
860     pub hash_key_length: __u8,
861     pub hash_key_data: __IncompleteArrayField<__u8>,
862 }
863 #[test]
bindgen_test_layout_virtio_net_rss_config()864 fn bindgen_test_layout_virtio_net_rss_config() {
865     const UNINIT: ::std::mem::MaybeUninit<virtio_net_rss_config> =
866         ::std::mem::MaybeUninit::uninit();
867     let ptr = UNINIT.as_ptr();
868     assert_eq!(
869         ::std::mem::size_of::<virtio_net_rss_config>(),
870         16usize,
871         concat!("Size of: ", stringify!(virtio_net_rss_config))
872     );
873     assert_eq!(
874         ::std::mem::align_of::<virtio_net_rss_config>(),
875         4usize,
876         concat!("Alignment of ", stringify!(virtio_net_rss_config))
877     );
878     assert_eq!(
879         unsafe { ::std::ptr::addr_of!((*ptr).hash_types) as usize - ptr as usize },
880         0usize,
881         concat!(
882             "Offset of field: ",
883             stringify!(virtio_net_rss_config),
884             "::",
885             stringify!(hash_types)
886         )
887     );
888     assert_eq!(
889         unsafe { ::std::ptr::addr_of!((*ptr).indirection_table_mask) as usize - ptr as usize },
890         4usize,
891         concat!(
892             "Offset of field: ",
893             stringify!(virtio_net_rss_config),
894             "::",
895             stringify!(indirection_table_mask)
896         )
897     );
898     assert_eq!(
899         unsafe { ::std::ptr::addr_of!((*ptr).unclassified_queue) as usize - ptr as usize },
900         6usize,
901         concat!(
902             "Offset of field: ",
903             stringify!(virtio_net_rss_config),
904             "::",
905             stringify!(unclassified_queue)
906         )
907     );
908     assert_eq!(
909         unsafe { ::std::ptr::addr_of!((*ptr).indirection_table) as usize - ptr as usize },
910         8usize,
911         concat!(
912             "Offset of field: ",
913             stringify!(virtio_net_rss_config),
914             "::",
915             stringify!(indirection_table)
916         )
917     );
918     assert_eq!(
919         unsafe { ::std::ptr::addr_of!((*ptr).max_tx_vq) as usize - ptr as usize },
920         10usize,
921         concat!(
922             "Offset of field: ",
923             stringify!(virtio_net_rss_config),
924             "::",
925             stringify!(max_tx_vq)
926         )
927     );
928     assert_eq!(
929         unsafe { ::std::ptr::addr_of!((*ptr).hash_key_length) as usize - ptr as usize },
930         12usize,
931         concat!(
932             "Offset of field: ",
933             stringify!(virtio_net_rss_config),
934             "::",
935             stringify!(hash_key_length)
936         )
937     );
938     assert_eq!(
939         unsafe { ::std::ptr::addr_of!((*ptr).hash_key_data) as usize - ptr as usize },
940         13usize,
941         concat!(
942             "Offset of field: ",
943             stringify!(virtio_net_rss_config),
944             "::",
945             stringify!(hash_key_data)
946         )
947     );
948 }
949 #[repr(C)]
950 #[derive(Debug, Default)]
951 pub struct virtio_net_hash_config {
952     pub hash_types: __le32,
953     pub reserved: [__le16; 4usize],
954     pub hash_key_length: __u8,
955     pub hash_key_data: __IncompleteArrayField<__u8>,
956 }
957 #[test]
bindgen_test_layout_virtio_net_hash_config()958 fn bindgen_test_layout_virtio_net_hash_config() {
959     const UNINIT: ::std::mem::MaybeUninit<virtio_net_hash_config> =
960         ::std::mem::MaybeUninit::uninit();
961     let ptr = UNINIT.as_ptr();
962     assert_eq!(
963         ::std::mem::size_of::<virtio_net_hash_config>(),
964         16usize,
965         concat!("Size of: ", stringify!(virtio_net_hash_config))
966     );
967     assert_eq!(
968         ::std::mem::align_of::<virtio_net_hash_config>(),
969         4usize,
970         concat!("Alignment of ", stringify!(virtio_net_hash_config))
971     );
972     assert_eq!(
973         unsafe { ::std::ptr::addr_of!((*ptr).hash_types) as usize - ptr as usize },
974         0usize,
975         concat!(
976             "Offset of field: ",
977             stringify!(virtio_net_hash_config),
978             "::",
979             stringify!(hash_types)
980         )
981     );
982     assert_eq!(
983         unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize },
984         4usize,
985         concat!(
986             "Offset of field: ",
987             stringify!(virtio_net_hash_config),
988             "::",
989             stringify!(reserved)
990         )
991     );
992     assert_eq!(
993         unsafe { ::std::ptr::addr_of!((*ptr).hash_key_length) as usize - ptr as usize },
994         12usize,
995         concat!(
996             "Offset of field: ",
997             stringify!(virtio_net_hash_config),
998             "::",
999             stringify!(hash_key_length)
1000         )
1001     );
1002     assert_eq!(
1003         unsafe { ::std::ptr::addr_of!((*ptr).hash_key_data) as usize - ptr as usize },
1004         13usize,
1005         concat!(
1006             "Offset of field: ",
1007             stringify!(virtio_net_hash_config),
1008             "::",
1009             stringify!(hash_key_data)
1010         )
1011     );
1012 }
1013 #[repr(C)]
1014 #[derive(Debug, Default, Copy, Clone, PartialEq)]
1015 pub struct virtio_net_ctrl_coal_tx {
1016     pub tx_max_packets: __le32,
1017     pub tx_usecs: __le32,
1018 }
1019 #[test]
bindgen_test_layout_virtio_net_ctrl_coal_tx()1020 fn bindgen_test_layout_virtio_net_ctrl_coal_tx() {
1021     const UNINIT: ::std::mem::MaybeUninit<virtio_net_ctrl_coal_tx> =
1022         ::std::mem::MaybeUninit::uninit();
1023     let ptr = UNINIT.as_ptr();
1024     assert_eq!(
1025         ::std::mem::size_of::<virtio_net_ctrl_coal_tx>(),
1026         8usize,
1027         concat!("Size of: ", stringify!(virtio_net_ctrl_coal_tx))
1028     );
1029     assert_eq!(
1030         ::std::mem::align_of::<virtio_net_ctrl_coal_tx>(),
1031         4usize,
1032         concat!("Alignment of ", stringify!(virtio_net_ctrl_coal_tx))
1033     );
1034     assert_eq!(
1035         unsafe { ::std::ptr::addr_of!((*ptr).tx_max_packets) as usize - ptr as usize },
1036         0usize,
1037         concat!(
1038             "Offset of field: ",
1039             stringify!(virtio_net_ctrl_coal_tx),
1040             "::",
1041             stringify!(tx_max_packets)
1042         )
1043     );
1044     assert_eq!(
1045         unsafe { ::std::ptr::addr_of!((*ptr).tx_usecs) as usize - ptr as usize },
1046         4usize,
1047         concat!(
1048             "Offset of field: ",
1049             stringify!(virtio_net_ctrl_coal_tx),
1050             "::",
1051             stringify!(tx_usecs)
1052         )
1053     );
1054 }
1055 #[repr(C)]
1056 #[derive(Debug, Default, Copy, Clone, PartialEq)]
1057 pub struct virtio_net_ctrl_coal_rx {
1058     pub rx_max_packets: __le32,
1059     pub rx_usecs: __le32,
1060 }
1061 #[test]
bindgen_test_layout_virtio_net_ctrl_coal_rx()1062 fn bindgen_test_layout_virtio_net_ctrl_coal_rx() {
1063     const UNINIT: ::std::mem::MaybeUninit<virtio_net_ctrl_coal_rx> =
1064         ::std::mem::MaybeUninit::uninit();
1065     let ptr = UNINIT.as_ptr();
1066     assert_eq!(
1067         ::std::mem::size_of::<virtio_net_ctrl_coal_rx>(),
1068         8usize,
1069         concat!("Size of: ", stringify!(virtio_net_ctrl_coal_rx))
1070     );
1071     assert_eq!(
1072         ::std::mem::align_of::<virtio_net_ctrl_coal_rx>(),
1073         4usize,
1074         concat!("Alignment of ", stringify!(virtio_net_ctrl_coal_rx))
1075     );
1076     assert_eq!(
1077         unsafe { ::std::ptr::addr_of!((*ptr).rx_max_packets) as usize - ptr as usize },
1078         0usize,
1079         concat!(
1080             "Offset of field: ",
1081             stringify!(virtio_net_ctrl_coal_rx),
1082             "::",
1083             stringify!(rx_max_packets)
1084         )
1085     );
1086     assert_eq!(
1087         unsafe { ::std::ptr::addr_of!((*ptr).rx_usecs) as usize - ptr as usize },
1088         4usize,
1089         concat!(
1090             "Offset of field: ",
1091             stringify!(virtio_net_ctrl_coal_rx),
1092             "::",
1093             stringify!(rx_usecs)
1094         )
1095     );
1096 }
1097