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