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(
521 &self.address,
522 ),
523 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.interface_id),
524 ),
525 encoder,
526 offset,
527 _depth,
528 )
529 }
530 }
531 unsafe impl<
532 D: fidl::encoding::ResourceDialect,
533 T0: fidl::encoding::Encode<fidl_fuchsia_net_common::IpAddress, D>,
534 T1: fidl::encoding::Encode<u64, D>,
535 > fidl::encoding::Encode<ControllerJoinMulticastGroupRequest, D> for (T0, T1)
536 {
537 #[inline]
538 unsafe fn encode(
539 self,
540 encoder: &mut fidl::encoding::Encoder<'_, D>,
541 offset: usize,
542 depth: fidl::encoding::Depth,
543 ) -> fidl::Result<()> {
544 encoder.debug_check_bounds::<ControllerJoinMulticastGroupRequest>(offset);
545 self.0.encode(encoder, offset + 0, depth)?;
549 self.1.encode(encoder, offset + 16, depth)?;
550 Ok(())
551 }
552 }
553
554 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
555 for ControllerJoinMulticastGroupRequest
556 {
557 #[inline(always)]
558 fn new_empty() -> Self {
559 Self {
560 address: fidl::new_empty!(fidl_fuchsia_net_common::IpAddress, D),
561 interface_id: fidl::new_empty!(u64, D),
562 }
563 }
564
565 #[inline]
566 unsafe fn decode(
567 &mut self,
568 decoder: &mut fidl::encoding::Decoder<'_, D>,
569 offset: usize,
570 _depth: fidl::encoding::Depth,
571 ) -> fidl::Result<()> {
572 decoder.debug_check_bounds::<Self>(offset);
573 fidl::decode!(
575 fidl_fuchsia_net_common::IpAddress,
576 D,
577 &mut self.address,
578 decoder,
579 offset + 0,
580 _depth
581 )?;
582 fidl::decode!(u64, D, &mut self.interface_id, decoder, offset + 16, _depth)?;
583 Ok(())
584 }
585 }
586
587 impl fidl::encoding::ValueTypeMarker for ControllerLeaveMulticastGroupRequest {
588 type Borrowed<'a> = &'a Self;
589 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
590 value
591 }
592 }
593
594 unsafe impl fidl::encoding::TypeMarker for ControllerLeaveMulticastGroupRequest {
595 type Owned = Self;
596
597 #[inline(always)]
598 fn inline_align(_context: fidl::encoding::Context) -> usize {
599 8
600 }
601
602 #[inline(always)]
603 fn inline_size(_context: fidl::encoding::Context) -> usize {
604 24
605 }
606 }
607
608 unsafe impl<D: fidl::encoding::ResourceDialect>
609 fidl::encoding::Encode<ControllerLeaveMulticastGroupRequest, D>
610 for &ControllerLeaveMulticastGroupRequest
611 {
612 #[inline]
613 unsafe fn encode(
614 self,
615 encoder: &mut fidl::encoding::Encoder<'_, D>,
616 offset: usize,
617 _depth: fidl::encoding::Depth,
618 ) -> fidl::Result<()> {
619 encoder.debug_check_bounds::<ControllerLeaveMulticastGroupRequest>(offset);
620 fidl::encoding::Encode::<ControllerLeaveMulticastGroupRequest, D>::encode(
622 (
623 <fidl_fuchsia_net_common::IpAddress as fidl::encoding::ValueTypeMarker>::borrow(
624 &self.address,
625 ),
626 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.interface_id),
627 ),
628 encoder,
629 offset,
630 _depth,
631 )
632 }
633 }
634 unsafe impl<
635 D: fidl::encoding::ResourceDialect,
636 T0: fidl::encoding::Encode<fidl_fuchsia_net_common::IpAddress, D>,
637 T1: fidl::encoding::Encode<u64, D>,
638 > fidl::encoding::Encode<ControllerLeaveMulticastGroupRequest, D> for (T0, T1)
639 {
640 #[inline]
641 unsafe fn encode(
642 self,
643 encoder: &mut fidl::encoding::Encoder<'_, D>,
644 offset: usize,
645 depth: fidl::encoding::Depth,
646 ) -> fidl::Result<()> {
647 encoder.debug_check_bounds::<ControllerLeaveMulticastGroupRequest>(offset);
648 self.0.encode(encoder, offset + 0, depth)?;
652 self.1.encode(encoder, offset + 16, depth)?;
653 Ok(())
654 }
655 }
656
657 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
658 for ControllerLeaveMulticastGroupRequest
659 {
660 #[inline(always)]
661 fn new_empty() -> Self {
662 Self {
663 address: fidl::new_empty!(fidl_fuchsia_net_common::IpAddress, D),
664 interface_id: fidl::new_empty!(u64, D),
665 }
666 }
667
668 #[inline]
669 unsafe fn decode(
670 &mut self,
671 decoder: &mut fidl::encoding::Decoder<'_, D>,
672 offset: usize,
673 _depth: fidl::encoding::Depth,
674 ) -> fidl::Result<()> {
675 decoder.debug_check_bounds::<Self>(offset);
676 fidl::decode!(
678 fidl_fuchsia_net_common::IpAddress,
679 D,
680 &mut self.address,
681 decoder,
682 offset + 0,
683 _depth
684 )?;
685 fidl::decode!(u64, D, &mut self.interface_id, decoder, offset + 16, _depth)?;
686 Ok(())
687 }
688 }
689
690 impl fidl::encoding::ValueTypeMarker for ControllerPingRequest {
691 type Borrowed<'a> = &'a Self;
692 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
693 value
694 }
695 }
696
697 unsafe impl fidl::encoding::TypeMarker for ControllerPingRequest {
698 type Owned = Self;
699
700 #[inline(always)]
701 fn inline_align(_context: fidl::encoding::Context) -> usize {
702 8
703 }
704
705 #[inline(always)]
706 fn inline_size(_context: fidl::encoding::Context) -> usize {
707 48
708 }
709 }
710
711 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ControllerPingRequest, D>
712 for &ControllerPingRequest
713 {
714 #[inline]
715 unsafe fn encode(
716 self,
717 encoder: &mut fidl::encoding::Encoder<'_, D>,
718 offset: usize,
719 _depth: fidl::encoding::Depth,
720 ) -> fidl::Result<()> {
721 encoder.debug_check_bounds::<ControllerPingRequest>(offset);
722 fidl::encoding::Encode::<ControllerPingRequest, D>::encode(
724 (
725 <fidl_fuchsia_net_common::IpAddress as fidl::encoding::ValueTypeMarker>::borrow(&self.target),
726 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.payload_length),
727 <fidl::encoding::Optional<fidl::encoding::BoundedString<15>> as fidl::encoding::ValueTypeMarker>::borrow(&self.interface_name),
728 <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timeout),
729 ),
730 encoder, offset, _depth
731 )
732 }
733 }
734 unsafe impl<
735 D: fidl::encoding::ResourceDialect,
736 T0: fidl::encoding::Encode<fidl_fuchsia_net_common::IpAddress, D>,
737 T1: fidl::encoding::Encode<u16, D>,
738 T2: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<15>>, D>,
739 T3: fidl::encoding::Encode<i64, D>,
740 > fidl::encoding::Encode<ControllerPingRequest, D> for (T0, T1, T2, T3)
741 {
742 #[inline]
743 unsafe fn encode(
744 self,
745 encoder: &mut fidl::encoding::Encoder<'_, D>,
746 offset: usize,
747 depth: fidl::encoding::Depth,
748 ) -> fidl::Result<()> {
749 encoder.debug_check_bounds::<ControllerPingRequest>(offset);
750 unsafe {
753 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
754 (ptr as *mut u64).write_unaligned(0);
755 }
756 self.0.encode(encoder, offset + 0, depth)?;
758 self.1.encode(encoder, offset + 16, depth)?;
759 self.2.encode(encoder, offset + 24, depth)?;
760 self.3.encode(encoder, offset + 40, depth)?;
761 Ok(())
762 }
763 }
764
765 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControllerPingRequest {
766 #[inline(always)]
767 fn new_empty() -> Self {
768 Self {
769 target: fidl::new_empty!(fidl_fuchsia_net_common::IpAddress, D),
770 payload_length: fidl::new_empty!(u16, D),
771 interface_name: fidl::new_empty!(
772 fidl::encoding::Optional<fidl::encoding::BoundedString<15>>,
773 D
774 ),
775 timeout: fidl::new_empty!(i64, D),
776 }
777 }
778
779 #[inline]
780 unsafe fn decode(
781 &mut self,
782 decoder: &mut fidl::encoding::Decoder<'_, D>,
783 offset: usize,
784 _depth: fidl::encoding::Depth,
785 ) -> fidl::Result<()> {
786 decoder.debug_check_bounds::<Self>(offset);
787 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
789 let padval = unsafe { (ptr as *const u64).read_unaligned() };
790 let mask = 0xffffffffffff0000u64;
791 let maskedval = padval & mask;
792 if maskedval != 0 {
793 return Err(fidl::Error::NonZeroPadding {
794 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
795 });
796 }
797 fidl::decode!(
798 fidl_fuchsia_net_common::IpAddress,
799 D,
800 &mut self.target,
801 decoder,
802 offset + 0,
803 _depth
804 )?;
805 fidl::decode!(u16, D, &mut self.payload_length, decoder, offset + 16, _depth)?;
806 fidl::decode!(
807 fidl::encoding::Optional<fidl::encoding::BoundedString<15>>,
808 D,
809 &mut self.interface_name,
810 decoder,
811 offset + 24,
812 _depth
813 )?;
814 fidl::decode!(i64, D, &mut self.timeout, decoder, offset + 40, _depth)?;
815 Ok(())
816 }
817 }
818
819 impl fidl::encoding::ValueTypeMarker for ControllerPollUdpRequest {
820 type Borrowed<'a> = &'a Self;
821 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
822 value
823 }
824 }
825
826 unsafe impl fidl::encoding::TypeMarker for ControllerPollUdpRequest {
827 type Owned = Self;
828
829 #[inline(always)]
830 fn inline_align(_context: fidl::encoding::Context) -> usize {
831 8
832 }
833
834 #[inline(always)]
835 fn inline_size(_context: fidl::encoding::Context) -> usize {
836 48
837 }
838 }
839
840 unsafe impl<D: fidl::encoding::ResourceDialect>
841 fidl::encoding::Encode<ControllerPollUdpRequest, D> for &ControllerPollUdpRequest
842 {
843 #[inline]
844 unsafe fn encode(
845 self,
846 encoder: &mut fidl::encoding::Encoder<'_, D>,
847 offset: usize,
848 _depth: fidl::encoding::Depth,
849 ) -> fidl::Result<()> {
850 encoder.debug_check_bounds::<ControllerPollUdpRequest>(offset);
851 fidl::encoding::Encode::<ControllerPollUdpRequest, D>::encode(
853 (
854 <fidl_fuchsia_net_common::SocketAddress as fidl::encoding::ValueTypeMarker>::borrow(&self.target),
855 <fidl::encoding::Vector<u8, 1024> as fidl::encoding::ValueTypeMarker>::borrow(&self.payload),
856 <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timeout),
857 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.num_retries),
858 ),
859 encoder, offset, _depth
860 )
861 }
862 }
863 unsafe impl<
864 D: fidl::encoding::ResourceDialect,
865 T0: fidl::encoding::Encode<fidl_fuchsia_net_common::SocketAddress, D>,
866 T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 1024>, D>,
867 T2: fidl::encoding::Encode<i64, D>,
868 T3: fidl::encoding::Encode<u16, D>,
869 > fidl::encoding::Encode<ControllerPollUdpRequest, D> for (T0, T1, T2, T3)
870 {
871 #[inline]
872 unsafe fn encode(
873 self,
874 encoder: &mut fidl::encoding::Encoder<'_, D>,
875 offset: usize,
876 depth: fidl::encoding::Depth,
877 ) -> fidl::Result<()> {
878 encoder.debug_check_bounds::<ControllerPollUdpRequest>(offset);
879 unsafe {
882 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(40);
883 (ptr as *mut u64).write_unaligned(0);
884 }
885 self.0.encode(encoder, offset + 0, depth)?;
887 self.1.encode(encoder, offset + 16, depth)?;
888 self.2.encode(encoder, offset + 32, depth)?;
889 self.3.encode(encoder, offset + 40, depth)?;
890 Ok(())
891 }
892 }
893
894 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
895 for ControllerPollUdpRequest
896 {
897 #[inline(always)]
898 fn new_empty() -> Self {
899 Self {
900 target: fidl::new_empty!(fidl_fuchsia_net_common::SocketAddress, D),
901 payload: fidl::new_empty!(fidl::encoding::Vector<u8, 1024>, D),
902 timeout: fidl::new_empty!(i64, D),
903 num_retries: fidl::new_empty!(u16, D),
904 }
905 }
906
907 #[inline]
908 unsafe fn decode(
909 &mut self,
910 decoder: &mut fidl::encoding::Decoder<'_, D>,
911 offset: usize,
912 _depth: fidl::encoding::Depth,
913 ) -> fidl::Result<()> {
914 decoder.debug_check_bounds::<Self>(offset);
915 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(40) };
917 let padval = unsafe { (ptr as *const u64).read_unaligned() };
918 let mask = 0xffffffffffff0000u64;
919 let maskedval = padval & mask;
920 if maskedval != 0 {
921 return Err(fidl::Error::NonZeroPadding {
922 padding_start: offset + 40 + ((mask as u64).trailing_zeros() / 8) as usize,
923 });
924 }
925 fidl::decode!(
926 fidl_fuchsia_net_common::SocketAddress,
927 D,
928 &mut self.target,
929 decoder,
930 offset + 0,
931 _depth
932 )?;
933 fidl::decode!(fidl::encoding::Vector<u8, 1024>, D, &mut self.payload, decoder, offset + 16, _depth)?;
934 fidl::decode!(i64, D, &mut self.timeout, decoder, offset + 32, _depth)?;
935 fidl::decode!(u16, D, &mut self.num_retries, decoder, offset + 40, _depth)?;
936 Ok(())
937 }
938 }
939
940 impl fidl::encoding::ValueTypeMarker for ControllerStartDhcpv6ClientRequest {
941 type Borrowed<'a> = &'a Self;
942 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
943 value
944 }
945 }
946
947 unsafe impl fidl::encoding::TypeMarker for ControllerStartDhcpv6ClientRequest {
948 type Owned = Self;
949
950 #[inline(always)]
951 fn inline_align(_context: fidl::encoding::Context) -> usize {
952 8
953 }
954
955 #[inline(always)]
956 fn inline_size(_context: fidl::encoding::Context) -> usize {
957 16
958 }
959 }
960
961 unsafe impl<D: fidl::encoding::ResourceDialect>
962 fidl::encoding::Encode<ControllerStartDhcpv6ClientRequest, D>
963 for &ControllerStartDhcpv6ClientRequest
964 {
965 #[inline]
966 unsafe fn encode(
967 self,
968 encoder: &mut fidl::encoding::Encoder<'_, D>,
969 offset: usize,
970 _depth: fidl::encoding::Depth,
971 ) -> fidl::Result<()> {
972 encoder.debug_check_bounds::<ControllerStartDhcpv6ClientRequest>(offset);
973 fidl::encoding::Encode::<ControllerStartDhcpv6ClientRequest, D>::encode(
975 (
976 <fidl_fuchsia_net_dhcpv6_common::NewClientParams as fidl::encoding::ValueTypeMarker>::borrow(&self.params),
977 ),
978 encoder, offset, _depth
979 )
980 }
981 }
982 unsafe impl<
983 D: fidl::encoding::ResourceDialect,
984 T0: fidl::encoding::Encode<fidl_fuchsia_net_dhcpv6_common::NewClientParams, D>,
985 > fidl::encoding::Encode<ControllerStartDhcpv6ClientRequest, D> for (T0,)
986 {
987 #[inline]
988 unsafe fn encode(
989 self,
990 encoder: &mut fidl::encoding::Encoder<'_, D>,
991 offset: usize,
992 depth: fidl::encoding::Depth,
993 ) -> fidl::Result<()> {
994 encoder.debug_check_bounds::<ControllerStartDhcpv6ClientRequest>(offset);
995 self.0.encode(encoder, offset + 0, depth)?;
999 Ok(())
1000 }
1001 }
1002
1003 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1004 for ControllerStartDhcpv6ClientRequest
1005 {
1006 #[inline(always)]
1007 fn new_empty() -> Self {
1008 Self { params: fidl::new_empty!(fidl_fuchsia_net_dhcpv6_common::NewClientParams, D) }
1009 }
1010
1011 #[inline]
1012 unsafe fn decode(
1013 &mut self,
1014 decoder: &mut fidl::encoding::Decoder<'_, D>,
1015 offset: usize,
1016 _depth: fidl::encoding::Depth,
1017 ) -> fidl::Result<()> {
1018 decoder.debug_check_bounds::<Self>(offset);
1019 fidl::decode!(
1021 fidl_fuchsia_net_dhcpv6_common::NewClientParams,
1022 D,
1023 &mut self.params,
1024 decoder,
1025 offset + 0,
1026 _depth
1027 )?;
1028 Ok(())
1029 }
1030 }
1031
1032 impl fidl::encoding::ValueTypeMarker for ControllerStartHermeticNetworkRealmRequest {
1033 type Borrowed<'a> = &'a Self;
1034 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1035 value
1036 }
1037 }
1038
1039 unsafe impl fidl::encoding::TypeMarker for ControllerStartHermeticNetworkRealmRequest {
1040 type Owned = Self;
1041
1042 #[inline(always)]
1043 fn inline_align(_context: fidl::encoding::Context) -> usize {
1044 4
1045 }
1046
1047 #[inline(always)]
1048 fn inline_size(_context: fidl::encoding::Context) -> usize {
1049 4
1050 }
1051 }
1052
1053 unsafe impl<D: fidl::encoding::ResourceDialect>
1054 fidl::encoding::Encode<ControllerStartHermeticNetworkRealmRequest, D>
1055 for &ControllerStartHermeticNetworkRealmRequest
1056 {
1057 #[inline]
1058 unsafe fn encode(
1059 self,
1060 encoder: &mut fidl::encoding::Encoder<'_, D>,
1061 offset: usize,
1062 _depth: fidl::encoding::Depth,
1063 ) -> fidl::Result<()> {
1064 encoder.debug_check_bounds::<ControllerStartHermeticNetworkRealmRequest>(offset);
1065 fidl::encoding::Encode::<ControllerStartHermeticNetworkRealmRequest, D>::encode(
1067 (<Netstack as fidl::encoding::ValueTypeMarker>::borrow(&self.netstack),),
1068 encoder,
1069 offset,
1070 _depth,
1071 )
1072 }
1073 }
1074 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Netstack, D>>
1075 fidl::encoding::Encode<ControllerStartHermeticNetworkRealmRequest, D> for (T0,)
1076 {
1077 #[inline]
1078 unsafe fn encode(
1079 self,
1080 encoder: &mut fidl::encoding::Encoder<'_, D>,
1081 offset: usize,
1082 depth: fidl::encoding::Depth,
1083 ) -> fidl::Result<()> {
1084 encoder.debug_check_bounds::<ControllerStartHermeticNetworkRealmRequest>(offset);
1085 self.0.encode(encoder, offset + 0, depth)?;
1089 Ok(())
1090 }
1091 }
1092
1093 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1094 for ControllerStartHermeticNetworkRealmRequest
1095 {
1096 #[inline(always)]
1097 fn new_empty() -> Self {
1098 Self { netstack: fidl::new_empty!(Netstack, D) }
1099 }
1100
1101 #[inline]
1102 unsafe fn decode(
1103 &mut self,
1104 decoder: &mut fidl::encoding::Decoder<'_, D>,
1105 offset: usize,
1106 _depth: fidl::encoding::Depth,
1107 ) -> fidl::Result<()> {
1108 decoder.debug_check_bounds::<Self>(offset);
1109 fidl::decode!(Netstack, D, &mut self.netstack, decoder, offset + 0, _depth)?;
1111 Ok(())
1112 }
1113 }
1114
1115 impl fidl::encoding::ValueTypeMarker for ControllerStartStubRequest {
1116 type Borrowed<'a> = &'a Self;
1117 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1118 value
1119 }
1120 }
1121
1122 unsafe impl fidl::encoding::TypeMarker for ControllerStartStubRequest {
1123 type Owned = Self;
1124
1125 #[inline(always)]
1126 fn inline_align(_context: fidl::encoding::Context) -> usize {
1127 8
1128 }
1129
1130 #[inline(always)]
1131 fn inline_size(_context: fidl::encoding::Context) -> usize {
1132 16
1133 }
1134 }
1135
1136 unsafe impl<D: fidl::encoding::ResourceDialect>
1137 fidl::encoding::Encode<ControllerStartStubRequest, D> for &ControllerStartStubRequest
1138 {
1139 #[inline]
1140 unsafe fn encode(
1141 self,
1142 encoder: &mut fidl::encoding::Encoder<'_, D>,
1143 offset: usize,
1144 _depth: fidl::encoding::Depth,
1145 ) -> fidl::Result<()> {
1146 encoder.debug_check_bounds::<ControllerStartStubRequest>(offset);
1147 fidl::encoding::Encode::<ControllerStartStubRequest, D>::encode(
1149 (<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(
1150 &self.component_url,
1151 ),),
1152 encoder,
1153 offset,
1154 _depth,
1155 )
1156 }
1157 }
1158 unsafe impl<
1159 D: fidl::encoding::ResourceDialect,
1160 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1161 > fidl::encoding::Encode<ControllerStartStubRequest, D> for (T0,)
1162 {
1163 #[inline]
1164 unsafe fn encode(
1165 self,
1166 encoder: &mut fidl::encoding::Encoder<'_, D>,
1167 offset: usize,
1168 depth: fidl::encoding::Depth,
1169 ) -> fidl::Result<()> {
1170 encoder.debug_check_bounds::<ControllerStartStubRequest>(offset);
1171 self.0.encode(encoder, offset + 0, depth)?;
1175 Ok(())
1176 }
1177 }
1178
1179 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1180 for ControllerStartStubRequest
1181 {
1182 #[inline(always)]
1183 fn new_empty() -> Self {
1184 Self { component_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D) }
1185 }
1186
1187 #[inline]
1188 unsafe fn decode(
1189 &mut self,
1190 decoder: &mut fidl::encoding::Decoder<'_, D>,
1191 offset: usize,
1192 _depth: fidl::encoding::Depth,
1193 ) -> fidl::Result<()> {
1194 decoder.debug_check_bounds::<Self>(offset);
1195 fidl::decode!(
1197 fidl::encoding::BoundedString<4096>,
1198 D,
1199 &mut self.component_url,
1200 decoder,
1201 offset + 0,
1202 _depth
1203 )?;
1204 Ok(())
1205 }
1206 }
1207
1208 impl fidl::encoding::ValueTypeMarker for ControllerPollUdpResponse {
1209 type Borrowed<'a> = &'a Self;
1210 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1211 value
1212 }
1213 }
1214
1215 unsafe impl fidl::encoding::TypeMarker for ControllerPollUdpResponse {
1216 type Owned = Self;
1217
1218 #[inline(always)]
1219 fn inline_align(_context: fidl::encoding::Context) -> usize {
1220 8
1221 }
1222
1223 #[inline(always)]
1224 fn inline_size(_context: fidl::encoding::Context) -> usize {
1225 16
1226 }
1227 }
1228
1229 unsafe impl<D: fidl::encoding::ResourceDialect>
1230 fidl::encoding::Encode<ControllerPollUdpResponse, D> for &ControllerPollUdpResponse
1231 {
1232 #[inline]
1233 unsafe fn encode(
1234 self,
1235 encoder: &mut fidl::encoding::Encoder<'_, D>,
1236 offset: usize,
1237 _depth: fidl::encoding::Depth,
1238 ) -> fidl::Result<()> {
1239 encoder.debug_check_bounds::<ControllerPollUdpResponse>(offset);
1240 fidl::encoding::Encode::<ControllerPollUdpResponse, D>::encode(
1242 (<fidl::encoding::Vector<u8, 1024> as fidl::encoding::ValueTypeMarker>::borrow(
1243 &self.payload,
1244 ),),
1245 encoder,
1246 offset,
1247 _depth,
1248 )
1249 }
1250 }
1251 unsafe impl<
1252 D: fidl::encoding::ResourceDialect,
1253 T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 1024>, D>,
1254 > fidl::encoding::Encode<ControllerPollUdpResponse, D> for (T0,)
1255 {
1256 #[inline]
1257 unsafe fn encode(
1258 self,
1259 encoder: &mut fidl::encoding::Encoder<'_, D>,
1260 offset: usize,
1261 depth: fidl::encoding::Depth,
1262 ) -> fidl::Result<()> {
1263 encoder.debug_check_bounds::<ControllerPollUdpResponse>(offset);
1264 self.0.encode(encoder, offset + 0, depth)?;
1268 Ok(())
1269 }
1270 }
1271
1272 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1273 for ControllerPollUdpResponse
1274 {
1275 #[inline(always)]
1276 fn new_empty() -> Self {
1277 Self { payload: fidl::new_empty!(fidl::encoding::Vector<u8, 1024>, D) }
1278 }
1279
1280 #[inline]
1281 unsafe fn decode(
1282 &mut self,
1283 decoder: &mut fidl::encoding::Decoder<'_, D>,
1284 offset: usize,
1285 _depth: fidl::encoding::Depth,
1286 ) -> fidl::Result<()> {
1287 decoder.debug_check_bounds::<Self>(offset);
1288 fidl::decode!(fidl::encoding::Vector<u8, 1024>, D, &mut self.payload, decoder, offset + 0, _depth)?;
1290 Ok(())
1291 }
1292 }
1293
1294 impl ControllerStartOutOfStackDhcpv4ClientRequest {
1295 #[inline(always)]
1296 fn max_ordinal_present(&self) -> u64 {
1297 if let Some(_) = self.interface_id {
1298 return 1;
1299 }
1300 0
1301 }
1302 }
1303
1304 impl fidl::encoding::ValueTypeMarker for ControllerStartOutOfStackDhcpv4ClientRequest {
1305 type Borrowed<'a> = &'a Self;
1306 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1307 value
1308 }
1309 }
1310
1311 unsafe impl fidl::encoding::TypeMarker for ControllerStartOutOfStackDhcpv4ClientRequest {
1312 type Owned = Self;
1313
1314 #[inline(always)]
1315 fn inline_align(_context: fidl::encoding::Context) -> usize {
1316 8
1317 }
1318
1319 #[inline(always)]
1320 fn inline_size(_context: fidl::encoding::Context) -> usize {
1321 16
1322 }
1323 }
1324
1325 unsafe impl<D: fidl::encoding::ResourceDialect>
1326 fidl::encoding::Encode<ControllerStartOutOfStackDhcpv4ClientRequest, D>
1327 for &ControllerStartOutOfStackDhcpv4ClientRequest
1328 {
1329 unsafe fn encode(
1330 self,
1331 encoder: &mut fidl::encoding::Encoder<'_, D>,
1332 offset: usize,
1333 mut depth: fidl::encoding::Depth,
1334 ) -> fidl::Result<()> {
1335 encoder.debug_check_bounds::<ControllerStartOutOfStackDhcpv4ClientRequest>(offset);
1336 let max_ordinal: u64 = self.max_ordinal_present();
1338 encoder.write_num(max_ordinal, offset);
1339 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1340 if max_ordinal == 0 {
1342 return Ok(());
1343 }
1344 depth.increment()?;
1345 let envelope_size = 8;
1346 let bytes_len = max_ordinal as usize * envelope_size;
1347 #[allow(unused_variables)]
1348 let offset = encoder.out_of_line_offset(bytes_len);
1349 let mut _prev_end_offset: usize = 0;
1350 if 1 > max_ordinal {
1351 return Ok(());
1352 }
1353
1354 let cur_offset: usize = (1 - 1) * envelope_size;
1357
1358 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1360
1361 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1366 self.interface_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1367 encoder,
1368 offset + cur_offset,
1369 depth,
1370 )?;
1371
1372 _prev_end_offset = cur_offset + envelope_size;
1373
1374 Ok(())
1375 }
1376 }
1377
1378 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1379 for ControllerStartOutOfStackDhcpv4ClientRequest
1380 {
1381 #[inline(always)]
1382 fn new_empty() -> Self {
1383 Self::default()
1384 }
1385
1386 unsafe fn decode(
1387 &mut self,
1388 decoder: &mut fidl::encoding::Decoder<'_, D>,
1389 offset: usize,
1390 mut depth: fidl::encoding::Depth,
1391 ) -> fidl::Result<()> {
1392 decoder.debug_check_bounds::<Self>(offset);
1393 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1394 None => return Err(fidl::Error::NotNullable),
1395 Some(len) => len,
1396 };
1397 if len == 0 {
1399 return Ok(());
1400 };
1401 depth.increment()?;
1402 let envelope_size = 8;
1403 let bytes_len = len * envelope_size;
1404 let offset = decoder.out_of_line_offset(bytes_len)?;
1405 let mut _next_ordinal_to_read = 0;
1407 let mut next_offset = offset;
1408 let end_offset = offset + bytes_len;
1409 _next_ordinal_to_read += 1;
1410 if next_offset >= end_offset {
1411 return Ok(());
1412 }
1413
1414 while _next_ordinal_to_read < 1 {
1416 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1417 _next_ordinal_to_read += 1;
1418 next_offset += envelope_size;
1419 }
1420
1421 let next_out_of_line = decoder.next_out_of_line();
1422 let handles_before = decoder.remaining_handles();
1423 if let Some((inlined, num_bytes, num_handles)) =
1424 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1425 {
1426 let member_inline_size =
1427 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1428 if inlined != (member_inline_size <= 4) {
1429 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1430 }
1431 let inner_offset;
1432 let mut inner_depth = depth.clone();
1433 if inlined {
1434 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1435 inner_offset = next_offset;
1436 } else {
1437 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1438 inner_depth.increment()?;
1439 }
1440 let val_ref = self.interface_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
1441 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1442 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1443 {
1444 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1445 }
1446 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1447 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1448 }
1449 }
1450
1451 next_offset += envelope_size;
1452
1453 while next_offset < end_offset {
1455 _next_ordinal_to_read += 1;
1456 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1457 next_offset += envelope_size;
1458 }
1459
1460 Ok(())
1461 }
1462 }
1463
1464 impl ControllerStopOutOfStackDhcpv4ClientRequest {
1465 #[inline(always)]
1466 fn max_ordinal_present(&self) -> u64 {
1467 if let Some(_) = self.interface_id {
1468 return 1;
1469 }
1470 0
1471 }
1472 }
1473
1474 impl fidl::encoding::ValueTypeMarker for ControllerStopOutOfStackDhcpv4ClientRequest {
1475 type Borrowed<'a> = &'a Self;
1476 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1477 value
1478 }
1479 }
1480
1481 unsafe impl fidl::encoding::TypeMarker for ControllerStopOutOfStackDhcpv4ClientRequest {
1482 type Owned = Self;
1483
1484 #[inline(always)]
1485 fn inline_align(_context: fidl::encoding::Context) -> usize {
1486 8
1487 }
1488
1489 #[inline(always)]
1490 fn inline_size(_context: fidl::encoding::Context) -> usize {
1491 16
1492 }
1493 }
1494
1495 unsafe impl<D: fidl::encoding::ResourceDialect>
1496 fidl::encoding::Encode<ControllerStopOutOfStackDhcpv4ClientRequest, D>
1497 for &ControllerStopOutOfStackDhcpv4ClientRequest
1498 {
1499 unsafe fn encode(
1500 self,
1501 encoder: &mut fidl::encoding::Encoder<'_, D>,
1502 offset: usize,
1503 mut depth: fidl::encoding::Depth,
1504 ) -> fidl::Result<()> {
1505 encoder.debug_check_bounds::<ControllerStopOutOfStackDhcpv4ClientRequest>(offset);
1506 let max_ordinal: u64 = self.max_ordinal_present();
1508 encoder.write_num(max_ordinal, offset);
1509 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1510 if max_ordinal == 0 {
1512 return Ok(());
1513 }
1514 depth.increment()?;
1515 let envelope_size = 8;
1516 let bytes_len = max_ordinal as usize * envelope_size;
1517 #[allow(unused_variables)]
1518 let offset = encoder.out_of_line_offset(bytes_len);
1519 let mut _prev_end_offset: usize = 0;
1520 if 1 > max_ordinal {
1521 return Ok(());
1522 }
1523
1524 let cur_offset: usize = (1 - 1) * envelope_size;
1527
1528 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1530
1531 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1536 self.interface_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1537 encoder,
1538 offset + cur_offset,
1539 depth,
1540 )?;
1541
1542 _prev_end_offset = cur_offset + envelope_size;
1543
1544 Ok(())
1545 }
1546 }
1547
1548 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1549 for ControllerStopOutOfStackDhcpv4ClientRequest
1550 {
1551 #[inline(always)]
1552 fn new_empty() -> Self {
1553 Self::default()
1554 }
1555
1556 unsafe fn decode(
1557 &mut self,
1558 decoder: &mut fidl::encoding::Decoder<'_, D>,
1559 offset: usize,
1560 mut depth: fidl::encoding::Depth,
1561 ) -> fidl::Result<()> {
1562 decoder.debug_check_bounds::<Self>(offset);
1563 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1564 None => return Err(fidl::Error::NotNullable),
1565 Some(len) => len,
1566 };
1567 if len == 0 {
1569 return Ok(());
1570 };
1571 depth.increment()?;
1572 let envelope_size = 8;
1573 let bytes_len = len * envelope_size;
1574 let offset = decoder.out_of_line_offset(bytes_len)?;
1575 let mut _next_ordinal_to_read = 0;
1577 let mut next_offset = offset;
1578 let end_offset = offset + bytes_len;
1579 _next_ordinal_to_read += 1;
1580 if next_offset >= end_offset {
1581 return Ok(());
1582 }
1583
1584 while _next_ordinal_to_read < 1 {
1586 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1587 _next_ordinal_to_read += 1;
1588 next_offset += envelope_size;
1589 }
1590
1591 let next_out_of_line = decoder.next_out_of_line();
1592 let handles_before = decoder.remaining_handles();
1593 if let Some((inlined, num_bytes, num_handles)) =
1594 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1595 {
1596 let member_inline_size =
1597 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1598 if inlined != (member_inline_size <= 4) {
1599 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1600 }
1601 let inner_offset;
1602 let mut inner_depth = depth.clone();
1603 if inlined {
1604 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1605 inner_offset = next_offset;
1606 } else {
1607 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1608 inner_depth.increment()?;
1609 }
1610 let val_ref = self.interface_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
1611 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1612 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1613 {
1614 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1615 }
1616 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1617 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1618 }
1619 }
1620
1621 next_offset += envelope_size;
1622
1623 while next_offset < end_offset {
1625 _next_ordinal_to_read += 1;
1626 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1627 next_offset += envelope_size;
1628 }
1629
1630 Ok(())
1631 }
1632 }
1633}