• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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