1 /* automatically generated by tools/bindgen-all-the-things */ 2 3 #![allow(non_upper_case_globals)] 4 #![allow(non_camel_case_types)] 5 #![allow(non_snake_case)] 6 #![allow(dead_code)] 7 8 #[repr(C)] 9 #[derive(Default)] 10 pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]); 11 impl<T> __IncompleteArrayField<T> { 12 #[inline] new() -> Self13 pub const fn new() -> Self { 14 __IncompleteArrayField(::std::marker::PhantomData, []) 15 } 16 #[inline] as_ptr(&self) -> *const T17 pub fn as_ptr(&self) -> *const T { 18 self as *const _ as *const T 19 } 20 #[inline] as_mut_ptr(&mut self) -> *mut T21 pub fn as_mut_ptr(&mut self) -> *mut T { 22 self as *mut _ as *mut T 23 } 24 #[inline] as_slice(&self, len: usize) -> &[T]25 pub unsafe fn as_slice(&self, len: usize) -> &[T] { 26 ::std::slice::from_raw_parts(self.as_ptr(), len) 27 } 28 #[inline] as_mut_slice(&mut self, len: usize) -> &mut [T]29 pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { 30 ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) 31 } 32 } 33 impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> { fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result34 fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { 35 fmt.write_str("__IncompleteArrayField") 36 } 37 } 38 pub const VIRTIO_NET_F_CSUM: u32 = 0; 39 pub const VIRTIO_NET_F_GUEST_CSUM: u32 = 1; 40 pub const VIRTIO_NET_F_CTRL_GUEST_OFFLOADS: u32 = 2; 41 pub const VIRTIO_NET_F_MTU: u32 = 3; 42 pub const VIRTIO_NET_F_MAC: u32 = 5; 43 pub const VIRTIO_NET_F_GUEST_TSO4: u32 = 7; 44 pub const VIRTIO_NET_F_GUEST_TSO6: u32 = 8; 45 pub const VIRTIO_NET_F_GUEST_ECN: u32 = 9; 46 pub const VIRTIO_NET_F_GUEST_UFO: u32 = 10; 47 pub const VIRTIO_NET_F_HOST_TSO4: u32 = 11; 48 pub const VIRTIO_NET_F_HOST_TSO6: u32 = 12; 49 pub const VIRTIO_NET_F_HOST_ECN: u32 = 13; 50 pub const VIRTIO_NET_F_HOST_UFO: u32 = 14; 51 pub const VIRTIO_NET_F_MRG_RXBUF: u32 = 15; 52 pub const VIRTIO_NET_F_STATUS: u32 = 16; 53 pub const VIRTIO_NET_F_CTRL_VQ: u32 = 17; 54 pub const VIRTIO_NET_F_CTRL_RX: u32 = 18; 55 pub const VIRTIO_NET_F_CTRL_VLAN: u32 = 19; 56 pub const VIRTIO_NET_F_CTRL_RX_EXTRA: u32 = 20; 57 pub const VIRTIO_NET_F_GUEST_ANNOUNCE: u32 = 21; 58 pub const VIRTIO_NET_F_MQ: u32 = 22; 59 pub const VIRTIO_NET_F_CTRL_MAC_ADDR: u32 = 23; 60 pub const VIRTIO_NET_F_HASH_REPORT: u32 = 57; 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_ECN: u32 = 128; 85 pub const VIRTIO_NET_HASH_REPORT_NONE: u32 = 0; 86 pub const VIRTIO_NET_HASH_REPORT_IPv4: u32 = 1; 87 pub const VIRTIO_NET_HASH_REPORT_TCPv4: u32 = 2; 88 pub const VIRTIO_NET_HASH_REPORT_UDPv4: u32 = 3; 89 pub const VIRTIO_NET_HASH_REPORT_IPv6: u32 = 4; 90 pub const VIRTIO_NET_HASH_REPORT_TCPv6: u32 = 5; 91 pub const VIRTIO_NET_HASH_REPORT_UDPv6: u32 = 6; 92 pub const VIRTIO_NET_HASH_REPORT_IPv6_EX: u32 = 7; 93 pub const VIRTIO_NET_HASH_REPORT_TCPv6_EX: u32 = 8; 94 pub const VIRTIO_NET_HASH_REPORT_UDPv6_EX: u32 = 9; 95 pub const VIRTIO_NET_OK: u32 = 0; 96 pub const VIRTIO_NET_ERR: u32 = 1; 97 pub const VIRTIO_NET_CTRL_RX: u32 = 0; 98 pub const VIRTIO_NET_CTRL_RX_PROMISC: u32 = 0; 99 pub const VIRTIO_NET_CTRL_RX_ALLMULTI: u32 = 1; 100 pub const VIRTIO_NET_CTRL_RX_ALLUNI: u32 = 2; 101 pub const VIRTIO_NET_CTRL_RX_NOMULTI: u32 = 3; 102 pub const VIRTIO_NET_CTRL_RX_NOUNI: u32 = 4; 103 pub const VIRTIO_NET_CTRL_RX_NOBCAST: u32 = 5; 104 pub const VIRTIO_NET_CTRL_MAC: u32 = 1; 105 pub const VIRTIO_NET_CTRL_MAC_TABLE_SET: u32 = 0; 106 pub const VIRTIO_NET_CTRL_MAC_ADDR_SET: u32 = 1; 107 pub const VIRTIO_NET_CTRL_VLAN: u32 = 2; 108 pub const VIRTIO_NET_CTRL_VLAN_ADD: u32 = 0; 109 pub const VIRTIO_NET_CTRL_VLAN_DEL: u32 = 1; 110 pub const VIRTIO_NET_CTRL_ANNOUNCE: u32 = 3; 111 pub const VIRTIO_NET_CTRL_ANNOUNCE_ACK: u32 = 0; 112 pub const VIRTIO_NET_CTRL_MQ: u32 = 4; 113 pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET: u32 = 0; 114 pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN: u32 = 1; 115 pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX: u32 = 32768; 116 pub const VIRTIO_NET_CTRL_MQ_RSS_CONFIG: u32 = 1; 117 pub const VIRTIO_NET_CTRL_MQ_HASH_CONFIG: u32 = 2; 118 pub const VIRTIO_NET_CTRL_GUEST_OFFLOADS: u32 = 5; 119 pub const VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET: u32 = 0; 120 pub type __le16 = u16; 121 pub type __le32 = u32; 122 pub type __virtio16 = u16; 123 pub type __virtio32 = u32; 124 #[repr(C, packed)] 125 #[derive(Debug, Default, Copy, Clone)] 126 pub struct virtio_net_config { 127 pub mac: [u8; 6usize], 128 pub status: __virtio16, 129 pub max_virtqueue_pairs: __virtio16, 130 pub mtu: __virtio16, 131 pub speed: __le32, 132 pub duplex: u8, 133 pub rss_max_key_size: u8, 134 pub rss_max_indirection_table_length: __le16, 135 pub supported_hash_types: __le32, 136 } 137 #[repr(C)] 138 #[derive(Copy, Clone)] 139 pub struct virtio_net_hdr_v1 { 140 pub flags: u8, 141 pub gso_type: u8, 142 pub hdr_len: __virtio16, 143 pub gso_size: __virtio16, 144 pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1, 145 pub num_buffers: __virtio16, 146 } 147 #[repr(C)] 148 #[derive(Copy, Clone)] 149 pub union virtio_net_hdr_v1__bindgen_ty_1 { 150 pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1, 151 pub csum: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2, 152 pub rsc: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3, 153 } 154 #[repr(C)] 155 #[derive(Debug, Default, Copy, Clone)] 156 pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1 { 157 pub csum_start: __virtio16, 158 pub csum_offset: __virtio16, 159 } 160 #[repr(C)] 161 #[derive(Debug, Default, Copy, Clone)] 162 pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2 { 163 pub start: __virtio16, 164 pub offset: __virtio16, 165 } 166 #[repr(C)] 167 #[derive(Debug, Default, Copy, Clone)] 168 pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3 { 169 pub segments: __le16, 170 pub dup_acks: __le16, 171 } 172 impl Default for virtio_net_hdr_v1__bindgen_ty_1 { default() -> Self173 fn default() -> Self { 174 let mut s = ::std::mem::MaybeUninit::<Self>::uninit(); 175 unsafe { 176 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); 177 s.assume_init() 178 } 179 } 180 } 181 impl Default for virtio_net_hdr_v1 { default() -> Self182 fn default() -> Self { 183 let mut s = ::std::mem::MaybeUninit::<Self>::uninit(); 184 unsafe { 185 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); 186 s.assume_init() 187 } 188 } 189 } 190 #[repr(C)] 191 #[derive(Copy, Clone)] 192 pub struct virtio_net_hdr_v1_hash { 193 pub hdr: virtio_net_hdr_v1, 194 pub hash_value: __le32, 195 pub hash_report: __le16, 196 pub padding: __le16, 197 } 198 impl Default for virtio_net_hdr_v1_hash { default() -> Self199 fn default() -> Self { 200 let mut s = ::std::mem::MaybeUninit::<Self>::uninit(); 201 unsafe { 202 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); 203 s.assume_init() 204 } 205 } 206 } 207 #[repr(C)] 208 #[derive(Debug, Default, Copy, Clone)] 209 pub struct virtio_net_hdr { 210 pub flags: u8, 211 pub gso_type: u8, 212 pub hdr_len: __virtio16, 213 pub gso_size: __virtio16, 214 pub csum_start: __virtio16, 215 pub csum_offset: __virtio16, 216 } 217 #[repr(C)] 218 #[derive(Debug, Default, Copy, Clone)] 219 pub struct virtio_net_hdr_mrg_rxbuf { 220 pub hdr: virtio_net_hdr, 221 pub num_buffers: __virtio16, 222 } 223 #[repr(C, packed)] 224 #[derive(Debug, Default, Copy, Clone)] 225 pub struct virtio_net_ctrl_hdr { 226 pub class: u8, 227 pub cmd: u8, 228 } 229 pub type virtio_net_ctrl_ack = u8; 230 #[repr(C)] 231 #[derive(Debug, Default, Copy, Clone)] 232 pub struct virtio_net_ctrl_mq { 233 pub virtqueue_pairs: __virtio16, 234 } 235 #[repr(C)] 236 #[derive(Debug, Default)] 237 pub struct virtio_net_rss_config { 238 pub hash_types: __le32, 239 pub indirection_table_mask: __le16, 240 pub unclassified_queue: __le16, 241 pub indirection_table: [__le16; 1usize], 242 pub max_tx_vq: __le16, 243 pub hash_key_length: u8, 244 pub hash_key_data: __IncompleteArrayField<u8>, 245 } 246 #[repr(C)] 247 #[derive(Debug, Default)] 248 pub struct virtio_net_hash_config { 249 pub hash_types: __le32, 250 pub reserved: [__le16; 4usize], 251 pub hash_key_length: u8, 252 pub hash_key_data: __IncompleteArrayField<u8>, 253 } 254