1 /* automatically generated by tools/bindgen-all-the-things */ 2 3 #![allow(clippy::missing_safety_doc)] 4 #![allow(clippy::undocumented_unsafe_blocks)] 5 #![allow(clippy::upper_case_acronyms)] 6 #![allow(non_upper_case_globals)] 7 #![allow(non_camel_case_types)] 8 #![allow(non_snake_case)] 9 #![allow(dead_code)] 10 11 // Added by virtio_sys/bindgen.sh 12 use zerocopy::AsBytes; 13 use zerocopy::FromBytes; 14 use zerocopy::FromZeroes; 15 16 #[repr(C)] 17 #[derive(Default)] 18 pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]); 19 impl<T> __IncompleteArrayField<T> { 20 #[inline] new() -> Self21 pub const fn new() -> Self { 22 __IncompleteArrayField(::std::marker::PhantomData, []) 23 } 24 #[inline] as_ptr(&self) -> *const T25 pub fn as_ptr(&self) -> *const T { 26 self as *const _ as *const T 27 } 28 #[inline] as_mut_ptr(&mut self) -> *mut T29 pub fn as_mut_ptr(&mut self) -> *mut T { 30 self as *mut _ as *mut T 31 } 32 #[inline] as_slice(&self, len: usize) -> &[T]33 pub unsafe fn as_slice(&self, len: usize) -> &[T] { 34 ::std::slice::from_raw_parts(self.as_ptr(), len) 35 } 36 #[inline] as_mut_slice(&mut self, len: usize) -> &mut [T]37 pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { 38 ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) 39 } 40 } 41 impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> { fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result42 fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { 43 fmt.write_str("__IncompleteArrayField") 44 } 45 } 46 pub const VIRTIO_NET_F_CSUM: u32 = 0; 47 pub const VIRTIO_NET_F_GUEST_CSUM: u32 = 1; 48 pub const VIRTIO_NET_F_CTRL_GUEST_OFFLOADS: u32 = 2; 49 pub const VIRTIO_NET_F_MTU: u32 = 3; 50 pub const VIRTIO_NET_F_MAC: u32 = 5; 51 pub const VIRTIO_NET_F_GUEST_TSO4: u32 = 7; 52 pub const VIRTIO_NET_F_GUEST_TSO6: u32 = 8; 53 pub const VIRTIO_NET_F_GUEST_ECN: u32 = 9; 54 pub const VIRTIO_NET_F_GUEST_UFO: u32 = 10; 55 pub const VIRTIO_NET_F_HOST_TSO4: u32 = 11; 56 pub const VIRTIO_NET_F_HOST_TSO6: u32 = 12; 57 pub const VIRTIO_NET_F_HOST_ECN: u32 = 13; 58 pub const VIRTIO_NET_F_HOST_UFO: u32 = 14; 59 pub const VIRTIO_NET_F_MRG_RXBUF: u32 = 15; 60 pub const VIRTIO_NET_F_STATUS: u32 = 16; 61 pub const VIRTIO_NET_F_CTRL_VQ: u32 = 17; 62 pub const VIRTIO_NET_F_CTRL_RX: u32 = 18; 63 pub const VIRTIO_NET_F_CTRL_VLAN: u32 = 19; 64 pub const VIRTIO_NET_F_CTRL_RX_EXTRA: u32 = 20; 65 pub const VIRTIO_NET_F_GUEST_ANNOUNCE: u32 = 21; 66 pub const VIRTIO_NET_F_MQ: u32 = 22; 67 pub const VIRTIO_NET_F_CTRL_MAC_ADDR: u32 = 23; 68 pub const VIRTIO_NET_F_VQ_NOTF_COAL: u32 = 52; 69 pub const VIRTIO_NET_F_NOTF_COAL: u32 = 53; 70 pub const VIRTIO_NET_F_GUEST_USO4: u32 = 54; 71 pub const VIRTIO_NET_F_GUEST_USO6: u32 = 55; 72 pub const VIRTIO_NET_F_HOST_USO: u32 = 56; 73 pub const VIRTIO_NET_F_HASH_REPORT: u32 = 57; 74 pub const VIRTIO_NET_F_GUEST_HDRLEN: u32 = 59; 75 pub const VIRTIO_NET_F_RSS: u32 = 60; 76 pub const VIRTIO_NET_F_RSC_EXT: u32 = 61; 77 pub const VIRTIO_NET_F_STANDBY: u32 = 62; 78 pub const VIRTIO_NET_F_SPEED_DUPLEX: u32 = 63; 79 pub const VIRTIO_NET_F_GSO: u32 = 6; 80 pub const VIRTIO_NET_S_LINK_UP: u32 = 1; 81 pub const VIRTIO_NET_S_ANNOUNCE: u32 = 2; 82 pub const VIRTIO_NET_RSS_HASH_TYPE_IPv4: u32 = 1; 83 pub const VIRTIO_NET_RSS_HASH_TYPE_TCPv4: u32 = 2; 84 pub const VIRTIO_NET_RSS_HASH_TYPE_UDPv4: u32 = 4; 85 pub const VIRTIO_NET_RSS_HASH_TYPE_IPv6: u32 = 8; 86 pub const VIRTIO_NET_RSS_HASH_TYPE_TCPv6: u32 = 16; 87 pub const VIRTIO_NET_RSS_HASH_TYPE_UDPv6: u32 = 32; 88 pub const VIRTIO_NET_RSS_HASH_TYPE_IP_EX: u32 = 64; 89 pub const VIRTIO_NET_RSS_HASH_TYPE_TCP_EX: u32 = 128; 90 pub const VIRTIO_NET_RSS_HASH_TYPE_UDP_EX: u32 = 256; 91 pub const VIRTIO_NET_HDR_F_NEEDS_CSUM: u32 = 1; 92 pub const VIRTIO_NET_HDR_F_DATA_VALID: u32 = 2; 93 pub const VIRTIO_NET_HDR_F_RSC_INFO: u32 = 4; 94 pub const VIRTIO_NET_HDR_GSO_NONE: u32 = 0; 95 pub const VIRTIO_NET_HDR_GSO_TCPV4: u32 = 1; 96 pub const VIRTIO_NET_HDR_GSO_UDP: u32 = 3; 97 pub const VIRTIO_NET_HDR_GSO_TCPV6: u32 = 4; 98 pub const VIRTIO_NET_HDR_GSO_UDP_L4: u32 = 5; 99 pub const VIRTIO_NET_HDR_GSO_ECN: u32 = 128; 100 pub const VIRTIO_NET_HASH_REPORT_NONE: u32 = 0; 101 pub const VIRTIO_NET_HASH_REPORT_IPv4: u32 = 1; 102 pub const VIRTIO_NET_HASH_REPORT_TCPv4: u32 = 2; 103 pub const VIRTIO_NET_HASH_REPORT_UDPv4: u32 = 3; 104 pub const VIRTIO_NET_HASH_REPORT_IPv6: u32 = 4; 105 pub const VIRTIO_NET_HASH_REPORT_TCPv6: u32 = 5; 106 pub const VIRTIO_NET_HASH_REPORT_UDPv6: u32 = 6; 107 pub const VIRTIO_NET_HASH_REPORT_IPv6_EX: u32 = 7; 108 pub const VIRTIO_NET_HASH_REPORT_TCPv6_EX: u32 = 8; 109 pub const VIRTIO_NET_HASH_REPORT_UDPv6_EX: u32 = 9; 110 pub const VIRTIO_NET_OK: u32 = 0; 111 pub const VIRTIO_NET_ERR: u32 = 1; 112 pub const VIRTIO_NET_CTRL_RX: u32 = 0; 113 pub const VIRTIO_NET_CTRL_RX_PROMISC: u32 = 0; 114 pub const VIRTIO_NET_CTRL_RX_ALLMULTI: u32 = 1; 115 pub const VIRTIO_NET_CTRL_RX_ALLUNI: u32 = 2; 116 pub const VIRTIO_NET_CTRL_RX_NOMULTI: u32 = 3; 117 pub const VIRTIO_NET_CTRL_RX_NOUNI: u32 = 4; 118 pub const VIRTIO_NET_CTRL_RX_NOBCAST: u32 = 5; 119 pub const VIRTIO_NET_CTRL_MAC: u32 = 1; 120 pub const VIRTIO_NET_CTRL_MAC_TABLE_SET: u32 = 0; 121 pub const VIRTIO_NET_CTRL_MAC_ADDR_SET: u32 = 1; 122 pub const VIRTIO_NET_CTRL_VLAN: u32 = 2; 123 pub const VIRTIO_NET_CTRL_VLAN_ADD: u32 = 0; 124 pub const VIRTIO_NET_CTRL_VLAN_DEL: u32 = 1; 125 pub const VIRTIO_NET_CTRL_ANNOUNCE: u32 = 3; 126 pub const VIRTIO_NET_CTRL_ANNOUNCE_ACK: u32 = 0; 127 pub const VIRTIO_NET_CTRL_MQ: u32 = 4; 128 pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET: u32 = 0; 129 pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN: u32 = 1; 130 pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX: u32 = 32768; 131 pub const VIRTIO_NET_CTRL_MQ_RSS_CONFIG: u32 = 1; 132 pub const VIRTIO_NET_CTRL_MQ_HASH_CONFIG: u32 = 2; 133 pub const VIRTIO_NET_CTRL_GUEST_OFFLOADS: u32 = 5; 134 pub const VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET: u32 = 0; 135 pub const VIRTIO_NET_CTRL_NOTF_COAL: u32 = 6; 136 pub const VIRTIO_NET_CTRL_NOTF_COAL_TX_SET: u32 = 0; 137 pub const VIRTIO_NET_CTRL_NOTF_COAL_RX_SET: u32 = 1; 138 pub const VIRTIO_NET_CTRL_NOTF_COAL_VQ_SET: u32 = 2; 139 pub const VIRTIO_NET_CTRL_NOTF_COAL_VQ_GET: u32 = 3; 140 pub type __le16 = u16; 141 pub type __le32 = u32; 142 pub type __virtio16 = u16; 143 pub type __virtio32 = u32; 144 #[repr(C, packed)] 145 #[derive(Debug, Default, Copy, Clone)] 146 pub struct virtio_net_config { 147 pub mac: [u8; 6usize], 148 pub status: __virtio16, 149 pub max_virtqueue_pairs: __virtio16, 150 pub mtu: __virtio16, 151 pub speed: __le32, 152 pub duplex: u8, 153 pub rss_max_key_size: u8, 154 pub rss_max_indirection_table_length: __le16, 155 pub supported_hash_types: __le32, 156 } 157 #[repr(C)] 158 #[derive(Copy, Clone)] 159 pub struct virtio_net_hdr_v1 { 160 pub flags: u8, 161 pub gso_type: u8, 162 pub hdr_len: __virtio16, 163 pub gso_size: __virtio16, 164 pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1, 165 pub num_buffers: __virtio16, 166 } 167 #[repr(C)] 168 #[derive(Copy, Clone)] 169 pub union virtio_net_hdr_v1__bindgen_ty_1 { 170 pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1, 171 pub csum: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2, 172 pub rsc: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3, 173 } 174 #[repr(C)] 175 #[derive(Debug, Default, Copy, Clone)] 176 pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1 { 177 pub csum_start: __virtio16, 178 pub csum_offset: __virtio16, 179 } 180 #[repr(C)] 181 #[derive(Debug, Default, Copy, Clone)] 182 pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2 { 183 pub start: __virtio16, 184 pub offset: __virtio16, 185 } 186 #[repr(C)] 187 #[derive(Debug, Default, Copy, Clone)] 188 pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3 { 189 pub segments: __le16, 190 pub dup_acks: __le16, 191 } 192 impl Default for virtio_net_hdr_v1__bindgen_ty_1 { default() -> Self193 fn default() -> Self { 194 let mut s = ::std::mem::MaybeUninit::<Self>::uninit(); 195 unsafe { 196 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); 197 s.assume_init() 198 } 199 } 200 } 201 impl Default for virtio_net_hdr_v1 { default() -> Self202 fn default() -> Self { 203 let mut s = ::std::mem::MaybeUninit::<Self>::uninit(); 204 unsafe { 205 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); 206 s.assume_init() 207 } 208 } 209 } 210 #[repr(C)] 211 #[derive(Copy, Clone)] 212 pub struct virtio_net_hdr_v1_hash { 213 pub hdr: virtio_net_hdr_v1, 214 pub hash_value: __le32, 215 pub hash_report: __le16, 216 pub padding: __le16, 217 } 218 impl Default for virtio_net_hdr_v1_hash { default() -> Self219 fn default() -> Self { 220 let mut s = ::std::mem::MaybeUninit::<Self>::uninit(); 221 unsafe { 222 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); 223 s.assume_init() 224 } 225 } 226 } 227 #[repr(C)] 228 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)] 229 pub struct virtio_net_hdr { 230 pub flags: u8, 231 pub gso_type: u8, 232 pub hdr_len: __virtio16, 233 pub gso_size: __virtio16, 234 pub csum_start: __virtio16, 235 pub csum_offset: __virtio16, 236 } 237 #[repr(C)] 238 #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)] 239 pub struct virtio_net_hdr_mrg_rxbuf { 240 pub hdr: virtio_net_hdr, 241 pub num_buffers: __virtio16, 242 } 243 #[repr(C, packed)] 244 #[derive(Debug, Default, Copy, Clone)] 245 pub struct virtio_net_ctrl_hdr { 246 pub class: u8, 247 pub cmd: u8, 248 } 249 pub type virtio_net_ctrl_ack = u8; 250 #[repr(C)] 251 #[derive(Debug, Default, Copy, Clone)] 252 pub struct virtio_net_ctrl_mq { 253 pub virtqueue_pairs: __virtio16, 254 } 255 #[repr(C)] 256 #[derive(Debug, Default)] 257 pub struct virtio_net_rss_config { 258 pub hash_types: __le32, 259 pub indirection_table_mask: __le16, 260 pub unclassified_queue: __le16, 261 pub indirection_table: [__le16; 1usize], 262 pub max_tx_vq: __le16, 263 pub hash_key_length: u8, 264 pub hash_key_data: __IncompleteArrayField<u8>, 265 } 266 #[repr(C)] 267 #[derive(Debug, Default)] 268 pub struct virtio_net_hash_config { 269 pub hash_types: __le32, 270 pub reserved: [__le16; 4usize], 271 pub hash_key_length: u8, 272 pub hash_key_data: __IncompleteArrayField<u8>, 273 } 274 #[repr(C)] 275 #[derive(Debug, Default, Copy, Clone)] 276 pub struct virtio_net_ctrl_coal_tx { 277 pub tx_max_packets: __le32, 278 pub tx_usecs: __le32, 279 } 280 #[repr(C)] 281 #[derive(Debug, Default, Copy, Clone)] 282 pub struct virtio_net_ctrl_coal_rx { 283 pub rx_max_packets: __le32, 284 pub rx_usecs: __le32, 285 } 286 #[repr(C)] 287 #[derive(Debug, Default, Copy, Clone)] 288 pub struct virtio_net_ctrl_coal { 289 pub max_packets: __le32, 290 pub max_usecs: __le32, 291 } 292 #[repr(C)] 293 #[derive(Debug, Default, Copy, Clone)] 294 pub struct virtio_net_ctrl_coal_vq { 295 pub vqn: __le16, 296 pub reserved: __le16, 297 pub coal: virtio_net_ctrl_coal, 298 } 299