/* automatically generated by rust-bindgen 0.63.0 */ #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::std::marker::PhantomData, [T; 0]); impl __IncompleteArrayField { #[inline] pub const fn new() -> Self { __IncompleteArrayField(::std::marker::PhantomData, []) } #[inline] pub fn as_ptr(&self) -> *const T { self as *const _ as *const T } #[inline] pub fn as_mut_ptr(&mut self) -> *mut T { self as *mut _ as *mut T } #[inline] pub unsafe fn as_slice(&self, len: usize) -> &[T] { ::std::slice::from_raw_parts(self.as_ptr(), len) } #[inline] pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } } impl ::std::fmt::Debug for __IncompleteArrayField { fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { fmt.write_str("__IncompleteArrayField") } } pub const VIRTIO_NET_F_CSUM: u32 = 0; pub const VIRTIO_NET_F_GUEST_CSUM: u32 = 1; pub const VIRTIO_NET_F_CTRL_GUEST_OFFLOADS: u32 = 2; pub const VIRTIO_NET_F_MTU: u32 = 3; pub const VIRTIO_NET_F_MAC: u32 = 5; pub const VIRTIO_NET_F_GUEST_TSO4: u32 = 7; pub const VIRTIO_NET_F_GUEST_TSO6: u32 = 8; pub const VIRTIO_NET_F_GUEST_ECN: u32 = 9; pub const VIRTIO_NET_F_GUEST_UFO: u32 = 10; pub const VIRTIO_NET_F_HOST_TSO4: u32 = 11; pub const VIRTIO_NET_F_HOST_TSO6: u32 = 12; pub const VIRTIO_NET_F_HOST_ECN: u32 = 13; pub const VIRTIO_NET_F_HOST_UFO: u32 = 14; pub const VIRTIO_NET_F_MRG_RXBUF: u32 = 15; pub const VIRTIO_NET_F_STATUS: u32 = 16; pub const VIRTIO_NET_F_CTRL_VQ: u32 = 17; pub const VIRTIO_NET_F_CTRL_RX: u32 = 18; pub const VIRTIO_NET_F_CTRL_VLAN: u32 = 19; pub const VIRTIO_NET_F_CTRL_RX_EXTRA: u32 = 20; pub const VIRTIO_NET_F_GUEST_ANNOUNCE: u32 = 21; pub const VIRTIO_NET_F_MQ: u32 = 22; pub const VIRTIO_NET_F_CTRL_MAC_ADDR: u32 = 23; pub const VIRTIO_NET_F_NOTF_COAL: u32 = 53; pub const VIRTIO_NET_F_GUEST_USO4: u32 = 54; pub const VIRTIO_NET_F_GUEST_USO6: u32 = 55; pub const VIRTIO_NET_F_HOST_USO: u32 = 56; pub const VIRTIO_NET_F_HASH_REPORT: u32 = 57; pub const VIRTIO_NET_F_GUEST_HDRLEN: u32 = 59; pub const VIRTIO_NET_F_RSS: u32 = 60; pub const VIRTIO_NET_F_RSC_EXT: u32 = 61; pub const VIRTIO_NET_F_STANDBY: u32 = 62; pub const VIRTIO_NET_F_SPEED_DUPLEX: u32 = 63; pub const VIRTIO_NET_F_GSO: u32 = 6; pub const VIRTIO_NET_S_LINK_UP: u32 = 1; pub const VIRTIO_NET_S_ANNOUNCE: u32 = 2; pub const VIRTIO_NET_RSS_HASH_TYPE_IPv4: u32 = 1; pub const VIRTIO_NET_RSS_HASH_TYPE_TCPv4: u32 = 2; pub const VIRTIO_NET_RSS_HASH_TYPE_UDPv4: u32 = 4; pub const VIRTIO_NET_RSS_HASH_TYPE_IPv6: u32 = 8; pub const VIRTIO_NET_RSS_HASH_TYPE_TCPv6: u32 = 16; pub const VIRTIO_NET_RSS_HASH_TYPE_UDPv6: u32 = 32; pub const VIRTIO_NET_RSS_HASH_TYPE_IP_EX: u32 = 64; pub const VIRTIO_NET_RSS_HASH_TYPE_TCP_EX: u32 = 128; pub const VIRTIO_NET_RSS_HASH_TYPE_UDP_EX: u32 = 256; pub const VIRTIO_NET_HDR_F_NEEDS_CSUM: u32 = 1; pub const VIRTIO_NET_HDR_F_DATA_VALID: u32 = 2; pub const VIRTIO_NET_HDR_F_RSC_INFO: u32 = 4; pub const VIRTIO_NET_HDR_GSO_NONE: u32 = 0; pub const VIRTIO_NET_HDR_GSO_TCPV4: u32 = 1; pub const VIRTIO_NET_HDR_GSO_UDP: u32 = 3; pub const VIRTIO_NET_HDR_GSO_TCPV6: u32 = 4; pub const VIRTIO_NET_HDR_GSO_UDP_L4: u32 = 5; pub const VIRTIO_NET_HDR_GSO_ECN: u32 = 128; pub const VIRTIO_NET_HASH_REPORT_NONE: u32 = 0; pub const VIRTIO_NET_HASH_REPORT_IPv4: u32 = 1; pub const VIRTIO_NET_HASH_REPORT_TCPv4: u32 = 2; pub const VIRTIO_NET_HASH_REPORT_UDPv4: u32 = 3; pub const VIRTIO_NET_HASH_REPORT_IPv6: u32 = 4; pub const VIRTIO_NET_HASH_REPORT_TCPv6: u32 = 5; pub const VIRTIO_NET_HASH_REPORT_UDPv6: u32 = 6; pub const VIRTIO_NET_HASH_REPORT_IPv6_EX: u32 = 7; pub const VIRTIO_NET_HASH_REPORT_TCPv6_EX: u32 = 8; pub const VIRTIO_NET_HASH_REPORT_UDPv6_EX: u32 = 9; pub const VIRTIO_NET_OK: u32 = 0; pub const VIRTIO_NET_ERR: u32 = 1; pub const VIRTIO_NET_CTRL_RX: u32 = 0; pub const VIRTIO_NET_CTRL_RX_PROMISC: u32 = 0; pub const VIRTIO_NET_CTRL_RX_ALLMULTI: u32 = 1; pub const VIRTIO_NET_CTRL_RX_ALLUNI: u32 = 2; pub const VIRTIO_NET_CTRL_RX_NOMULTI: u32 = 3; pub const VIRTIO_NET_CTRL_RX_NOUNI: u32 = 4; pub const VIRTIO_NET_CTRL_RX_NOBCAST: u32 = 5; pub const VIRTIO_NET_CTRL_MAC: u32 = 1; pub const VIRTIO_NET_CTRL_MAC_TABLE_SET: u32 = 0; pub const VIRTIO_NET_CTRL_MAC_ADDR_SET: u32 = 1; pub const VIRTIO_NET_CTRL_VLAN: u32 = 2; pub const VIRTIO_NET_CTRL_VLAN_ADD: u32 = 0; pub const VIRTIO_NET_CTRL_VLAN_DEL: u32 = 1; pub const VIRTIO_NET_CTRL_ANNOUNCE: u32 = 3; pub const VIRTIO_NET_CTRL_ANNOUNCE_ACK: u32 = 0; pub const VIRTIO_NET_CTRL_MQ: u32 = 4; pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET: u32 = 0; pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN: u32 = 1; pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX: u32 = 32768; pub const VIRTIO_NET_CTRL_MQ_RSS_CONFIG: u32 = 1; pub const VIRTIO_NET_CTRL_MQ_HASH_CONFIG: u32 = 2; pub const VIRTIO_NET_CTRL_GUEST_OFFLOADS: u32 = 5; pub const VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET: u32 = 0; pub const VIRTIO_NET_CTRL_NOTF_COAL: u32 = 6; pub const VIRTIO_NET_CTRL_NOTF_COAL_TX_SET: u32 = 0; pub const VIRTIO_NET_CTRL_NOTF_COAL_RX_SET: u32 = 1; pub type __u8 = ::std::os::raw::c_uchar; pub type __u16 = ::std::os::raw::c_ushort; pub type __u32 = ::std::os::raw::c_uint; pub type __le16 = __u16; pub type __le32 = __u32; pub type __virtio16 = __u16; pub type __virtio32 = __u32; #[repr(C, packed)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct virtio_net_config { pub mac: [__u8; 6usize], pub status: __virtio16, pub max_virtqueue_pairs: __virtio16, pub mtu: __virtio16, pub speed: __le32, pub duplex: __u8, pub rss_max_key_size: __u8, pub rss_max_indirection_table_length: __le16, pub supported_hash_types: __le32, } #[test] fn bindgen_test_layout_virtio_net_config() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 24usize, concat!("Size of: ", stringify!(virtio_net_config)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(virtio_net_config)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mac) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(virtio_net_config), "::", stringify!(mac) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize }, 6usize, concat!( "Offset of field: ", stringify!(virtio_net_config), "::", stringify!(status) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).max_virtqueue_pairs) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(virtio_net_config), "::", stringify!(max_virtqueue_pairs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mtu) as usize - ptr as usize }, 10usize, concat!( "Offset of field: ", stringify!(virtio_net_config), "::", stringify!(mtu) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).speed) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(virtio_net_config), "::", stringify!(speed) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).duplex) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(virtio_net_config), "::", stringify!(duplex) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rss_max_key_size) as usize - ptr as usize }, 17usize, concat!( "Offset of field: ", stringify!(virtio_net_config), "::", stringify!(rss_max_key_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rss_max_indirection_table_length) as usize - ptr as usize }, 18usize, concat!( "Offset of field: ", stringify!(virtio_net_config), "::", stringify!(rss_max_indirection_table_length) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).supported_hash_types) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(virtio_net_config), "::", stringify!(supported_hash_types) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct virtio_net_hdr_v1 { pub flags: __u8, pub gso_type: __u8, pub hdr_len: __virtio16, pub gso_size: __virtio16, pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1, pub num_buffers: __virtio16, } #[repr(C)] #[derive(Copy, Clone)] pub union virtio_net_hdr_v1__bindgen_ty_1 { pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1, pub csum: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2, pub rsc: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1 { pub csum_start: __virtio16, pub csum_offset: __virtio16, } #[test] fn bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 4usize, concat!( "Size of: ", stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 2usize, concat!( "Alignment of ", stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).csum_start) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1), "::", stringify!(csum_start) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).csum_offset) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1), "::", stringify!(csum_offset) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2 { pub start: __virtio16, pub offset: __virtio16, } #[test] fn bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 4usize, concat!( "Size of: ", stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2) ) ); assert_eq!( ::std::mem::align_of::(), 2usize, concat!( "Alignment of ", stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).start) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2), "::", stringify!(start) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2), "::", stringify!(offset) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3 { pub segments: __le16, pub dup_acks: __le16, } #[test] fn bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 4usize, concat!( "Size of: ", stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3) ) ); assert_eq!( ::std::mem::align_of::(), 2usize, concat!( "Alignment of ", stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).segments) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3), "::", stringify!(segments) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dup_acks) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3), "::", stringify!(dup_acks) ) ); } #[test] fn bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 4usize, concat!("Size of: ", stringify!(virtio_net_hdr_v1__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 2usize, concat!("Alignment of ", stringify!(virtio_net_hdr_v1__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).csum) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_v1__bindgen_ty_1), "::", stringify!(csum) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rsc) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_v1__bindgen_ty_1), "::", stringify!(rsc) ) ); } impl Default for virtio_net_hdr_v1__bindgen_ty_1 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[test] fn bindgen_test_layout_virtio_net_hdr_v1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 12usize, concat!("Size of: ", stringify!(virtio_net_hdr_v1)) ); assert_eq!( ::std::mem::align_of::(), 2usize, concat!("Alignment of ", stringify!(virtio_net_hdr_v1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_v1), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gso_type) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_v1), "::", stringify!(gso_type) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hdr_len) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_v1), "::", stringify!(hdr_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gso_size) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_v1), "::", stringify!(gso_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).num_buffers) as usize - ptr as usize }, 10usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_v1), "::", stringify!(num_buffers) ) ); } impl Default for virtio_net_hdr_v1 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Copy, Clone)] pub struct virtio_net_hdr_v1_hash { pub hdr: virtio_net_hdr_v1, pub hash_value: __le32, pub hash_report: __le16, pub padding: __le16, } #[test] fn bindgen_test_layout_virtio_net_hdr_v1_hash() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 20usize, concat!("Size of: ", stringify!(virtio_net_hdr_v1_hash)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(virtio_net_hdr_v1_hash)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hdr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_v1_hash), "::", stringify!(hdr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hash_value) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_v1_hash), "::", stringify!(hash_value) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hash_report) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_v1_hash), "::", stringify!(hash_report) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize }, 18usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_v1_hash), "::", stringify!(padding) ) ); } impl Default for virtio_net_hdr_v1_hash { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct virtio_net_hdr { pub flags: __u8, pub gso_type: __u8, pub hdr_len: __virtio16, pub gso_size: __virtio16, pub csum_start: __virtio16, pub csum_offset: __virtio16, } #[test] fn bindgen_test_layout_virtio_net_hdr() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 10usize, concat!("Size of: ", stringify!(virtio_net_hdr)) ); assert_eq!( ::std::mem::align_of::(), 2usize, concat!("Alignment of ", stringify!(virtio_net_hdr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gso_type) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr), "::", stringify!(gso_type) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hdr_len) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr), "::", stringify!(hdr_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gso_size) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr), "::", stringify!(gso_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).csum_start) as usize - ptr as usize }, 6usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr), "::", stringify!(csum_start) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).csum_offset) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr), "::", stringify!(csum_offset) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct virtio_net_hdr_mrg_rxbuf { pub hdr: virtio_net_hdr, pub num_buffers: __virtio16, } #[test] fn bindgen_test_layout_virtio_net_hdr_mrg_rxbuf() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 12usize, concat!("Size of: ", stringify!(virtio_net_hdr_mrg_rxbuf)) ); assert_eq!( ::std::mem::align_of::(), 2usize, concat!("Alignment of ", stringify!(virtio_net_hdr_mrg_rxbuf)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hdr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_mrg_rxbuf), "::", stringify!(hdr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).num_buffers) as usize - ptr as usize }, 10usize, concat!( "Offset of field: ", stringify!(virtio_net_hdr_mrg_rxbuf), "::", stringify!(num_buffers) ) ); } #[repr(C, packed)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct virtio_net_ctrl_hdr { pub class: __u8, pub cmd: __u8, } #[test] fn bindgen_test_layout_virtio_net_ctrl_hdr() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 2usize, concat!("Size of: ", stringify!(virtio_net_ctrl_hdr)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(virtio_net_ctrl_hdr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).class) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(virtio_net_ctrl_hdr), "::", stringify!(class) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cmd) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(virtio_net_ctrl_hdr), "::", stringify!(cmd) ) ); } pub type virtio_net_ctrl_ack = __u8; #[repr(C, packed)] pub struct virtio_net_ctrl_mac { pub entries: __virtio32, pub macs: __IncompleteArrayField<[__u8; 6usize]>, } #[test] fn bindgen_test_layout_virtio_net_ctrl_mac() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 4usize, concat!("Size of: ", stringify!(virtio_net_ctrl_mac)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(virtio_net_ctrl_mac)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(virtio_net_ctrl_mac), "::", stringify!(entries) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).macs) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(virtio_net_ctrl_mac), "::", stringify!(macs) ) ); } impl Default for virtio_net_ctrl_mac { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct virtio_net_ctrl_mq { pub virtqueue_pairs: __virtio16, } #[test] fn bindgen_test_layout_virtio_net_ctrl_mq() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 2usize, concat!("Size of: ", stringify!(virtio_net_ctrl_mq)) ); assert_eq!( ::std::mem::align_of::(), 2usize, concat!("Alignment of ", stringify!(virtio_net_ctrl_mq)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).virtqueue_pairs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(virtio_net_ctrl_mq), "::", stringify!(virtqueue_pairs) ) ); } #[repr(C)] #[derive(Debug, Default)] pub struct virtio_net_rss_config { pub hash_types: __le32, pub indirection_table_mask: __le16, pub unclassified_queue: __le16, pub indirection_table: [__le16; 1usize], pub max_tx_vq: __le16, pub hash_key_length: __u8, pub hash_key_data: __IncompleteArrayField<__u8>, } #[test] fn bindgen_test_layout_virtio_net_rss_config() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, concat!("Size of: ", stringify!(virtio_net_rss_config)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(virtio_net_rss_config)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hash_types) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(virtio_net_rss_config), "::", stringify!(hash_types) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).indirection_table_mask) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(virtio_net_rss_config), "::", stringify!(indirection_table_mask) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).unclassified_queue) as usize - ptr as usize }, 6usize, concat!( "Offset of field: ", stringify!(virtio_net_rss_config), "::", stringify!(unclassified_queue) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).indirection_table) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(virtio_net_rss_config), "::", stringify!(indirection_table) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).max_tx_vq) as usize - ptr as usize }, 10usize, concat!( "Offset of field: ", stringify!(virtio_net_rss_config), "::", stringify!(max_tx_vq) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hash_key_length) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(virtio_net_rss_config), "::", stringify!(hash_key_length) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hash_key_data) as usize - ptr as usize }, 13usize, concat!( "Offset of field: ", stringify!(virtio_net_rss_config), "::", stringify!(hash_key_data) ) ); } #[repr(C)] #[derive(Debug, Default)] pub struct virtio_net_hash_config { pub hash_types: __le32, pub reserved: [__le16; 4usize], pub hash_key_length: __u8, pub hash_key_data: __IncompleteArrayField<__u8>, } #[test] fn bindgen_test_layout_virtio_net_hash_config() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, concat!("Size of: ", stringify!(virtio_net_hash_config)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(virtio_net_hash_config)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hash_types) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(virtio_net_hash_config), "::", stringify!(hash_types) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(virtio_net_hash_config), "::", stringify!(reserved) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hash_key_length) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(virtio_net_hash_config), "::", stringify!(hash_key_length) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hash_key_data) as usize - ptr as usize }, 13usize, concat!( "Offset of field: ", stringify!(virtio_net_hash_config), "::", stringify!(hash_key_data) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct virtio_net_ctrl_coal_tx { pub tx_max_packets: __le32, pub tx_usecs: __le32, } #[test] fn bindgen_test_layout_virtio_net_ctrl_coal_tx() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(virtio_net_ctrl_coal_tx)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(virtio_net_ctrl_coal_tx)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).tx_max_packets) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(virtio_net_ctrl_coal_tx), "::", stringify!(tx_max_packets) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).tx_usecs) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(virtio_net_ctrl_coal_tx), "::", stringify!(tx_usecs) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct virtio_net_ctrl_coal_rx { pub rx_max_packets: __le32, pub rx_usecs: __le32, } #[test] fn bindgen_test_layout_virtio_net_ctrl_coal_rx() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(virtio_net_ctrl_coal_rx)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(virtio_net_ctrl_coal_rx)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rx_max_packets) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(virtio_net_ctrl_coal_rx), "::", stringify!(rx_max_packets) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rx_usecs) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(virtio_net_ctrl_coal_rx), "::", stringify!(rx_usecs) ) ); }