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
11pub const MAX_UDP_POLL_LENGTH: u16 = 1024;
12
13#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
15#[repr(u32)]
16pub enum Error {
17 Internal = 1,
20 HermeticNetworkRealmNotRunning = 2,
23 InterfaceNotFound = 3,
25 StubNotRunning = 4,
27 InvalidArguments = 5,
29 ComponentNotFound = 6,
31 TimeoutExceeded = 7,
33 PingFailed = 8,
35 AddressNotAvailable = 9,
37 AddressInUse = 10,
39 AlreadyExists = 11,
41 AddressUnreachable = 12,
43 Dhcpv6ClientNotRunning = 13,
45 Dhcpv4ClientNotRunning = 14,
47 Dhcpv4ClientShutdownFailed = 15,
49}
50
51impl Error {
52 #[inline]
53 pub fn from_primitive(prim: u32) -> Option<Self> {
54 match prim {
55 1 => Some(Self::Internal),
56 2 => Some(Self::HermeticNetworkRealmNotRunning),
57 3 => Some(Self::InterfaceNotFound),
58 4 => Some(Self::StubNotRunning),
59 5 => Some(Self::InvalidArguments),
60 6 => Some(Self::ComponentNotFound),
61 7 => Some(Self::TimeoutExceeded),
62 8 => Some(Self::PingFailed),
63 9 => Some(Self::AddressNotAvailable),
64 10 => Some(Self::AddressInUse),
65 11 => Some(Self::AlreadyExists),
66 12 => Some(Self::AddressUnreachable),
67 13 => Some(Self::Dhcpv6ClientNotRunning),
68 14 => Some(Self::Dhcpv4ClientNotRunning),
69 15 => Some(Self::Dhcpv4ClientShutdownFailed),
70 _ => None,
71 }
72 }
73
74 #[inline]
75 pub const fn into_primitive(self) -> u32 {
76 self as u32
77 }
78}
79
80#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
81#[repr(u32)]
82pub enum Netstack {
83 V2 = 1,
85 V3 = 2,
87}
88
89impl Netstack {
90 #[inline]
91 pub fn from_primitive(prim: u32) -> Option<Self> {
92 match prim {
93 1 => Some(Self::V2),
94 2 => Some(Self::V3),
95 _ => None,
96 }
97 }
98
99 #[inline]
100 pub const fn into_primitive(self) -> u32 {
101 self as u32
102 }
103}
104
105#[derive(Clone, Debug, PartialEq)]
106pub struct ControllerAddInterfaceRequest {
107 pub mac_address: fidl_fuchsia_net__common::MacAddress,
108 pub name: String,
109 pub wait_any_ip_address: bool,
110}
111
112impl fidl::Persistable for ControllerAddInterfaceRequest {}
113
114#[derive(Clone, Debug, PartialEq)]
115pub struct ControllerJoinMulticastGroupRequest {
116 pub address: fidl_fuchsia_net__common::IpAddress,
117 pub interface_id: u64,
118}
119
120impl fidl::Persistable for ControllerJoinMulticastGroupRequest {}
121
122#[derive(Clone, Debug, PartialEq)]
123pub struct ControllerLeaveMulticastGroupRequest {
124 pub address: fidl_fuchsia_net__common::IpAddress,
125 pub interface_id: u64,
126}
127
128impl fidl::Persistable for ControllerLeaveMulticastGroupRequest {}
129
130#[derive(Clone, Debug, PartialEq)]
131pub struct ControllerPingRequest {
132 pub target: fidl_fuchsia_net__common::IpAddress,
133 pub payload_length: u16,
134 pub interface_name: Option<String>,
135 pub timeout: i64,
136}
137
138impl fidl::Persistable for ControllerPingRequest {}
139
140#[derive(Clone, Debug, PartialEq)]
141pub struct ControllerPollUdpRequest {
142 pub target: fidl_fuchsia_net__common::SocketAddress,
143 pub payload: Vec<u8>,
144 pub timeout: i64,
145 pub num_retries: u16,
146}
147
148impl fidl::Persistable for ControllerPollUdpRequest {}
149
150#[derive(Clone, Debug, PartialEq)]
151pub struct ControllerStartDhcpv6ClientRequest {
152 pub params: fidl_fuchsia_net_dhcpv6__common::NewClientParams,
153}
154
155impl fidl::Persistable for ControllerStartDhcpv6ClientRequest {}
156
157#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
158pub struct ControllerStartHermeticNetworkRealmRequest {
159 pub netstack: Netstack,
160}
161
162impl fidl::Persistable for ControllerStartHermeticNetworkRealmRequest {}
163
164#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
165pub struct ControllerStartStubRequest {
166 pub component_url: String,
167}
168
169impl fidl::Persistable for ControllerStartStubRequest {}
170
171#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
172pub struct ControllerPollUdpResponse {
173 pub payload: Vec<u8>,
174}
175
176impl fidl::Persistable for ControllerPollUdpResponse {}
177
178#[derive(Clone, Debug, Default, PartialEq)]
179pub struct ControllerStartOutOfStackDhcpv4ClientRequest {
180 pub interface_id: Option<u64>,
181 #[doc(hidden)]
182 pub __source_breaking: fidl::marker::SourceBreaking,
183}
184
185impl fidl::Persistable for ControllerStartOutOfStackDhcpv4ClientRequest {}
186
187#[derive(Clone, Debug, Default, PartialEq)]
188pub struct ControllerStopOutOfStackDhcpv4ClientRequest {
189 pub interface_id: Option<u64>,
190 #[doc(hidden)]
191 pub __source_breaking: fidl::marker::SourceBreaking,
192}
193
194impl fidl::Persistable for ControllerStopOutOfStackDhcpv4ClientRequest {}
195
196pub mod controller_ordinals {
197 pub const START_HERMETIC_NETWORK_REALM: u64 = 0x58c1fa7335d4c5c2;
198 pub const STOP_HERMETIC_NETWORK_REALM: u64 = 0x49d3c2501cd2f635;
199 pub const ADD_INTERFACE: u64 = 0x668ded2d2b619c15;
200 pub const START_STUB: u64 = 0x6523a401f22bf664;
201 pub const STOP_STUB: u64 = 0x582c32b564ff4bb4;
202 pub const PING: u64 = 0x60c9b6cf952fa4d1;
203 pub const POLL_UDP: u64 = 0x333fb354db30f664;
204 pub const JOIN_MULTICAST_GROUP: u64 = 0xbdbb4095640a3f4;
205 pub const LEAVE_MULTICAST_GROUP: u64 = 0x32ecf4e40124a29a;
206 pub const START_DHCPV6_CLIENT: u64 = 0x756c9b70864b7744;
207 pub const STOP_DHCPV6_CLIENT: u64 = 0x16e93478e663d523;
208 pub const START_OUT_OF_STACK_DHCPV4_CLIENT: u64 = 0x37eeec41c0077625;
209 pub const STOP_OUT_OF_STACK_DHCPV4_CLIENT: u64 = 0x5d47aa5213164364;
210}
211
212mod internal {
213 use super::*;
214 unsafe impl fidl::encoding::TypeMarker for Error {
215 type Owned = Self;
216
217 #[inline(always)]
218 fn inline_align(_context: fidl::encoding::Context) -> usize {
219 std::mem::align_of::<u32>()
220 }
221
222 #[inline(always)]
223 fn inline_size(_context: fidl::encoding::Context) -> usize {
224 std::mem::size_of::<u32>()
225 }
226
227 #[inline(always)]
228 fn encode_is_copy() -> bool {
229 true
230 }
231
232 #[inline(always)]
233 fn decode_is_copy() -> bool {
234 false
235 }
236 }
237
238 impl fidl::encoding::ValueTypeMarker for Error {
239 type Borrowed<'a> = Self;
240 #[inline(always)]
241 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
242 *value
243 }
244 }
245
246 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Error {
247 #[inline]
248 unsafe fn encode(
249 self,
250 encoder: &mut fidl::encoding::Encoder<'_, D>,
251 offset: usize,
252 _depth: fidl::encoding::Depth,
253 ) -> fidl::Result<()> {
254 encoder.debug_check_bounds::<Self>(offset);
255 encoder.write_num(self.into_primitive(), offset);
256 Ok(())
257 }
258 }
259
260 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Error {
261 #[inline(always)]
262 fn new_empty() -> Self {
263 Self::Internal
264 }
265
266 #[inline]
267 unsafe fn decode(
268 &mut self,
269 decoder: &mut fidl::encoding::Decoder<'_, D>,
270 offset: usize,
271 _depth: fidl::encoding::Depth,
272 ) -> fidl::Result<()> {
273 decoder.debug_check_bounds::<Self>(offset);
274 let prim = decoder.read_num::<u32>(offset);
275
276 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
277 Ok(())
278 }
279 }
280 unsafe impl fidl::encoding::TypeMarker for Netstack {
281 type Owned = Self;
282
283 #[inline(always)]
284 fn inline_align(_context: fidl::encoding::Context) -> usize {
285 std::mem::align_of::<u32>()
286 }
287
288 #[inline(always)]
289 fn inline_size(_context: fidl::encoding::Context) -> usize {
290 std::mem::size_of::<u32>()
291 }
292
293 #[inline(always)]
294 fn encode_is_copy() -> bool {
295 true
296 }
297
298 #[inline(always)]
299 fn decode_is_copy() -> bool {
300 false
301 }
302 }
303
304 impl fidl::encoding::ValueTypeMarker for Netstack {
305 type Borrowed<'a> = Self;
306 #[inline(always)]
307 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
308 *value
309 }
310 }
311
312 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Netstack {
313 #[inline]
314 unsafe fn encode(
315 self,
316 encoder: &mut fidl::encoding::Encoder<'_, D>,
317 offset: usize,
318 _depth: fidl::encoding::Depth,
319 ) -> fidl::Result<()> {
320 encoder.debug_check_bounds::<Self>(offset);
321 encoder.write_num(self.into_primitive(), offset);
322 Ok(())
323 }
324 }
325
326 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Netstack {
327 #[inline(always)]
328 fn new_empty() -> Self {
329 Self::V2
330 }
331
332 #[inline]
333 unsafe fn decode(
334 &mut self,
335 decoder: &mut fidl::encoding::Decoder<'_, D>,
336 offset: usize,
337 _depth: fidl::encoding::Depth,
338 ) -> fidl::Result<()> {
339 decoder.debug_check_bounds::<Self>(offset);
340 let prim = decoder.read_num::<u32>(offset);
341
342 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
343 Ok(())
344 }
345 }
346
347 impl fidl::encoding::ValueTypeMarker for ControllerAddInterfaceRequest {
348 type Borrowed<'a> = &'a Self;
349 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
350 value
351 }
352 }
353
354 unsafe impl fidl::encoding::TypeMarker for ControllerAddInterfaceRequest {
355 type Owned = Self;
356
357 #[inline(always)]
358 fn inline_align(_context: fidl::encoding::Context) -> usize {
359 8
360 }
361
362 #[inline(always)]
363 fn inline_size(_context: fidl::encoding::Context) -> usize {
364 32
365 }
366 }
367
368 unsafe impl<D: fidl::encoding::ResourceDialect>
369 fidl::encoding::Encode<ControllerAddInterfaceRequest, D>
370 for &ControllerAddInterfaceRequest
371 {
372 #[inline]
373 unsafe fn encode(
374 self,
375 encoder: &mut fidl::encoding::Encoder<'_, D>,
376 offset: usize,
377 _depth: fidl::encoding::Depth,
378 ) -> fidl::Result<()> {
379 encoder.debug_check_bounds::<ControllerAddInterfaceRequest>(offset);
380 fidl::encoding::Encode::<ControllerAddInterfaceRequest, D>::encode(
382 (
383 <fidl_fuchsia_net__common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow(&self.mac_address),
384 <fidl::encoding::BoundedString<15> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
385 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.wait_any_ip_address),
386 ),
387 encoder, offset, _depth
388 )
389 }
390 }
391 unsafe impl<
392 D: fidl::encoding::ResourceDialect,
393 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::MacAddress, D>,
394 T1: fidl::encoding::Encode<fidl::encoding::BoundedString<15>, D>,
395 T2: fidl::encoding::Encode<bool, D>,
396 > fidl::encoding::Encode<ControllerAddInterfaceRequest, D> for (T0, T1, T2)
397 {
398 #[inline]
399 unsafe fn encode(
400 self,
401 encoder: &mut fidl::encoding::Encoder<'_, D>,
402 offset: usize,
403 depth: fidl::encoding::Depth,
404 ) -> fidl::Result<()> {
405 encoder.debug_check_bounds::<ControllerAddInterfaceRequest>(offset);
406 unsafe {
409 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
410 (ptr as *mut u64).write_unaligned(0);
411 }
412 unsafe {
413 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
414 (ptr as *mut u64).write_unaligned(0);
415 }
416 self.0.encode(encoder, offset + 0, depth)?;
418 self.1.encode(encoder, offset + 8, depth)?;
419 self.2.encode(encoder, offset + 24, depth)?;
420 Ok(())
421 }
422 }
423
424 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
425 for ControllerAddInterfaceRequest
426 {
427 #[inline(always)]
428 fn new_empty() -> Self {
429 Self {
430 mac_address: fidl::new_empty!(fidl_fuchsia_net__common::MacAddress, D),
431 name: fidl::new_empty!(fidl::encoding::BoundedString<15>, D),
432 wait_any_ip_address: fidl::new_empty!(bool, D),
433 }
434 }
435
436 #[inline]
437 unsafe fn decode(
438 &mut self,
439 decoder: &mut fidl::encoding::Decoder<'_, D>,
440 offset: usize,
441 _depth: fidl::encoding::Depth,
442 ) -> fidl::Result<()> {
443 decoder.debug_check_bounds::<Self>(offset);
444 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
446 let padval = unsafe { (ptr as *const u64).read_unaligned() };
447 let mask = 0xffff000000000000u64;
448 let maskedval = padval & mask;
449 if maskedval != 0 {
450 return Err(fidl::Error::NonZeroPadding {
451 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
452 });
453 }
454 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
455 let padval = unsafe { (ptr as *const u64).read_unaligned() };
456 let mask = 0xffffffffffffff00u64;
457 let maskedval = padval & mask;
458 if maskedval != 0 {
459 return Err(fidl::Error::NonZeroPadding {
460 padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
461 });
462 }
463 fidl::decode!(
464 fidl_fuchsia_net__common::MacAddress,
465 D,
466 &mut self.mac_address,
467 decoder,
468 offset + 0,
469 _depth
470 )?;
471 fidl::decode!(
472 fidl::encoding::BoundedString<15>,
473 D,
474 &mut self.name,
475 decoder,
476 offset + 8,
477 _depth
478 )?;
479 fidl::decode!(bool, D, &mut self.wait_any_ip_address, decoder, offset + 24, _depth)?;
480 Ok(())
481 }
482 }
483
484 impl fidl::encoding::ValueTypeMarker for ControllerJoinMulticastGroupRequest {
485 type Borrowed<'a> = &'a Self;
486 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
487 value
488 }
489 }
490
491 unsafe impl fidl::encoding::TypeMarker for ControllerJoinMulticastGroupRequest {
492 type Owned = Self;
493
494 #[inline(always)]
495 fn inline_align(_context: fidl::encoding::Context) -> usize {
496 8
497 }
498
499 #[inline(always)]
500 fn inline_size(_context: fidl::encoding::Context) -> usize {
501 24
502 }
503 }
504
505 unsafe impl<D: fidl::encoding::ResourceDialect>
506 fidl::encoding::Encode<ControllerJoinMulticastGroupRequest, D>
507 for &ControllerJoinMulticastGroupRequest
508 {
509 #[inline]
510 unsafe fn encode(
511 self,
512 encoder: &mut fidl::encoding::Encoder<'_, D>,
513 offset: usize,
514 _depth: fidl::encoding::Depth,
515 ) -> fidl::Result<()> {
516 encoder.debug_check_bounds::<ControllerJoinMulticastGroupRequest>(offset);
517 fidl::encoding::Encode::<ControllerJoinMulticastGroupRequest, D>::encode(
519 (
520 <fidl_fuchsia_net__common::IpAddress as fidl::encoding::ValueTypeMarker>::borrow(&self.address),
521 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.interface_id),
522 ),
523 encoder, offset, _depth
524 )
525 }
526 }
527 unsafe impl<
528 D: fidl::encoding::ResourceDialect,
529 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::IpAddress, D>,
530 T1: fidl::encoding::Encode<u64, D>,
531 > fidl::encoding::Encode<ControllerJoinMulticastGroupRequest, D> for (T0, T1)
532 {
533 #[inline]
534 unsafe fn encode(
535 self,
536 encoder: &mut fidl::encoding::Encoder<'_, D>,
537 offset: usize,
538 depth: fidl::encoding::Depth,
539 ) -> fidl::Result<()> {
540 encoder.debug_check_bounds::<ControllerJoinMulticastGroupRequest>(offset);
541 self.0.encode(encoder, offset + 0, depth)?;
545 self.1.encode(encoder, offset + 16, depth)?;
546 Ok(())
547 }
548 }
549
550 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
551 for ControllerJoinMulticastGroupRequest
552 {
553 #[inline(always)]
554 fn new_empty() -> Self {
555 Self {
556 address: fidl::new_empty!(fidl_fuchsia_net__common::IpAddress, D),
557 interface_id: fidl::new_empty!(u64, D),
558 }
559 }
560
561 #[inline]
562 unsafe fn decode(
563 &mut self,
564 decoder: &mut fidl::encoding::Decoder<'_, D>,
565 offset: usize,
566 _depth: fidl::encoding::Depth,
567 ) -> fidl::Result<()> {
568 decoder.debug_check_bounds::<Self>(offset);
569 fidl::decode!(
571 fidl_fuchsia_net__common::IpAddress,
572 D,
573 &mut self.address,
574 decoder,
575 offset + 0,
576 _depth
577 )?;
578 fidl::decode!(u64, D, &mut self.interface_id, decoder, offset + 16, _depth)?;
579 Ok(())
580 }
581 }
582
583 impl fidl::encoding::ValueTypeMarker for ControllerLeaveMulticastGroupRequest {
584 type Borrowed<'a> = &'a Self;
585 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
586 value
587 }
588 }
589
590 unsafe impl fidl::encoding::TypeMarker for ControllerLeaveMulticastGroupRequest {
591 type Owned = Self;
592
593 #[inline(always)]
594 fn inline_align(_context: fidl::encoding::Context) -> usize {
595 8
596 }
597
598 #[inline(always)]
599 fn inline_size(_context: fidl::encoding::Context) -> usize {
600 24
601 }
602 }
603
604 unsafe impl<D: fidl::encoding::ResourceDialect>
605 fidl::encoding::Encode<ControllerLeaveMulticastGroupRequest, D>
606 for &ControllerLeaveMulticastGroupRequest
607 {
608 #[inline]
609 unsafe fn encode(
610 self,
611 encoder: &mut fidl::encoding::Encoder<'_, D>,
612 offset: usize,
613 _depth: fidl::encoding::Depth,
614 ) -> fidl::Result<()> {
615 encoder.debug_check_bounds::<ControllerLeaveMulticastGroupRequest>(offset);
616 fidl::encoding::Encode::<ControllerLeaveMulticastGroupRequest, D>::encode(
618 (
619 <fidl_fuchsia_net__common::IpAddress as fidl::encoding::ValueTypeMarker>::borrow(&self.address),
620 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.interface_id),
621 ),
622 encoder, offset, _depth
623 )
624 }
625 }
626 unsafe impl<
627 D: fidl::encoding::ResourceDialect,
628 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::IpAddress, D>,
629 T1: fidl::encoding::Encode<u64, D>,
630 > fidl::encoding::Encode<ControllerLeaveMulticastGroupRequest, D> for (T0, T1)
631 {
632 #[inline]
633 unsafe fn encode(
634 self,
635 encoder: &mut fidl::encoding::Encoder<'_, D>,
636 offset: usize,
637 depth: fidl::encoding::Depth,
638 ) -> fidl::Result<()> {
639 encoder.debug_check_bounds::<ControllerLeaveMulticastGroupRequest>(offset);
640 self.0.encode(encoder, offset + 0, depth)?;
644 self.1.encode(encoder, offset + 16, depth)?;
645 Ok(())
646 }
647 }
648
649 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
650 for ControllerLeaveMulticastGroupRequest
651 {
652 #[inline(always)]
653 fn new_empty() -> Self {
654 Self {
655 address: fidl::new_empty!(fidl_fuchsia_net__common::IpAddress, D),
656 interface_id: fidl::new_empty!(u64, D),
657 }
658 }
659
660 #[inline]
661 unsafe fn decode(
662 &mut self,
663 decoder: &mut fidl::encoding::Decoder<'_, D>,
664 offset: usize,
665 _depth: fidl::encoding::Depth,
666 ) -> fidl::Result<()> {
667 decoder.debug_check_bounds::<Self>(offset);
668 fidl::decode!(
670 fidl_fuchsia_net__common::IpAddress,
671 D,
672 &mut self.address,
673 decoder,
674 offset + 0,
675 _depth
676 )?;
677 fidl::decode!(u64, D, &mut self.interface_id, decoder, offset + 16, _depth)?;
678 Ok(())
679 }
680 }
681
682 impl fidl::encoding::ValueTypeMarker for ControllerPingRequest {
683 type Borrowed<'a> = &'a Self;
684 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
685 value
686 }
687 }
688
689 unsafe impl fidl::encoding::TypeMarker for ControllerPingRequest {
690 type Owned = Self;
691
692 #[inline(always)]
693 fn inline_align(_context: fidl::encoding::Context) -> usize {
694 8
695 }
696
697 #[inline(always)]
698 fn inline_size(_context: fidl::encoding::Context) -> usize {
699 48
700 }
701 }
702
703 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ControllerPingRequest, D>
704 for &ControllerPingRequest
705 {
706 #[inline]
707 unsafe fn encode(
708 self,
709 encoder: &mut fidl::encoding::Encoder<'_, D>,
710 offset: usize,
711 _depth: fidl::encoding::Depth,
712 ) -> fidl::Result<()> {
713 encoder.debug_check_bounds::<ControllerPingRequest>(offset);
714 fidl::encoding::Encode::<ControllerPingRequest, D>::encode(
716 (
717 <fidl_fuchsia_net__common::IpAddress as fidl::encoding::ValueTypeMarker>::borrow(&self.target),
718 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.payload_length),
719 <fidl::encoding::Optional<fidl::encoding::BoundedString<15>> as fidl::encoding::ValueTypeMarker>::borrow(&self.interface_name),
720 <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timeout),
721 ),
722 encoder, offset, _depth
723 )
724 }
725 }
726 unsafe impl<
727 D: fidl::encoding::ResourceDialect,
728 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::IpAddress, D>,
729 T1: fidl::encoding::Encode<u16, D>,
730 T2: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<15>>, D>,
731 T3: fidl::encoding::Encode<i64, D>,
732 > fidl::encoding::Encode<ControllerPingRequest, D> for (T0, T1, T2, T3)
733 {
734 #[inline]
735 unsafe fn encode(
736 self,
737 encoder: &mut fidl::encoding::Encoder<'_, D>,
738 offset: usize,
739 depth: fidl::encoding::Depth,
740 ) -> fidl::Result<()> {
741 encoder.debug_check_bounds::<ControllerPingRequest>(offset);
742 unsafe {
745 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
746 (ptr as *mut u64).write_unaligned(0);
747 }
748 self.0.encode(encoder, offset + 0, depth)?;
750 self.1.encode(encoder, offset + 16, depth)?;
751 self.2.encode(encoder, offset + 24, depth)?;
752 self.3.encode(encoder, offset + 40, depth)?;
753 Ok(())
754 }
755 }
756
757 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControllerPingRequest {
758 #[inline(always)]
759 fn new_empty() -> Self {
760 Self {
761 target: fidl::new_empty!(fidl_fuchsia_net__common::IpAddress, D),
762 payload_length: fidl::new_empty!(u16, D),
763 interface_name: fidl::new_empty!(
764 fidl::encoding::Optional<fidl::encoding::BoundedString<15>>,
765 D
766 ),
767 timeout: fidl::new_empty!(i64, D),
768 }
769 }
770
771 #[inline]
772 unsafe fn decode(
773 &mut self,
774 decoder: &mut fidl::encoding::Decoder<'_, D>,
775 offset: usize,
776 _depth: fidl::encoding::Depth,
777 ) -> fidl::Result<()> {
778 decoder.debug_check_bounds::<Self>(offset);
779 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
781 let padval = unsafe { (ptr as *const u64).read_unaligned() };
782 let mask = 0xffffffffffff0000u64;
783 let maskedval = padval & mask;
784 if maskedval != 0 {
785 return Err(fidl::Error::NonZeroPadding {
786 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
787 });
788 }
789 fidl::decode!(
790 fidl_fuchsia_net__common::IpAddress,
791 D,
792 &mut self.target,
793 decoder,
794 offset + 0,
795 _depth
796 )?;
797 fidl::decode!(u16, D, &mut self.payload_length, decoder, offset + 16, _depth)?;
798 fidl::decode!(
799 fidl::encoding::Optional<fidl::encoding::BoundedString<15>>,
800 D,
801 &mut self.interface_name,
802 decoder,
803 offset + 24,
804 _depth
805 )?;
806 fidl::decode!(i64, D, &mut self.timeout, decoder, offset + 40, _depth)?;
807 Ok(())
808 }
809 }
810
811 impl fidl::encoding::ValueTypeMarker for ControllerPollUdpRequest {
812 type Borrowed<'a> = &'a Self;
813 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
814 value
815 }
816 }
817
818 unsafe impl fidl::encoding::TypeMarker for ControllerPollUdpRequest {
819 type Owned = Self;
820
821 #[inline(always)]
822 fn inline_align(_context: fidl::encoding::Context) -> usize {
823 8
824 }
825
826 #[inline(always)]
827 fn inline_size(_context: fidl::encoding::Context) -> usize {
828 48
829 }
830 }
831
832 unsafe impl<D: fidl::encoding::ResourceDialect>
833 fidl::encoding::Encode<ControllerPollUdpRequest, D> for &ControllerPollUdpRequest
834 {
835 #[inline]
836 unsafe fn encode(
837 self,
838 encoder: &mut fidl::encoding::Encoder<'_, D>,
839 offset: usize,
840 _depth: fidl::encoding::Depth,
841 ) -> fidl::Result<()> {
842 encoder.debug_check_bounds::<ControllerPollUdpRequest>(offset);
843 fidl::encoding::Encode::<ControllerPollUdpRequest, D>::encode(
845 (
846 <fidl_fuchsia_net__common::SocketAddress as fidl::encoding::ValueTypeMarker>::borrow(&self.target),
847 <fidl::encoding::Vector<u8, 1024> as fidl::encoding::ValueTypeMarker>::borrow(&self.payload),
848 <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timeout),
849 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.num_retries),
850 ),
851 encoder, offset, _depth
852 )
853 }
854 }
855 unsafe impl<
856 D: fidl::encoding::ResourceDialect,
857 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::SocketAddress, D>,
858 T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 1024>, D>,
859 T2: fidl::encoding::Encode<i64, D>,
860 T3: fidl::encoding::Encode<u16, D>,
861 > fidl::encoding::Encode<ControllerPollUdpRequest, D> for (T0, T1, T2, T3)
862 {
863 #[inline]
864 unsafe fn encode(
865 self,
866 encoder: &mut fidl::encoding::Encoder<'_, D>,
867 offset: usize,
868 depth: fidl::encoding::Depth,
869 ) -> fidl::Result<()> {
870 encoder.debug_check_bounds::<ControllerPollUdpRequest>(offset);
871 unsafe {
874 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(40);
875 (ptr as *mut u64).write_unaligned(0);
876 }
877 self.0.encode(encoder, offset + 0, depth)?;
879 self.1.encode(encoder, offset + 16, depth)?;
880 self.2.encode(encoder, offset + 32, depth)?;
881 self.3.encode(encoder, offset + 40, depth)?;
882 Ok(())
883 }
884 }
885
886 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
887 for ControllerPollUdpRequest
888 {
889 #[inline(always)]
890 fn new_empty() -> Self {
891 Self {
892 target: fidl::new_empty!(fidl_fuchsia_net__common::SocketAddress, D),
893 payload: fidl::new_empty!(fidl::encoding::Vector<u8, 1024>, D),
894 timeout: fidl::new_empty!(i64, D),
895 num_retries: fidl::new_empty!(u16, D),
896 }
897 }
898
899 #[inline]
900 unsafe fn decode(
901 &mut self,
902 decoder: &mut fidl::encoding::Decoder<'_, D>,
903 offset: usize,
904 _depth: fidl::encoding::Depth,
905 ) -> fidl::Result<()> {
906 decoder.debug_check_bounds::<Self>(offset);
907 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(40) };
909 let padval = unsafe { (ptr as *const u64).read_unaligned() };
910 let mask = 0xffffffffffff0000u64;
911 let maskedval = padval & mask;
912 if maskedval != 0 {
913 return Err(fidl::Error::NonZeroPadding {
914 padding_start: offset + 40 + ((mask as u64).trailing_zeros() / 8) as usize,
915 });
916 }
917 fidl::decode!(
918 fidl_fuchsia_net__common::SocketAddress,
919 D,
920 &mut self.target,
921 decoder,
922 offset + 0,
923 _depth
924 )?;
925 fidl::decode!(fidl::encoding::Vector<u8, 1024>, D, &mut self.payload, decoder, offset + 16, _depth)?;
926 fidl::decode!(i64, D, &mut self.timeout, decoder, offset + 32, _depth)?;
927 fidl::decode!(u16, D, &mut self.num_retries, decoder, offset + 40, _depth)?;
928 Ok(())
929 }
930 }
931
932 impl fidl::encoding::ValueTypeMarker for ControllerStartDhcpv6ClientRequest {
933 type Borrowed<'a> = &'a Self;
934 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
935 value
936 }
937 }
938
939 unsafe impl fidl::encoding::TypeMarker for ControllerStartDhcpv6ClientRequest {
940 type Owned = Self;
941
942 #[inline(always)]
943 fn inline_align(_context: fidl::encoding::Context) -> usize {
944 8
945 }
946
947 #[inline(always)]
948 fn inline_size(_context: fidl::encoding::Context) -> usize {
949 16
950 }
951 }
952
953 unsafe impl<D: fidl::encoding::ResourceDialect>
954 fidl::encoding::Encode<ControllerStartDhcpv6ClientRequest, D>
955 for &ControllerStartDhcpv6ClientRequest
956 {
957 #[inline]
958 unsafe fn encode(
959 self,
960 encoder: &mut fidl::encoding::Encoder<'_, D>,
961 offset: usize,
962 _depth: fidl::encoding::Depth,
963 ) -> fidl::Result<()> {
964 encoder.debug_check_bounds::<ControllerStartDhcpv6ClientRequest>(offset);
965 fidl::encoding::Encode::<ControllerStartDhcpv6ClientRequest, D>::encode(
967 (
968 <fidl_fuchsia_net_dhcpv6__common::NewClientParams as fidl::encoding::ValueTypeMarker>::borrow(&self.params),
969 ),
970 encoder, offset, _depth
971 )
972 }
973 }
974 unsafe impl<
975 D: fidl::encoding::ResourceDialect,
976 T0: fidl::encoding::Encode<fidl_fuchsia_net_dhcpv6__common::NewClientParams, D>,
977 > fidl::encoding::Encode<ControllerStartDhcpv6ClientRequest, D> for (T0,)
978 {
979 #[inline]
980 unsafe fn encode(
981 self,
982 encoder: &mut fidl::encoding::Encoder<'_, D>,
983 offset: usize,
984 depth: fidl::encoding::Depth,
985 ) -> fidl::Result<()> {
986 encoder.debug_check_bounds::<ControllerStartDhcpv6ClientRequest>(offset);
987 self.0.encode(encoder, offset + 0, depth)?;
991 Ok(())
992 }
993 }
994
995 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
996 for ControllerStartDhcpv6ClientRequest
997 {
998 #[inline(always)]
999 fn new_empty() -> Self {
1000 Self { params: fidl::new_empty!(fidl_fuchsia_net_dhcpv6__common::NewClientParams, D) }
1001 }
1002
1003 #[inline]
1004 unsafe fn decode(
1005 &mut self,
1006 decoder: &mut fidl::encoding::Decoder<'_, D>,
1007 offset: usize,
1008 _depth: fidl::encoding::Depth,
1009 ) -> fidl::Result<()> {
1010 decoder.debug_check_bounds::<Self>(offset);
1011 fidl::decode!(
1013 fidl_fuchsia_net_dhcpv6__common::NewClientParams,
1014 D,
1015 &mut self.params,
1016 decoder,
1017 offset + 0,
1018 _depth
1019 )?;
1020 Ok(())
1021 }
1022 }
1023
1024 impl fidl::encoding::ValueTypeMarker for ControllerStartHermeticNetworkRealmRequest {
1025 type Borrowed<'a> = &'a Self;
1026 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1027 value
1028 }
1029 }
1030
1031 unsafe impl fidl::encoding::TypeMarker for ControllerStartHermeticNetworkRealmRequest {
1032 type Owned = Self;
1033
1034 #[inline(always)]
1035 fn inline_align(_context: fidl::encoding::Context) -> usize {
1036 4
1037 }
1038
1039 #[inline(always)]
1040 fn inline_size(_context: fidl::encoding::Context) -> usize {
1041 4
1042 }
1043 }
1044
1045 unsafe impl<D: fidl::encoding::ResourceDialect>
1046 fidl::encoding::Encode<ControllerStartHermeticNetworkRealmRequest, D>
1047 for &ControllerStartHermeticNetworkRealmRequest
1048 {
1049 #[inline]
1050 unsafe fn encode(
1051 self,
1052 encoder: &mut fidl::encoding::Encoder<'_, D>,
1053 offset: usize,
1054 _depth: fidl::encoding::Depth,
1055 ) -> fidl::Result<()> {
1056 encoder.debug_check_bounds::<ControllerStartHermeticNetworkRealmRequest>(offset);
1057 fidl::encoding::Encode::<ControllerStartHermeticNetworkRealmRequest, D>::encode(
1059 (<Netstack as fidl::encoding::ValueTypeMarker>::borrow(&self.netstack),),
1060 encoder,
1061 offset,
1062 _depth,
1063 )
1064 }
1065 }
1066 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Netstack, D>>
1067 fidl::encoding::Encode<ControllerStartHermeticNetworkRealmRequest, D> for (T0,)
1068 {
1069 #[inline]
1070 unsafe fn encode(
1071 self,
1072 encoder: &mut fidl::encoding::Encoder<'_, D>,
1073 offset: usize,
1074 depth: fidl::encoding::Depth,
1075 ) -> fidl::Result<()> {
1076 encoder.debug_check_bounds::<ControllerStartHermeticNetworkRealmRequest>(offset);
1077 self.0.encode(encoder, offset + 0, depth)?;
1081 Ok(())
1082 }
1083 }
1084
1085 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1086 for ControllerStartHermeticNetworkRealmRequest
1087 {
1088 #[inline(always)]
1089 fn new_empty() -> Self {
1090 Self { netstack: fidl::new_empty!(Netstack, D) }
1091 }
1092
1093 #[inline]
1094 unsafe fn decode(
1095 &mut self,
1096 decoder: &mut fidl::encoding::Decoder<'_, D>,
1097 offset: usize,
1098 _depth: fidl::encoding::Depth,
1099 ) -> fidl::Result<()> {
1100 decoder.debug_check_bounds::<Self>(offset);
1101 fidl::decode!(Netstack, D, &mut self.netstack, decoder, offset + 0, _depth)?;
1103 Ok(())
1104 }
1105 }
1106
1107 impl fidl::encoding::ValueTypeMarker for ControllerStartStubRequest {
1108 type Borrowed<'a> = &'a Self;
1109 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1110 value
1111 }
1112 }
1113
1114 unsafe impl fidl::encoding::TypeMarker for ControllerStartStubRequest {
1115 type Owned = Self;
1116
1117 #[inline(always)]
1118 fn inline_align(_context: fidl::encoding::Context) -> usize {
1119 8
1120 }
1121
1122 #[inline(always)]
1123 fn inline_size(_context: fidl::encoding::Context) -> usize {
1124 16
1125 }
1126 }
1127
1128 unsafe impl<D: fidl::encoding::ResourceDialect>
1129 fidl::encoding::Encode<ControllerStartStubRequest, D> for &ControllerStartStubRequest
1130 {
1131 #[inline]
1132 unsafe fn encode(
1133 self,
1134 encoder: &mut fidl::encoding::Encoder<'_, D>,
1135 offset: usize,
1136 _depth: fidl::encoding::Depth,
1137 ) -> fidl::Result<()> {
1138 encoder.debug_check_bounds::<ControllerStartStubRequest>(offset);
1139 fidl::encoding::Encode::<ControllerStartStubRequest, D>::encode(
1141 (<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(
1142 &self.component_url,
1143 ),),
1144 encoder,
1145 offset,
1146 _depth,
1147 )
1148 }
1149 }
1150 unsafe impl<
1151 D: fidl::encoding::ResourceDialect,
1152 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1153 > fidl::encoding::Encode<ControllerStartStubRequest, D> for (T0,)
1154 {
1155 #[inline]
1156 unsafe fn encode(
1157 self,
1158 encoder: &mut fidl::encoding::Encoder<'_, D>,
1159 offset: usize,
1160 depth: fidl::encoding::Depth,
1161 ) -> fidl::Result<()> {
1162 encoder.debug_check_bounds::<ControllerStartStubRequest>(offset);
1163 self.0.encode(encoder, offset + 0, depth)?;
1167 Ok(())
1168 }
1169 }
1170
1171 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1172 for ControllerStartStubRequest
1173 {
1174 #[inline(always)]
1175 fn new_empty() -> Self {
1176 Self { component_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D) }
1177 }
1178
1179 #[inline]
1180 unsafe fn decode(
1181 &mut self,
1182 decoder: &mut fidl::encoding::Decoder<'_, D>,
1183 offset: usize,
1184 _depth: fidl::encoding::Depth,
1185 ) -> fidl::Result<()> {
1186 decoder.debug_check_bounds::<Self>(offset);
1187 fidl::decode!(
1189 fidl::encoding::BoundedString<4096>,
1190 D,
1191 &mut self.component_url,
1192 decoder,
1193 offset + 0,
1194 _depth
1195 )?;
1196 Ok(())
1197 }
1198 }
1199
1200 impl fidl::encoding::ValueTypeMarker for ControllerPollUdpResponse {
1201 type Borrowed<'a> = &'a Self;
1202 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1203 value
1204 }
1205 }
1206
1207 unsafe impl fidl::encoding::TypeMarker for ControllerPollUdpResponse {
1208 type Owned = Self;
1209
1210 #[inline(always)]
1211 fn inline_align(_context: fidl::encoding::Context) -> usize {
1212 8
1213 }
1214
1215 #[inline(always)]
1216 fn inline_size(_context: fidl::encoding::Context) -> usize {
1217 16
1218 }
1219 }
1220
1221 unsafe impl<D: fidl::encoding::ResourceDialect>
1222 fidl::encoding::Encode<ControllerPollUdpResponse, D> for &ControllerPollUdpResponse
1223 {
1224 #[inline]
1225 unsafe fn encode(
1226 self,
1227 encoder: &mut fidl::encoding::Encoder<'_, D>,
1228 offset: usize,
1229 _depth: fidl::encoding::Depth,
1230 ) -> fidl::Result<()> {
1231 encoder.debug_check_bounds::<ControllerPollUdpResponse>(offset);
1232 fidl::encoding::Encode::<ControllerPollUdpResponse, D>::encode(
1234 (<fidl::encoding::Vector<u8, 1024> as fidl::encoding::ValueTypeMarker>::borrow(
1235 &self.payload,
1236 ),),
1237 encoder,
1238 offset,
1239 _depth,
1240 )
1241 }
1242 }
1243 unsafe impl<
1244 D: fidl::encoding::ResourceDialect,
1245 T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 1024>, D>,
1246 > fidl::encoding::Encode<ControllerPollUdpResponse, D> for (T0,)
1247 {
1248 #[inline]
1249 unsafe fn encode(
1250 self,
1251 encoder: &mut fidl::encoding::Encoder<'_, D>,
1252 offset: usize,
1253 depth: fidl::encoding::Depth,
1254 ) -> fidl::Result<()> {
1255 encoder.debug_check_bounds::<ControllerPollUdpResponse>(offset);
1256 self.0.encode(encoder, offset + 0, depth)?;
1260 Ok(())
1261 }
1262 }
1263
1264 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1265 for ControllerPollUdpResponse
1266 {
1267 #[inline(always)]
1268 fn new_empty() -> Self {
1269 Self { payload: fidl::new_empty!(fidl::encoding::Vector<u8, 1024>, D) }
1270 }
1271
1272 #[inline]
1273 unsafe fn decode(
1274 &mut self,
1275 decoder: &mut fidl::encoding::Decoder<'_, D>,
1276 offset: usize,
1277 _depth: fidl::encoding::Depth,
1278 ) -> fidl::Result<()> {
1279 decoder.debug_check_bounds::<Self>(offset);
1280 fidl::decode!(fidl::encoding::Vector<u8, 1024>, D, &mut self.payload, decoder, offset + 0, _depth)?;
1282 Ok(())
1283 }
1284 }
1285
1286 impl ControllerStartOutOfStackDhcpv4ClientRequest {
1287 #[inline(always)]
1288 fn max_ordinal_present(&self) -> u64 {
1289 if let Some(_) = self.interface_id {
1290 return 1;
1291 }
1292 0
1293 }
1294 }
1295
1296 impl fidl::encoding::ValueTypeMarker for ControllerStartOutOfStackDhcpv4ClientRequest {
1297 type Borrowed<'a> = &'a Self;
1298 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1299 value
1300 }
1301 }
1302
1303 unsafe impl fidl::encoding::TypeMarker for ControllerStartOutOfStackDhcpv4ClientRequest {
1304 type Owned = Self;
1305
1306 #[inline(always)]
1307 fn inline_align(_context: fidl::encoding::Context) -> usize {
1308 8
1309 }
1310
1311 #[inline(always)]
1312 fn inline_size(_context: fidl::encoding::Context) -> usize {
1313 16
1314 }
1315 }
1316
1317 unsafe impl<D: fidl::encoding::ResourceDialect>
1318 fidl::encoding::Encode<ControllerStartOutOfStackDhcpv4ClientRequest, D>
1319 for &ControllerStartOutOfStackDhcpv4ClientRequest
1320 {
1321 unsafe fn encode(
1322 self,
1323 encoder: &mut fidl::encoding::Encoder<'_, D>,
1324 offset: usize,
1325 mut depth: fidl::encoding::Depth,
1326 ) -> fidl::Result<()> {
1327 encoder.debug_check_bounds::<ControllerStartOutOfStackDhcpv4ClientRequest>(offset);
1328 let max_ordinal: u64 = self.max_ordinal_present();
1330 encoder.write_num(max_ordinal, offset);
1331 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1332 if max_ordinal == 0 {
1334 return Ok(());
1335 }
1336 depth.increment()?;
1337 let envelope_size = 8;
1338 let bytes_len = max_ordinal as usize * envelope_size;
1339 #[allow(unused_variables)]
1340 let offset = encoder.out_of_line_offset(bytes_len);
1341 let mut _prev_end_offset: usize = 0;
1342 if 1 > max_ordinal {
1343 return Ok(());
1344 }
1345
1346 let cur_offset: usize = (1 - 1) * envelope_size;
1349
1350 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1352
1353 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1358 self.interface_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1359 encoder,
1360 offset + cur_offset,
1361 depth,
1362 )?;
1363
1364 _prev_end_offset = cur_offset + envelope_size;
1365
1366 Ok(())
1367 }
1368 }
1369
1370 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1371 for ControllerStartOutOfStackDhcpv4ClientRequest
1372 {
1373 #[inline(always)]
1374 fn new_empty() -> Self {
1375 Self::default()
1376 }
1377
1378 unsafe fn decode(
1379 &mut self,
1380 decoder: &mut fidl::encoding::Decoder<'_, D>,
1381 offset: usize,
1382 mut depth: fidl::encoding::Depth,
1383 ) -> fidl::Result<()> {
1384 decoder.debug_check_bounds::<Self>(offset);
1385 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1386 None => return Err(fidl::Error::NotNullable),
1387 Some(len) => len,
1388 };
1389 if len == 0 {
1391 return Ok(());
1392 };
1393 depth.increment()?;
1394 let envelope_size = 8;
1395 let bytes_len = len * envelope_size;
1396 let offset = decoder.out_of_line_offset(bytes_len)?;
1397 let mut _next_ordinal_to_read = 0;
1399 let mut next_offset = offset;
1400 let end_offset = offset + bytes_len;
1401 _next_ordinal_to_read += 1;
1402 if next_offset >= end_offset {
1403 return Ok(());
1404 }
1405
1406 while _next_ordinal_to_read < 1 {
1408 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1409 _next_ordinal_to_read += 1;
1410 next_offset += envelope_size;
1411 }
1412
1413 let next_out_of_line = decoder.next_out_of_line();
1414 let handles_before = decoder.remaining_handles();
1415 if let Some((inlined, num_bytes, num_handles)) =
1416 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1417 {
1418 let member_inline_size =
1419 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1420 if inlined != (member_inline_size <= 4) {
1421 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1422 }
1423 let inner_offset;
1424 let mut inner_depth = depth.clone();
1425 if inlined {
1426 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1427 inner_offset = next_offset;
1428 } else {
1429 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1430 inner_depth.increment()?;
1431 }
1432 let val_ref = self.interface_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
1433 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1434 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1435 {
1436 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1437 }
1438 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1439 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1440 }
1441 }
1442
1443 next_offset += envelope_size;
1444
1445 while next_offset < end_offset {
1447 _next_ordinal_to_read += 1;
1448 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1449 next_offset += envelope_size;
1450 }
1451
1452 Ok(())
1453 }
1454 }
1455
1456 impl ControllerStopOutOfStackDhcpv4ClientRequest {
1457 #[inline(always)]
1458 fn max_ordinal_present(&self) -> u64 {
1459 if let Some(_) = self.interface_id {
1460 return 1;
1461 }
1462 0
1463 }
1464 }
1465
1466 impl fidl::encoding::ValueTypeMarker for ControllerStopOutOfStackDhcpv4ClientRequest {
1467 type Borrowed<'a> = &'a Self;
1468 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1469 value
1470 }
1471 }
1472
1473 unsafe impl fidl::encoding::TypeMarker for ControllerStopOutOfStackDhcpv4ClientRequest {
1474 type Owned = Self;
1475
1476 #[inline(always)]
1477 fn inline_align(_context: fidl::encoding::Context) -> usize {
1478 8
1479 }
1480
1481 #[inline(always)]
1482 fn inline_size(_context: fidl::encoding::Context) -> usize {
1483 16
1484 }
1485 }
1486
1487 unsafe impl<D: fidl::encoding::ResourceDialect>
1488 fidl::encoding::Encode<ControllerStopOutOfStackDhcpv4ClientRequest, D>
1489 for &ControllerStopOutOfStackDhcpv4ClientRequest
1490 {
1491 unsafe fn encode(
1492 self,
1493 encoder: &mut fidl::encoding::Encoder<'_, D>,
1494 offset: usize,
1495 mut depth: fidl::encoding::Depth,
1496 ) -> fidl::Result<()> {
1497 encoder.debug_check_bounds::<ControllerStopOutOfStackDhcpv4ClientRequest>(offset);
1498 let max_ordinal: u64 = self.max_ordinal_present();
1500 encoder.write_num(max_ordinal, offset);
1501 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1502 if max_ordinal == 0 {
1504 return Ok(());
1505 }
1506 depth.increment()?;
1507 let envelope_size = 8;
1508 let bytes_len = max_ordinal as usize * envelope_size;
1509 #[allow(unused_variables)]
1510 let offset = encoder.out_of_line_offset(bytes_len);
1511 let mut _prev_end_offset: usize = 0;
1512 if 1 > max_ordinal {
1513 return Ok(());
1514 }
1515
1516 let cur_offset: usize = (1 - 1) * envelope_size;
1519
1520 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1522
1523 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1528 self.interface_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1529 encoder,
1530 offset + cur_offset,
1531 depth,
1532 )?;
1533
1534 _prev_end_offset = cur_offset + envelope_size;
1535
1536 Ok(())
1537 }
1538 }
1539
1540 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1541 for ControllerStopOutOfStackDhcpv4ClientRequest
1542 {
1543 #[inline(always)]
1544 fn new_empty() -> Self {
1545 Self::default()
1546 }
1547
1548 unsafe fn decode(
1549 &mut self,
1550 decoder: &mut fidl::encoding::Decoder<'_, D>,
1551 offset: usize,
1552 mut depth: fidl::encoding::Depth,
1553 ) -> fidl::Result<()> {
1554 decoder.debug_check_bounds::<Self>(offset);
1555 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1556 None => return Err(fidl::Error::NotNullable),
1557 Some(len) => len,
1558 };
1559 if len == 0 {
1561 return Ok(());
1562 };
1563 depth.increment()?;
1564 let envelope_size = 8;
1565 let bytes_len = len * envelope_size;
1566 let offset = decoder.out_of_line_offset(bytes_len)?;
1567 let mut _next_ordinal_to_read = 0;
1569 let mut next_offset = offset;
1570 let end_offset = offset + bytes_len;
1571 _next_ordinal_to_read += 1;
1572 if next_offset >= end_offset {
1573 return Ok(());
1574 }
1575
1576 while _next_ordinal_to_read < 1 {
1578 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1579 _next_ordinal_to_read += 1;
1580 next_offset += envelope_size;
1581 }
1582
1583 let next_out_of_line = decoder.next_out_of_line();
1584 let handles_before = decoder.remaining_handles();
1585 if let Some((inlined, num_bytes, num_handles)) =
1586 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1587 {
1588 let member_inline_size =
1589 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1590 if inlined != (member_inline_size <= 4) {
1591 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1592 }
1593 let inner_offset;
1594 let mut inner_depth = depth.clone();
1595 if inlined {
1596 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1597 inner_offset = next_offset;
1598 } else {
1599 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1600 inner_depth.increment()?;
1601 }
1602 let val_ref = self.interface_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
1603 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1604 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1605 {
1606 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1607 }
1608 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1609 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1610 }
1611 }
1612
1613 next_offset += envelope_size;
1614
1615 while next_offset < end_offset {
1617 _next_ordinal_to_read += 1;
1618 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1619 next_offset += envelope_size;
1620 }
1621
1622 Ok(())
1623 }
1624 }
1625}