1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
12pub struct Config {
13 pub blobfs: bool,
14 pub blobfs_cache_eviction_policy: String,
15 pub blobfs_initial_inodes: u64,
16 pub blobfs_max_bytes: u64,
17 pub blobfs_use_deprecated_padded_format: bool,
18 pub blobfs_write_compression_algorithm: String,
19 pub bootpart: bool,
20 pub check_filesystems: bool,
21 pub data: bool,
22 pub data_filesystem_format: String,
23 pub data_max_bytes: u64,
24 pub disable_automount: bool,
25 pub disable_block_watcher: bool,
26 pub factory: bool,
27 pub format_data_on_corruption: bool,
28 pub fvm: bool,
29 pub fvm_slice_size: u64,
30 pub fxfs_blob: bool,
31 pub fxfs_crypt_url: String,
32 pub gpt: bool,
33 pub gpt_all: bool,
34 pub inline_crypto: bool,
35 pub mbr: bool,
36 pub nand: bool,
37 pub netboot: bool,
38 pub no_zxcrypt: bool,
39 pub ramdisk_image: bool,
40 pub starnix_volume_name: String,
41 pub storage_host: bool,
42 pub use_disk_migration: bool,
43}
44
45impl fidl::Persistable for Config {}
46
47mod internal {
48 use super::*;
49
50 impl fidl::encoding::ValueTypeMarker for Config {
51 type Borrowed<'a> = &'a Self;
52 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
53 value
54 }
55 }
56
57 unsafe impl fidl::encoding::TypeMarker for Config {
58 type Owned = Self;
59
60 #[inline(always)]
61 fn inline_align(_context: fidl::encoding::Context) -> usize {
62 8
63 }
64
65 #[inline(always)]
66 fn inline_size(_context: fidl::encoding::Context) -> usize {
67 168
68 }
69 }
70
71 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Config, D> for &Config {
72 #[inline]
73 unsafe fn encode(
74 self,
75 encoder: &mut fidl::encoding::Encoder<'_, D>,
76 offset: usize,
77 _depth: fidl::encoding::Depth,
78 ) -> fidl::Result<()> {
79 encoder.debug_check_bounds::<Config>(offset);
80 fidl::encoding::Encode::<Config, D>::encode(
82 (
83 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.blobfs),
84 <fidl::encoding::BoundedString<20> as fidl::encoding::ValueTypeMarker>::borrow(
85 &self.blobfs_cache_eviction_policy,
86 ),
87 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.blobfs_initial_inodes),
88 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.blobfs_max_bytes),
89 <bool as fidl::encoding::ValueTypeMarker>::borrow(
90 &self.blobfs_use_deprecated_padded_format,
91 ),
92 <fidl::encoding::BoundedString<20> as fidl::encoding::ValueTypeMarker>::borrow(
93 &self.blobfs_write_compression_algorithm,
94 ),
95 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.bootpart),
96 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.check_filesystems),
97 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
98 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow(
99 &self.data_filesystem_format,
100 ),
101 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.data_max_bytes),
102 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.disable_automount),
103 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.disable_block_watcher),
104 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.factory),
105 <bool as fidl::encoding::ValueTypeMarker>::borrow(
106 &self.format_data_on_corruption,
107 ),
108 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.fvm),
109 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.fvm_slice_size),
110 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.fxfs_blob),
111 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow(
112 &self.fxfs_crypt_url,
113 ),
114 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.gpt),
115 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.gpt_all),
116 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.inline_crypto),
117 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.mbr),
118 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.nand),
119 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.netboot),
120 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.no_zxcrypt),
121 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.ramdisk_image),
122 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow(
123 &self.starnix_volume_name,
124 ),
125 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.storage_host),
126 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.use_disk_migration),
127 ),
128 encoder,
129 offset,
130 _depth,
131 )
132 }
133 }
134 unsafe impl<
135 D: fidl::encoding::ResourceDialect,
136 T0: fidl::encoding::Encode<bool, D>,
137 T1: fidl::encoding::Encode<fidl::encoding::BoundedString<20>, D>,
138 T2: fidl::encoding::Encode<u64, D>,
139 T3: fidl::encoding::Encode<u64, D>,
140 T4: fidl::encoding::Encode<bool, D>,
141 T5: fidl::encoding::Encode<fidl::encoding::BoundedString<20>, D>,
142 T6: fidl::encoding::Encode<bool, D>,
143 T7: fidl::encoding::Encode<bool, D>,
144 T8: fidl::encoding::Encode<bool, D>,
145 T9: fidl::encoding::Encode<fidl::encoding::BoundedString<64>, D>,
146 T10: fidl::encoding::Encode<u64, D>,
147 T11: fidl::encoding::Encode<bool, D>,
148 T12: fidl::encoding::Encode<bool, D>,
149 T13: fidl::encoding::Encode<bool, D>,
150 T14: fidl::encoding::Encode<bool, D>,
151 T15: fidl::encoding::Encode<bool, D>,
152 T16: fidl::encoding::Encode<u64, D>,
153 T17: fidl::encoding::Encode<bool, D>,
154 T18: fidl::encoding::Encode<fidl::encoding::BoundedString<64>, D>,
155 T19: fidl::encoding::Encode<bool, D>,
156 T20: fidl::encoding::Encode<bool, D>,
157 T21: fidl::encoding::Encode<bool, D>,
158 T22: fidl::encoding::Encode<bool, D>,
159 T23: fidl::encoding::Encode<bool, D>,
160 T24: fidl::encoding::Encode<bool, D>,
161 T25: fidl::encoding::Encode<bool, D>,
162 T26: fidl::encoding::Encode<bool, D>,
163 T27: fidl::encoding::Encode<fidl::encoding::BoundedString<64>, D>,
164 T28: fidl::encoding::Encode<bool, D>,
165 T29: fidl::encoding::Encode<bool, D>,
166 > fidl::encoding::Encode<Config, D>
167 for (
168 T0,
169 T1,
170 T2,
171 T3,
172 T4,
173 T5,
174 T6,
175 T7,
176 T8,
177 T9,
178 T10,
179 T11,
180 T12,
181 T13,
182 T14,
183 T15,
184 T16,
185 T17,
186 T18,
187 T19,
188 T20,
189 T21,
190 T22,
191 T23,
192 T24,
193 T25,
194 T26,
195 T27,
196 T28,
197 T29,
198 )
199 {
200 #[inline]
201 unsafe fn encode(
202 self,
203 encoder: &mut fidl::encoding::Encoder<'_, D>,
204 offset: usize,
205 depth: fidl::encoding::Depth,
206 ) -> fidl::Result<()> {
207 encoder.debug_check_bounds::<Config>(offset);
208 unsafe {
211 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
212 (ptr as *mut u64).write_unaligned(0);
213 }
214 unsafe {
215 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(40);
216 (ptr as *mut u64).write_unaligned(0);
217 }
218 unsafe {
219 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(64);
220 (ptr as *mut u64).write_unaligned(0);
221 }
222 unsafe {
223 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(96);
224 (ptr as *mut u64).write_unaligned(0);
225 }
226 unsafe {
227 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(112);
228 (ptr as *mut u64).write_unaligned(0);
229 }
230 unsafe {
231 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(160);
232 (ptr as *mut u64).write_unaligned(0);
233 }
234 self.0.encode(encoder, offset + 0, depth)?;
236 self.1.encode(encoder, offset + 8, depth)?;
237 self.2.encode(encoder, offset + 24, depth)?;
238 self.3.encode(encoder, offset + 32, depth)?;
239 self.4.encode(encoder, offset + 40, depth)?;
240 self.5.encode(encoder, offset + 48, depth)?;
241 self.6.encode(encoder, offset + 64, depth)?;
242 self.7.encode(encoder, offset + 65, depth)?;
243 self.8.encode(encoder, offset + 66, depth)?;
244 self.9.encode(encoder, offset + 72, depth)?;
245 self.10.encode(encoder, offset + 88, depth)?;
246 self.11.encode(encoder, offset + 96, depth)?;
247 self.12.encode(encoder, offset + 97, depth)?;
248 self.13.encode(encoder, offset + 98, depth)?;
249 self.14.encode(encoder, offset + 99, depth)?;
250 self.15.encode(encoder, offset + 100, depth)?;
251 self.16.encode(encoder, offset + 104, depth)?;
252 self.17.encode(encoder, offset + 112, depth)?;
253 self.18.encode(encoder, offset + 120, depth)?;
254 self.19.encode(encoder, offset + 136, depth)?;
255 self.20.encode(encoder, offset + 137, depth)?;
256 self.21.encode(encoder, offset + 138, depth)?;
257 self.22.encode(encoder, offset + 139, depth)?;
258 self.23.encode(encoder, offset + 140, depth)?;
259 self.24.encode(encoder, offset + 141, depth)?;
260 self.25.encode(encoder, offset + 142, depth)?;
261 self.26.encode(encoder, offset + 143, depth)?;
262 self.27.encode(encoder, offset + 144, depth)?;
263 self.28.encode(encoder, offset + 160, depth)?;
264 self.29.encode(encoder, offset + 161, depth)?;
265 Ok(())
266 }
267 }
268
269 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Config {
270 #[inline(always)]
271 fn new_empty() -> Self {
272 Self {
273 blobfs: fidl::new_empty!(bool, D),
274 blobfs_cache_eviction_policy: fidl::new_empty!(
275 fidl::encoding::BoundedString<20>,
276 D
277 ),
278 blobfs_initial_inodes: fidl::new_empty!(u64, D),
279 blobfs_max_bytes: fidl::new_empty!(u64, D),
280 blobfs_use_deprecated_padded_format: fidl::new_empty!(bool, D),
281 blobfs_write_compression_algorithm: fidl::new_empty!(
282 fidl::encoding::BoundedString<20>,
283 D
284 ),
285 bootpart: fidl::new_empty!(bool, D),
286 check_filesystems: fidl::new_empty!(bool, D),
287 data: fidl::new_empty!(bool, D),
288 data_filesystem_format: fidl::new_empty!(fidl::encoding::BoundedString<64>, D),
289 data_max_bytes: fidl::new_empty!(u64, D),
290 disable_automount: fidl::new_empty!(bool, D),
291 disable_block_watcher: fidl::new_empty!(bool, D),
292 factory: fidl::new_empty!(bool, D),
293 format_data_on_corruption: fidl::new_empty!(bool, D),
294 fvm: fidl::new_empty!(bool, D),
295 fvm_slice_size: fidl::new_empty!(u64, D),
296 fxfs_blob: fidl::new_empty!(bool, D),
297 fxfs_crypt_url: fidl::new_empty!(fidl::encoding::BoundedString<64>, D),
298 gpt: fidl::new_empty!(bool, D),
299 gpt_all: fidl::new_empty!(bool, D),
300 inline_crypto: fidl::new_empty!(bool, D),
301 mbr: fidl::new_empty!(bool, D),
302 nand: fidl::new_empty!(bool, D),
303 netboot: fidl::new_empty!(bool, D),
304 no_zxcrypt: fidl::new_empty!(bool, D),
305 ramdisk_image: fidl::new_empty!(bool, D),
306 starnix_volume_name: fidl::new_empty!(fidl::encoding::BoundedString<64>, D),
307 storage_host: fidl::new_empty!(bool, D),
308 use_disk_migration: fidl::new_empty!(bool, D),
309 }
310 }
311
312 #[inline]
313 unsafe fn decode(
314 &mut self,
315 decoder: &mut fidl::encoding::Decoder<'_, D>,
316 offset: usize,
317 _depth: fidl::encoding::Depth,
318 ) -> fidl::Result<()> {
319 decoder.debug_check_bounds::<Self>(offset);
320 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
322 let padval = unsafe { (ptr as *const u64).read_unaligned() };
323 let mask = 0xffffffffffffff00u64;
324 let maskedval = padval & mask;
325 if maskedval != 0 {
326 return Err(fidl::Error::NonZeroPadding {
327 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
328 });
329 }
330 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(40) };
331 let padval = unsafe { (ptr as *const u64).read_unaligned() };
332 let mask = 0xffffffffffffff00u64;
333 let maskedval = padval & mask;
334 if maskedval != 0 {
335 return Err(fidl::Error::NonZeroPadding {
336 padding_start: offset + 40 + ((mask as u64).trailing_zeros() / 8) as usize,
337 });
338 }
339 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(64) };
340 let padval = unsafe { (ptr as *const u64).read_unaligned() };
341 let mask = 0xffffffffff000000u64;
342 let maskedval = padval & mask;
343 if maskedval != 0 {
344 return Err(fidl::Error::NonZeroPadding {
345 padding_start: offset + 64 + ((mask as u64).trailing_zeros() / 8) as usize,
346 });
347 }
348 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(96) };
349 let padval = unsafe { (ptr as *const u64).read_unaligned() };
350 let mask = 0xffffff0000000000u64;
351 let maskedval = padval & mask;
352 if maskedval != 0 {
353 return Err(fidl::Error::NonZeroPadding {
354 padding_start: offset + 96 + ((mask as u64).trailing_zeros() / 8) as usize,
355 });
356 }
357 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(112) };
358 let padval = unsafe { (ptr as *const u64).read_unaligned() };
359 let mask = 0xffffffffffffff00u64;
360 let maskedval = padval & mask;
361 if maskedval != 0 {
362 return Err(fidl::Error::NonZeroPadding {
363 padding_start: offset + 112 + ((mask as u64).trailing_zeros() / 8) as usize,
364 });
365 }
366 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(160) };
367 let padval = unsafe { (ptr as *const u64).read_unaligned() };
368 let mask = 0xffffffffffff0000u64;
369 let maskedval = padval & mask;
370 if maskedval != 0 {
371 return Err(fidl::Error::NonZeroPadding {
372 padding_start: offset + 160 + ((mask as u64).trailing_zeros() / 8) as usize,
373 });
374 }
375 fidl::decode!(bool, D, &mut self.blobfs, decoder, offset + 0, _depth)?;
376 fidl::decode!(
377 fidl::encoding::BoundedString<20>,
378 D,
379 &mut self.blobfs_cache_eviction_policy,
380 decoder,
381 offset + 8,
382 _depth
383 )?;
384 fidl::decode!(u64, D, &mut self.blobfs_initial_inodes, decoder, offset + 24, _depth)?;
385 fidl::decode!(u64, D, &mut self.blobfs_max_bytes, decoder, offset + 32, _depth)?;
386 fidl::decode!(
387 bool,
388 D,
389 &mut self.blobfs_use_deprecated_padded_format,
390 decoder,
391 offset + 40,
392 _depth
393 )?;
394 fidl::decode!(
395 fidl::encoding::BoundedString<20>,
396 D,
397 &mut self.blobfs_write_compression_algorithm,
398 decoder,
399 offset + 48,
400 _depth
401 )?;
402 fidl::decode!(bool, D, &mut self.bootpart, decoder, offset + 64, _depth)?;
403 fidl::decode!(bool, D, &mut self.check_filesystems, decoder, offset + 65, _depth)?;
404 fidl::decode!(bool, D, &mut self.data, decoder, offset + 66, _depth)?;
405 fidl::decode!(
406 fidl::encoding::BoundedString<64>,
407 D,
408 &mut self.data_filesystem_format,
409 decoder,
410 offset + 72,
411 _depth
412 )?;
413 fidl::decode!(u64, D, &mut self.data_max_bytes, decoder, offset + 88, _depth)?;
414 fidl::decode!(bool, D, &mut self.disable_automount, decoder, offset + 96, _depth)?;
415 fidl::decode!(bool, D, &mut self.disable_block_watcher, decoder, offset + 97, _depth)?;
416 fidl::decode!(bool, D, &mut self.factory, decoder, offset + 98, _depth)?;
417 fidl::decode!(
418 bool,
419 D,
420 &mut self.format_data_on_corruption,
421 decoder,
422 offset + 99,
423 _depth
424 )?;
425 fidl::decode!(bool, D, &mut self.fvm, decoder, offset + 100, _depth)?;
426 fidl::decode!(u64, D, &mut self.fvm_slice_size, decoder, offset + 104, _depth)?;
427 fidl::decode!(bool, D, &mut self.fxfs_blob, decoder, offset + 112, _depth)?;
428 fidl::decode!(
429 fidl::encoding::BoundedString<64>,
430 D,
431 &mut self.fxfs_crypt_url,
432 decoder,
433 offset + 120,
434 _depth
435 )?;
436 fidl::decode!(bool, D, &mut self.gpt, decoder, offset + 136, _depth)?;
437 fidl::decode!(bool, D, &mut self.gpt_all, decoder, offset + 137, _depth)?;
438 fidl::decode!(bool, D, &mut self.inline_crypto, decoder, offset + 138, _depth)?;
439 fidl::decode!(bool, D, &mut self.mbr, decoder, offset + 139, _depth)?;
440 fidl::decode!(bool, D, &mut self.nand, decoder, offset + 140, _depth)?;
441 fidl::decode!(bool, D, &mut self.netboot, decoder, offset + 141, _depth)?;
442 fidl::decode!(bool, D, &mut self.no_zxcrypt, decoder, offset + 142, _depth)?;
443 fidl::decode!(bool, D, &mut self.ramdisk_image, decoder, offset + 143, _depth)?;
444 fidl::decode!(
445 fidl::encoding::BoundedString<64>,
446 D,
447 &mut self.starnix_volume_name,
448 decoder,
449 offset + 144,
450 _depth
451 )?;
452 fidl::decode!(bool, D, &mut self.storage_host, decoder, offset + 160, _depth)?;
453 fidl::decode!(bool, D, &mut self.use_disk_migration, decoder, offset + 161, _depth)?;
454 Ok(())
455 }
456 }
457}