1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
13#[repr(u32)]
14pub enum AddressRemovalReason {
15 Invalid = 1,
17 AlreadyAssigned = 2,
19 DadFailed = 3,
23 InterfaceRemoved = 4,
25 UserRemoved = 5,
27 InvalidProperties = 6,
30 Forfeited = 7,
36}
37
38impl AddressRemovalReason {
39 #[inline]
40 pub fn from_primitive(prim: u32) -> Option<Self> {
41 match prim {
42 1 => Some(Self::Invalid),
43 2 => Some(Self::AlreadyAssigned),
44 3 => Some(Self::DadFailed),
45 4 => Some(Self::InterfaceRemoved),
46 5 => Some(Self::UserRemoved),
47 6 => Some(Self::InvalidProperties),
48 7 => Some(Self::Forfeited),
49 _ => None,
50 }
51 }
52
53 #[inline]
54 pub const fn into_primitive(self) -> u32 {
55 self as u32
56 }
57}
58
59#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
60pub enum ControlDisableError {
61 #[doc(hidden)]
62 __SourceBreaking { unknown_ordinal: u32 },
63}
64
65#[macro_export]
67macro_rules! ControlDisableErrorUnknown {
68 () => {
69 _
70 };
71}
72
73impl ControlDisableError {
74 #[inline]
75 pub fn from_primitive(prim: u32) -> Option<Self> {
76 match prim {
77 _ => None,
78 }
79 }
80
81 #[inline]
82 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
83 match prim {
84 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
85 }
86 }
87
88 #[inline]
89 pub fn unknown() -> Self {
90 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
91 }
92
93 #[inline]
94 pub const fn into_primitive(self) -> u32 {
95 match self {
96 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
97 }
98 }
99
100 #[inline]
101 pub fn is_unknown(&self) -> bool {
102 match self {
103 Self::__SourceBreaking { unknown_ordinal: _ } => true,
104 }
105 }
106}
107
108#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
109pub enum ControlEnableError {
110 #[doc(hidden)]
111 __SourceBreaking { unknown_ordinal: u32 },
112}
113
114#[macro_export]
116macro_rules! ControlEnableErrorUnknown {
117 () => {
118 _
119 };
120}
121
122impl ControlEnableError {
123 #[inline]
124 pub fn from_primitive(prim: u32) -> Option<Self> {
125 match prim {
126 _ => None,
127 }
128 }
129
130 #[inline]
131 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
132 match prim {
133 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
134 }
135 }
136
137 #[inline]
138 pub fn unknown() -> Self {
139 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
140 }
141
142 #[inline]
143 pub const fn into_primitive(self) -> u32 {
144 match self {
145 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
146 }
147 }
148
149 #[inline]
150 pub fn is_unknown(&self) -> bool {
151 match self {
152 Self::__SourceBreaking { unknown_ordinal: _ } => true,
153 }
154 }
155}
156
157#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
158pub enum ControlGetConfigurationError {
159 #[doc(hidden)]
160 __SourceBreaking { unknown_ordinal: u32 },
161}
162
163#[macro_export]
165macro_rules! ControlGetConfigurationErrorUnknown {
166 () => {
167 _
168 };
169}
170
171impl ControlGetConfigurationError {
172 #[inline]
173 pub fn from_primitive(prim: u32) -> Option<Self> {
174 match prim {
175 _ => None,
176 }
177 }
178
179 #[inline]
180 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
181 match prim {
182 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
183 }
184 }
185
186 #[inline]
187 pub fn unknown() -> Self {
188 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
189 }
190
191 #[inline]
192 pub const fn into_primitive(self) -> u32 {
193 match self {
194 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
195 }
196 }
197
198 #[inline]
199 pub fn is_unknown(&self) -> bool {
200 match self {
201 Self::__SourceBreaking { unknown_ordinal: _ } => true,
202 }
203 }
204}
205
206#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
207pub enum ControlRemoveAddressError {
208 #[doc(hidden)]
209 __SourceBreaking { unknown_ordinal: u32 },
210}
211
212#[macro_export]
214macro_rules! ControlRemoveAddressErrorUnknown {
215 () => {
216 _
217 };
218}
219
220impl ControlRemoveAddressError {
221 #[inline]
222 pub fn from_primitive(prim: u32) -> Option<Self> {
223 match prim {
224 _ => None,
225 }
226 }
227
228 #[inline]
229 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
230 match prim {
231 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
232 }
233 }
234
235 #[inline]
236 pub fn unknown() -> Self {
237 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
238 }
239
240 #[inline]
241 pub const fn into_primitive(self) -> u32 {
242 match self {
243 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
244 }
245 }
246
247 #[inline]
248 pub fn is_unknown(&self) -> bool {
249 match self {
250 Self::__SourceBreaking { unknown_ordinal: _ } => true,
251 }
252 }
253}
254
255#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
256pub enum ControlRemoveError {
257 NotAllowed,
259 #[doc(hidden)]
260 __SourceBreaking { unknown_ordinal: u32 },
261}
262
263#[macro_export]
265macro_rules! ControlRemoveErrorUnknown {
266 () => {
267 _
268 };
269}
270
271impl ControlRemoveError {
272 #[inline]
273 pub fn from_primitive(prim: u32) -> Option<Self> {
274 match prim {
275 1 => Some(Self::NotAllowed),
276 _ => None,
277 }
278 }
279
280 #[inline]
281 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
282 match prim {
283 1 => Self::NotAllowed,
284 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
285 }
286 }
287
288 #[inline]
289 pub fn unknown() -> Self {
290 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
291 }
292
293 #[inline]
294 pub const fn into_primitive(self) -> u32 {
295 match self {
296 Self::NotAllowed => 1,
297 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
298 }
299 }
300
301 #[inline]
302 pub fn is_unknown(&self) -> bool {
303 match self {
304 Self::__SourceBreaking { unknown_ordinal: _ } => true,
305 _ => false,
306 }
307 }
308}
309
310#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
311pub enum ControlSetConfigurationError {
312 Ipv4ForwardingUnsupported,
315 Ipv4MulticastForwardingUnsupported,
318 Ipv4IgmpVersionUnsupported,
321 Ipv6ForwardingUnsupported,
324 Ipv6MulticastForwardingUnsupported,
327 Ipv6MldVersionUnsupported,
330 IllegalZeroValue,
333 ArpNotSupported,
337 NdpNotSupported,
341 IllegalNegativeValue,
344 #[doc(hidden)]
345 __SourceBreaking { unknown_ordinal: u32 },
346}
347
348#[macro_export]
350macro_rules! ControlSetConfigurationErrorUnknown {
351 () => {
352 _
353 };
354}
355
356impl ControlSetConfigurationError {
357 #[inline]
358 pub fn from_primitive(prim: u32) -> Option<Self> {
359 match prim {
360 1 => Some(Self::Ipv4ForwardingUnsupported),
361 2 => Some(Self::Ipv4MulticastForwardingUnsupported),
362 3 => Some(Self::Ipv4IgmpVersionUnsupported),
363 4 => Some(Self::Ipv6ForwardingUnsupported),
364 5 => Some(Self::Ipv6MulticastForwardingUnsupported),
365 6 => Some(Self::Ipv6MldVersionUnsupported),
366 7 => Some(Self::IllegalZeroValue),
367 8 => Some(Self::ArpNotSupported),
368 9 => Some(Self::NdpNotSupported),
369 10 => Some(Self::IllegalNegativeValue),
370 _ => None,
371 }
372 }
373
374 #[inline]
375 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
376 match prim {
377 1 => Self::Ipv4ForwardingUnsupported,
378 2 => Self::Ipv4MulticastForwardingUnsupported,
379 3 => Self::Ipv4IgmpVersionUnsupported,
380 4 => Self::Ipv6ForwardingUnsupported,
381 5 => Self::Ipv6MulticastForwardingUnsupported,
382 6 => Self::Ipv6MldVersionUnsupported,
383 7 => Self::IllegalZeroValue,
384 8 => Self::ArpNotSupported,
385 9 => Self::NdpNotSupported,
386 10 => Self::IllegalNegativeValue,
387 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
388 }
389 }
390
391 #[inline]
392 pub fn unknown() -> Self {
393 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
394 }
395
396 #[inline]
397 pub const fn into_primitive(self) -> u32 {
398 match self {
399 Self::Ipv4ForwardingUnsupported => 1,
400 Self::Ipv4MulticastForwardingUnsupported => 2,
401 Self::Ipv4IgmpVersionUnsupported => 3,
402 Self::Ipv6ForwardingUnsupported => 4,
403 Self::Ipv6MulticastForwardingUnsupported => 5,
404 Self::Ipv6MldVersionUnsupported => 6,
405 Self::IllegalZeroValue => 7,
406 Self::ArpNotSupported => 8,
407 Self::NdpNotSupported => 9,
408 Self::IllegalNegativeValue => 10,
409 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
410 }
411 }
412
413 #[inline]
414 pub fn is_unknown(&self) -> bool {
415 match self {
416 Self::__SourceBreaking { unknown_ordinal: _ } => true,
417 _ => false,
418 }
419 }
420}
421
422#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
423pub enum IgmpVersion {
424 V1,
426 V2,
428 V3,
430 #[doc(hidden)]
431 __SourceBreaking { unknown_ordinal: u8 },
432}
433
434#[macro_export]
436macro_rules! IgmpVersionUnknown {
437 () => {
438 _
439 };
440}
441
442impl IgmpVersion {
443 #[inline]
444 pub fn from_primitive(prim: u8) -> Option<Self> {
445 match prim {
446 1 => Some(Self::V1),
447 2 => Some(Self::V2),
448 3 => Some(Self::V3),
449 _ => None,
450 }
451 }
452
453 #[inline]
454 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
455 match prim {
456 1 => Self::V1,
457 2 => Self::V2,
458 3 => Self::V3,
459 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
460 }
461 }
462
463 #[inline]
464 pub fn unknown() -> Self {
465 Self::__SourceBreaking { unknown_ordinal: 0xff }
466 }
467
468 #[inline]
469 pub const fn into_primitive(self) -> u8 {
470 match self {
471 Self::V1 => 1,
472 Self::V2 => 2,
473 Self::V3 => 3,
474 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
475 }
476 }
477
478 #[inline]
479 pub fn is_unknown(&self) -> bool {
480 match self {
481 Self::__SourceBreaking { unknown_ordinal: _ } => true,
482 _ => false,
483 }
484 }
485}
486
487#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
488pub enum InterfaceRemovedReason {
489 DuplicateName,
492 PortAlreadyBound,
494 BadPort,
497 PortClosed,
499 User,
501 InvalidNetstackManagedRoutesDesignation,
504 LocalRouteTableUnavailable,
506 #[doc(hidden)]
507 __SourceBreaking { unknown_ordinal: u32 },
508}
509
510#[macro_export]
512macro_rules! InterfaceRemovedReasonUnknown {
513 () => {
514 _
515 };
516}
517
518impl InterfaceRemovedReason {
519 #[inline]
520 pub fn from_primitive(prim: u32) -> Option<Self> {
521 match prim {
522 1 => Some(Self::DuplicateName),
523 2 => Some(Self::PortAlreadyBound),
524 3 => Some(Self::BadPort),
525 4 => Some(Self::PortClosed),
526 5 => Some(Self::User),
527 6 => Some(Self::InvalidNetstackManagedRoutesDesignation),
528 7 => Some(Self::LocalRouteTableUnavailable),
529 _ => None,
530 }
531 }
532
533 #[inline]
534 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
535 match prim {
536 1 => Self::DuplicateName,
537 2 => Self::PortAlreadyBound,
538 3 => Self::BadPort,
539 4 => Self::PortClosed,
540 5 => Self::User,
541 6 => Self::InvalidNetstackManagedRoutesDesignation,
542 7 => Self::LocalRouteTableUnavailable,
543 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
544 }
545 }
546
547 #[inline]
548 pub fn unknown() -> Self {
549 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
550 }
551
552 #[inline]
553 pub const fn into_primitive(self) -> u32 {
554 match self {
555 Self::DuplicateName => 1,
556 Self::PortAlreadyBound => 2,
557 Self::BadPort => 3,
558 Self::PortClosed => 4,
559 Self::User => 5,
560 Self::InvalidNetstackManagedRoutesDesignation => 6,
561 Self::LocalRouteTableUnavailable => 7,
562 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
563 }
564 }
565
566 #[inline]
567 pub fn is_unknown(&self) -> bool {
568 match self {
569 Self::__SourceBreaking { unknown_ordinal: _ } => true,
570 _ => false,
571 }
572 }
573}
574
575#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
576pub enum MldVersion {
577 V1,
579 V2,
581 #[doc(hidden)]
582 __SourceBreaking { unknown_ordinal: u8 },
583}
584
585#[macro_export]
587macro_rules! MldVersionUnknown {
588 () => {
589 _
590 };
591}
592
593impl MldVersion {
594 #[inline]
595 pub fn from_primitive(prim: u8) -> Option<Self> {
596 match prim {
597 1 => Some(Self::V1),
598 2 => Some(Self::V2),
599 _ => None,
600 }
601 }
602
603 #[inline]
604 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
605 match prim {
606 1 => Self::V1,
607 2 => Self::V2,
608 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
609 }
610 }
611
612 #[inline]
613 pub fn unknown() -> Self {
614 Self::__SourceBreaking { unknown_ordinal: 0xff }
615 }
616
617 #[inline]
618 pub const fn into_primitive(self) -> u8 {
619 match self {
620 Self::V1 => 1,
621 Self::V2 => 2,
622 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
623 }
624 }
625
626 #[inline]
627 pub fn is_unknown(&self) -> bool {
628 match self {
629 Self::__SourceBreaking { unknown_ordinal: _ } => true,
630 _ => false,
631 }
632 }
633}
634
635#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
636pub struct AddressStateProviderOnAddressRemovedRequest {
637 pub error: AddressRemovalReason,
638}
639
640impl fidl::Persistable for AddressStateProviderOnAddressRemovedRequest {}
641
642#[derive(Clone, Debug, PartialEq)]
643pub struct AddressStateProviderUpdateAddressPropertiesRequest {
644 pub address_properties: AddressProperties,
645}
646
647impl fidl::Persistable for AddressStateProviderUpdateAddressPropertiesRequest {}
648
649#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
650pub struct AddressStateProviderWatchAddressAssignmentStateResponse {
651 pub assignment_state: fidl_fuchsia_net_interfaces_common::AddressAssignmentState,
652}
653
654impl fidl::Persistable for AddressStateProviderWatchAddressAssignmentStateResponse {}
655
656#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
657#[repr(C)]
658pub struct ControlGetIdResponse {
659 pub id: u64,
660}
661
662impl fidl::Persistable for ControlGetIdResponse {}
663
664#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
665pub struct ControlOnInterfaceRemovedRequest {
666 pub reason: InterfaceRemovedReason,
667}
668
669impl fidl::Persistable for ControlOnInterfaceRemovedRequest {}
670
671#[derive(Clone, Debug, PartialEq)]
672pub struct ControlRemoveAddressRequest {
673 pub address: fidl_fuchsia_net_common::Subnet,
674}
675
676impl fidl::Persistable for ControlRemoveAddressRequest {}
677
678#[derive(Clone, Debug, PartialEq)]
679pub struct ControlSetConfigurationRequest {
680 pub config: Configuration,
681}
682
683impl fidl::Persistable for ControlSetConfigurationRequest {}
684
685#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
686pub struct ControlDisableResponse {
687 pub did_disable: bool,
688}
689
690impl fidl::Persistable for ControlDisableResponse {}
691
692#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
693pub struct ControlEnableResponse {
694 pub did_enable: bool,
695}
696
697impl fidl::Persistable for ControlEnableResponse {}
698
699#[derive(Clone, Debug, PartialEq)]
700pub struct ControlGetConfigurationResponse {
701 pub config: Configuration,
702}
703
704impl fidl::Persistable for ControlGetConfigurationResponse {}
705
706#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
707pub struct ControlRemoveAddressResponse {
708 pub did_remove: bool,
709}
710
711impl fidl::Persistable for ControlRemoveAddressResponse {}
712
713#[derive(Clone, Debug, PartialEq)]
714pub struct ControlSetConfigurationResponse {
715 pub previous_config: Configuration,
716}
717
718impl fidl::Persistable for ControlSetConfigurationResponse {}
719
720#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
721pub struct Empty;
722
723impl fidl::Persistable for Empty {}
724
725#[derive(Clone, Debug, Default, PartialEq)]
727pub struct AddressParameters {
728 pub initial_properties: Option<AddressProperties>,
732 pub temporary: Option<bool>,
749 pub add_subnet_route: Option<bool>,
763 pub perform_dad: Option<bool>,
779 #[doc(hidden)]
780 pub __source_breaking: fidl::marker::SourceBreaking,
781}
782
783impl fidl::Persistable for AddressParameters {}
784
785#[derive(Clone, Debug, Default, PartialEq)]
787pub struct AddressProperties {
788 pub preferred_lifetime_info: Option<fidl_fuchsia_net_interfaces_common::PreferredLifetimeInfo>,
793 pub valid_lifetime_end: Option<i64>,
807 #[doc(hidden)]
808 pub __source_breaking: fidl::marker::SourceBreaking,
809}
810
811impl fidl::Persistable for AddressProperties {}
812
813#[derive(Clone, Debug, Default, PartialEq)]
814pub struct ArpConfiguration {
815 pub nud: Option<NudConfiguration>,
817 pub dad: Option<DadConfiguration>,
822 #[doc(hidden)]
823 pub __source_breaking: fidl::marker::SourceBreaking,
824}
825
826impl fidl::Persistable for ArpConfiguration {}
827
828#[derive(Clone, Debug, Default, PartialEq)]
830pub struct Configuration {
831 pub ipv4: Option<Ipv4Configuration>,
833 pub ipv6: Option<Ipv6Configuration>,
835 #[doc(hidden)]
836 pub __source_breaking: fidl::marker::SourceBreaking,
837}
838
839impl fidl::Persistable for Configuration {}
840
841#[derive(Clone, Debug, Default, PartialEq)]
843pub struct DadConfiguration {
844 pub transmits: Option<u16>,
849 #[doc(hidden)]
850 pub __source_breaking: fidl::marker::SourceBreaking,
851}
852
853impl fidl::Persistable for DadConfiguration {}
854
855#[derive(Clone, Debug, Default, PartialEq)]
856pub struct IgmpConfiguration {
857 pub version: Option<IgmpVersion>,
863 #[doc(hidden)]
864 pub __source_breaking: fidl::marker::SourceBreaking,
865}
866
867impl fidl::Persistable for IgmpConfiguration {}
868
869#[derive(Clone, Debug, Default, PartialEq)]
870pub struct Ipv4Configuration {
871 pub unicast_forwarding: Option<bool>,
874 pub multicast_forwarding: Option<bool>,
876 pub igmp: Option<IgmpConfiguration>,
878 pub arp: Option<ArpConfiguration>,
880 pub enabled: Option<bool>,
884 #[doc(hidden)]
885 pub __source_breaking: fidl::marker::SourceBreaking,
886}
887
888impl fidl::Persistable for Ipv4Configuration {}
889
890#[derive(Clone, Debug, Default, PartialEq)]
891pub struct Ipv6Configuration {
892 pub unicast_forwarding: Option<bool>,
895 pub multicast_forwarding: Option<bool>,
897 pub mld: Option<MldConfiguration>,
899 pub ndp: Option<NdpConfiguration>,
901 pub enabled: Option<bool>,
905 #[doc(hidden)]
906 pub __source_breaking: fidl::marker::SourceBreaking,
907}
908
909impl fidl::Persistable for Ipv6Configuration {}
910
911#[derive(Clone, Debug, Default, PartialEq)]
912pub struct MldConfiguration {
913 pub version: Option<MldVersion>,
919 #[doc(hidden)]
920 pub __source_breaking: fidl::marker::SourceBreaking,
921}
922
923impl fidl::Persistable for MldConfiguration {}
924
925#[derive(Clone, Debug, Default, PartialEq)]
926pub struct NdpConfiguration {
927 pub nud: Option<NudConfiguration>,
929 pub dad: Option<DadConfiguration>,
931 pub slaac: Option<SlaacConfiguration>,
933 pub route_discovery: Option<RouteDiscoveryConfiguration>,
935 pub router_solicitations: Option<RouterSolicitationConfiguration>,
937 #[doc(hidden)]
938 pub __source_breaking: fidl::marker::SourceBreaking,
939}
940
941impl fidl::Persistable for NdpConfiguration {}
942
943#[derive(Clone, Debug, Default, PartialEq)]
947pub struct NudConfiguration {
948 pub max_multicast_solicitations: Option<u16>,
954 pub max_unicast_solicitations: Option<u16>,
959 pub base_reachable_time: Option<i64>,
969 pub retrans_timer: Option<i64>,
985 #[doc(hidden)]
986 pub __source_breaking: fidl::marker::SourceBreaking,
987}
988
989impl fidl::Persistable for NudConfiguration {}
990
991#[derive(Clone, Debug, Default, PartialEq)]
992pub struct RouteDiscoveryConfiguration {
993 pub allow_default_route: Option<bool>,
1002 #[doc(hidden)]
1003 pub __source_breaking: fidl::marker::SourceBreaking,
1004}
1005
1006impl fidl::Persistable for RouteDiscoveryConfiguration {}
1007
1008#[derive(Clone, Debug, Default, PartialEq)]
1009pub struct RouterSolicitationConfiguration {
1010 pub max: Option<u8>,
1022 #[doc(hidden)]
1023 pub __source_breaking: fidl::marker::SourceBreaking,
1024}
1025
1026impl fidl::Persistable for RouterSolicitationConfiguration {}
1027
1028#[derive(Clone, Debug, Default, PartialEq)]
1029pub struct SlaacConfiguration {
1030 pub temporary_address: Option<bool>,
1039 #[doc(hidden)]
1040 pub __source_breaking: fidl::marker::SourceBreaking,
1041}
1042
1043impl fidl::Persistable for SlaacConfiguration {}
1044
1045pub mod address_state_provider_ordinals {
1046 pub const UPDATE_ADDRESS_PROPERTIES: u64 = 0x52bdf5ed96ef573c;
1047 pub const WATCH_ADDRESS_ASSIGNMENT_STATE: u64 = 0x740bb58c1b2d3188;
1048 pub const DETACH: u64 = 0xc752381d739622f;
1049 pub const REMOVE: u64 = 0x554407fe183e78ad;
1050 pub const ON_ADDRESS_ADDED: u64 = 0x624f6ea62cce189e;
1051 pub const ON_ADDRESS_REMOVED: u64 = 0x2480eb672ffd5962;
1052}
1053
1054pub mod control_ordinals {
1055 pub const ADD_ADDRESS: u64 = 0x1349d36da453ce;
1056 pub const REMOVE_ADDRESS: u64 = 0x213ba73da997a620;
1057 pub const GET_ID: u64 = 0x2a2459768d9ecc6f;
1058 pub const SET_CONFIGURATION: u64 = 0x573923b7b4bde27f;
1059 pub const GET_CONFIGURATION: u64 = 0x5f5d239820bdcc65;
1060 pub const ENABLE: u64 = 0x15c983d3a8ac0b98;
1061 pub const DISABLE: u64 = 0x98d3a585d905473;
1062 pub const DETACH: u64 = 0x78ee27518b2dbfa;
1063 pub const GET_AUTHORIZATION_FOR_INTERFACE: u64 = 0xc1de2ab60b5cb9e;
1064 pub const REMOVE: u64 = 0x13aab8bbecc7ff0b;
1065 pub const ON_INTERFACE_REMOVED: u64 = 0x800d39e76c1cddd;
1066}
1067
1068pub mod device_control_ordinals {
1069 pub const CREATE_INTERFACE: u64 = 0x4ff8be7351d12f86;
1070 pub const DETACH: u64 = 0x57489f1554d489d2;
1071}
1072
1073pub mod installer_ordinals {
1074 pub const INSTALL_DEVICE: u64 = 0x3e84524dcecab23a;
1075 pub const INSTALL_BLACKHOLE_INTERFACE: u64 = 0x2ce57e87cdbcb809;
1076}
1077
1078mod internal {
1079 use super::*;
1080 unsafe impl fidl::encoding::TypeMarker for AddressRemovalReason {
1081 type Owned = Self;
1082
1083 #[inline(always)]
1084 fn inline_align(_context: fidl::encoding::Context) -> usize {
1085 std::mem::align_of::<u32>()
1086 }
1087
1088 #[inline(always)]
1089 fn inline_size(_context: fidl::encoding::Context) -> usize {
1090 std::mem::size_of::<u32>()
1091 }
1092
1093 #[inline(always)]
1094 fn encode_is_copy() -> bool {
1095 true
1096 }
1097
1098 #[inline(always)]
1099 fn decode_is_copy() -> bool {
1100 false
1101 }
1102 }
1103
1104 impl fidl::encoding::ValueTypeMarker for AddressRemovalReason {
1105 type Borrowed<'a> = Self;
1106 #[inline(always)]
1107 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1108 *value
1109 }
1110 }
1111
1112 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1113 for AddressRemovalReason
1114 {
1115 #[inline]
1116 unsafe fn encode(
1117 self,
1118 encoder: &mut fidl::encoding::Encoder<'_, D>,
1119 offset: usize,
1120 _depth: fidl::encoding::Depth,
1121 ) -> fidl::Result<()> {
1122 encoder.debug_check_bounds::<Self>(offset);
1123 encoder.write_num(self.into_primitive(), offset);
1124 Ok(())
1125 }
1126 }
1127
1128 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AddressRemovalReason {
1129 #[inline(always)]
1130 fn new_empty() -> Self {
1131 Self::Invalid
1132 }
1133
1134 #[inline]
1135 unsafe fn decode(
1136 &mut self,
1137 decoder: &mut fidl::encoding::Decoder<'_, D>,
1138 offset: usize,
1139 _depth: fidl::encoding::Depth,
1140 ) -> fidl::Result<()> {
1141 decoder.debug_check_bounds::<Self>(offset);
1142 let prim = decoder.read_num::<u32>(offset);
1143
1144 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1145 Ok(())
1146 }
1147 }
1148 unsafe impl fidl::encoding::TypeMarker for ControlDisableError {
1149 type Owned = Self;
1150
1151 #[inline(always)]
1152 fn inline_align(_context: fidl::encoding::Context) -> usize {
1153 std::mem::align_of::<u32>()
1154 }
1155
1156 #[inline(always)]
1157 fn inline_size(_context: fidl::encoding::Context) -> usize {
1158 std::mem::size_of::<u32>()
1159 }
1160
1161 #[inline(always)]
1162 fn encode_is_copy() -> bool {
1163 false
1164 }
1165
1166 #[inline(always)]
1167 fn decode_is_copy() -> bool {
1168 false
1169 }
1170 }
1171
1172 impl fidl::encoding::ValueTypeMarker for ControlDisableError {
1173 type Borrowed<'a> = Self;
1174 #[inline(always)]
1175 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1176 *value
1177 }
1178 }
1179
1180 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1181 for ControlDisableError
1182 {
1183 #[inline]
1184 unsafe fn encode(
1185 self,
1186 encoder: &mut fidl::encoding::Encoder<'_, D>,
1187 offset: usize,
1188 _depth: fidl::encoding::Depth,
1189 ) -> fidl::Result<()> {
1190 encoder.debug_check_bounds::<Self>(offset);
1191 encoder.write_num(self.into_primitive(), offset);
1192 Ok(())
1193 }
1194 }
1195
1196 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlDisableError {
1197 #[inline(always)]
1198 fn new_empty() -> Self {
1199 Self::unknown()
1200 }
1201
1202 #[inline]
1203 unsafe fn decode(
1204 &mut self,
1205 decoder: &mut fidl::encoding::Decoder<'_, D>,
1206 offset: usize,
1207 _depth: fidl::encoding::Depth,
1208 ) -> fidl::Result<()> {
1209 decoder.debug_check_bounds::<Self>(offset);
1210 let prim = decoder.read_num::<u32>(offset);
1211
1212 *self = Self::from_primitive_allow_unknown(prim);
1213 Ok(())
1214 }
1215 }
1216 unsafe impl fidl::encoding::TypeMarker for ControlEnableError {
1217 type Owned = Self;
1218
1219 #[inline(always)]
1220 fn inline_align(_context: fidl::encoding::Context) -> usize {
1221 std::mem::align_of::<u32>()
1222 }
1223
1224 #[inline(always)]
1225 fn inline_size(_context: fidl::encoding::Context) -> usize {
1226 std::mem::size_of::<u32>()
1227 }
1228
1229 #[inline(always)]
1230 fn encode_is_copy() -> bool {
1231 false
1232 }
1233
1234 #[inline(always)]
1235 fn decode_is_copy() -> bool {
1236 false
1237 }
1238 }
1239
1240 impl fidl::encoding::ValueTypeMarker for ControlEnableError {
1241 type Borrowed<'a> = Self;
1242 #[inline(always)]
1243 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1244 *value
1245 }
1246 }
1247
1248 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1249 for ControlEnableError
1250 {
1251 #[inline]
1252 unsafe fn encode(
1253 self,
1254 encoder: &mut fidl::encoding::Encoder<'_, D>,
1255 offset: usize,
1256 _depth: fidl::encoding::Depth,
1257 ) -> fidl::Result<()> {
1258 encoder.debug_check_bounds::<Self>(offset);
1259 encoder.write_num(self.into_primitive(), offset);
1260 Ok(())
1261 }
1262 }
1263
1264 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlEnableError {
1265 #[inline(always)]
1266 fn new_empty() -> Self {
1267 Self::unknown()
1268 }
1269
1270 #[inline]
1271 unsafe fn decode(
1272 &mut self,
1273 decoder: &mut fidl::encoding::Decoder<'_, D>,
1274 offset: usize,
1275 _depth: fidl::encoding::Depth,
1276 ) -> fidl::Result<()> {
1277 decoder.debug_check_bounds::<Self>(offset);
1278 let prim = decoder.read_num::<u32>(offset);
1279
1280 *self = Self::from_primitive_allow_unknown(prim);
1281 Ok(())
1282 }
1283 }
1284 unsafe impl fidl::encoding::TypeMarker for ControlGetConfigurationError {
1285 type Owned = Self;
1286
1287 #[inline(always)]
1288 fn inline_align(_context: fidl::encoding::Context) -> usize {
1289 std::mem::align_of::<u32>()
1290 }
1291
1292 #[inline(always)]
1293 fn inline_size(_context: fidl::encoding::Context) -> usize {
1294 std::mem::size_of::<u32>()
1295 }
1296
1297 #[inline(always)]
1298 fn encode_is_copy() -> bool {
1299 false
1300 }
1301
1302 #[inline(always)]
1303 fn decode_is_copy() -> bool {
1304 false
1305 }
1306 }
1307
1308 impl fidl::encoding::ValueTypeMarker for ControlGetConfigurationError {
1309 type Borrowed<'a> = Self;
1310 #[inline(always)]
1311 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1312 *value
1313 }
1314 }
1315
1316 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1317 for ControlGetConfigurationError
1318 {
1319 #[inline]
1320 unsafe fn encode(
1321 self,
1322 encoder: &mut fidl::encoding::Encoder<'_, D>,
1323 offset: usize,
1324 _depth: fidl::encoding::Depth,
1325 ) -> fidl::Result<()> {
1326 encoder.debug_check_bounds::<Self>(offset);
1327 encoder.write_num(self.into_primitive(), offset);
1328 Ok(())
1329 }
1330 }
1331
1332 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1333 for ControlGetConfigurationError
1334 {
1335 #[inline(always)]
1336 fn new_empty() -> Self {
1337 Self::unknown()
1338 }
1339
1340 #[inline]
1341 unsafe fn decode(
1342 &mut self,
1343 decoder: &mut fidl::encoding::Decoder<'_, D>,
1344 offset: usize,
1345 _depth: fidl::encoding::Depth,
1346 ) -> fidl::Result<()> {
1347 decoder.debug_check_bounds::<Self>(offset);
1348 let prim = decoder.read_num::<u32>(offset);
1349
1350 *self = Self::from_primitive_allow_unknown(prim);
1351 Ok(())
1352 }
1353 }
1354 unsafe impl fidl::encoding::TypeMarker for ControlRemoveAddressError {
1355 type Owned = Self;
1356
1357 #[inline(always)]
1358 fn inline_align(_context: fidl::encoding::Context) -> usize {
1359 std::mem::align_of::<u32>()
1360 }
1361
1362 #[inline(always)]
1363 fn inline_size(_context: fidl::encoding::Context) -> usize {
1364 std::mem::size_of::<u32>()
1365 }
1366
1367 #[inline(always)]
1368 fn encode_is_copy() -> bool {
1369 false
1370 }
1371
1372 #[inline(always)]
1373 fn decode_is_copy() -> bool {
1374 false
1375 }
1376 }
1377
1378 impl fidl::encoding::ValueTypeMarker for ControlRemoveAddressError {
1379 type Borrowed<'a> = Self;
1380 #[inline(always)]
1381 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1382 *value
1383 }
1384 }
1385
1386 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1387 for ControlRemoveAddressError
1388 {
1389 #[inline]
1390 unsafe fn encode(
1391 self,
1392 encoder: &mut fidl::encoding::Encoder<'_, D>,
1393 offset: usize,
1394 _depth: fidl::encoding::Depth,
1395 ) -> fidl::Result<()> {
1396 encoder.debug_check_bounds::<Self>(offset);
1397 encoder.write_num(self.into_primitive(), offset);
1398 Ok(())
1399 }
1400 }
1401
1402 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1403 for ControlRemoveAddressError
1404 {
1405 #[inline(always)]
1406 fn new_empty() -> Self {
1407 Self::unknown()
1408 }
1409
1410 #[inline]
1411 unsafe fn decode(
1412 &mut self,
1413 decoder: &mut fidl::encoding::Decoder<'_, D>,
1414 offset: usize,
1415 _depth: fidl::encoding::Depth,
1416 ) -> fidl::Result<()> {
1417 decoder.debug_check_bounds::<Self>(offset);
1418 let prim = decoder.read_num::<u32>(offset);
1419
1420 *self = Self::from_primitive_allow_unknown(prim);
1421 Ok(())
1422 }
1423 }
1424 unsafe impl fidl::encoding::TypeMarker for ControlRemoveError {
1425 type Owned = Self;
1426
1427 #[inline(always)]
1428 fn inline_align(_context: fidl::encoding::Context) -> usize {
1429 std::mem::align_of::<u32>()
1430 }
1431
1432 #[inline(always)]
1433 fn inline_size(_context: fidl::encoding::Context) -> usize {
1434 std::mem::size_of::<u32>()
1435 }
1436
1437 #[inline(always)]
1438 fn encode_is_copy() -> bool {
1439 false
1440 }
1441
1442 #[inline(always)]
1443 fn decode_is_copy() -> bool {
1444 false
1445 }
1446 }
1447
1448 impl fidl::encoding::ValueTypeMarker for ControlRemoveError {
1449 type Borrowed<'a> = Self;
1450 #[inline(always)]
1451 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1452 *value
1453 }
1454 }
1455
1456 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1457 for ControlRemoveError
1458 {
1459 #[inline]
1460 unsafe fn encode(
1461 self,
1462 encoder: &mut fidl::encoding::Encoder<'_, D>,
1463 offset: usize,
1464 _depth: fidl::encoding::Depth,
1465 ) -> fidl::Result<()> {
1466 encoder.debug_check_bounds::<Self>(offset);
1467 encoder.write_num(self.into_primitive(), offset);
1468 Ok(())
1469 }
1470 }
1471
1472 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlRemoveError {
1473 #[inline(always)]
1474 fn new_empty() -> Self {
1475 Self::unknown()
1476 }
1477
1478 #[inline]
1479 unsafe fn decode(
1480 &mut self,
1481 decoder: &mut fidl::encoding::Decoder<'_, D>,
1482 offset: usize,
1483 _depth: fidl::encoding::Depth,
1484 ) -> fidl::Result<()> {
1485 decoder.debug_check_bounds::<Self>(offset);
1486 let prim = decoder.read_num::<u32>(offset);
1487
1488 *self = Self::from_primitive_allow_unknown(prim);
1489 Ok(())
1490 }
1491 }
1492 unsafe impl fidl::encoding::TypeMarker for ControlSetConfigurationError {
1493 type Owned = Self;
1494
1495 #[inline(always)]
1496 fn inline_align(_context: fidl::encoding::Context) -> usize {
1497 std::mem::align_of::<u32>()
1498 }
1499
1500 #[inline(always)]
1501 fn inline_size(_context: fidl::encoding::Context) -> usize {
1502 std::mem::size_of::<u32>()
1503 }
1504
1505 #[inline(always)]
1506 fn encode_is_copy() -> bool {
1507 false
1508 }
1509
1510 #[inline(always)]
1511 fn decode_is_copy() -> bool {
1512 false
1513 }
1514 }
1515
1516 impl fidl::encoding::ValueTypeMarker for ControlSetConfigurationError {
1517 type Borrowed<'a> = Self;
1518 #[inline(always)]
1519 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1520 *value
1521 }
1522 }
1523
1524 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1525 for ControlSetConfigurationError
1526 {
1527 #[inline]
1528 unsafe fn encode(
1529 self,
1530 encoder: &mut fidl::encoding::Encoder<'_, D>,
1531 offset: usize,
1532 _depth: fidl::encoding::Depth,
1533 ) -> fidl::Result<()> {
1534 encoder.debug_check_bounds::<Self>(offset);
1535 encoder.write_num(self.into_primitive(), offset);
1536 Ok(())
1537 }
1538 }
1539
1540 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1541 for ControlSetConfigurationError
1542 {
1543 #[inline(always)]
1544 fn new_empty() -> Self {
1545 Self::unknown()
1546 }
1547
1548 #[inline]
1549 unsafe fn decode(
1550 &mut self,
1551 decoder: &mut fidl::encoding::Decoder<'_, D>,
1552 offset: usize,
1553 _depth: fidl::encoding::Depth,
1554 ) -> fidl::Result<()> {
1555 decoder.debug_check_bounds::<Self>(offset);
1556 let prim = decoder.read_num::<u32>(offset);
1557
1558 *self = Self::from_primitive_allow_unknown(prim);
1559 Ok(())
1560 }
1561 }
1562 unsafe impl fidl::encoding::TypeMarker for IgmpVersion {
1563 type Owned = Self;
1564
1565 #[inline(always)]
1566 fn inline_align(_context: fidl::encoding::Context) -> usize {
1567 std::mem::align_of::<u8>()
1568 }
1569
1570 #[inline(always)]
1571 fn inline_size(_context: fidl::encoding::Context) -> usize {
1572 std::mem::size_of::<u8>()
1573 }
1574
1575 #[inline(always)]
1576 fn encode_is_copy() -> bool {
1577 false
1578 }
1579
1580 #[inline(always)]
1581 fn decode_is_copy() -> bool {
1582 false
1583 }
1584 }
1585
1586 impl fidl::encoding::ValueTypeMarker for IgmpVersion {
1587 type Borrowed<'a> = Self;
1588 #[inline(always)]
1589 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1590 *value
1591 }
1592 }
1593
1594 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for IgmpVersion {
1595 #[inline]
1596 unsafe fn encode(
1597 self,
1598 encoder: &mut fidl::encoding::Encoder<'_, D>,
1599 offset: usize,
1600 _depth: fidl::encoding::Depth,
1601 ) -> fidl::Result<()> {
1602 encoder.debug_check_bounds::<Self>(offset);
1603 encoder.write_num(self.into_primitive(), offset);
1604 Ok(())
1605 }
1606 }
1607
1608 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IgmpVersion {
1609 #[inline(always)]
1610 fn new_empty() -> Self {
1611 Self::unknown()
1612 }
1613
1614 #[inline]
1615 unsafe fn decode(
1616 &mut self,
1617 decoder: &mut fidl::encoding::Decoder<'_, D>,
1618 offset: usize,
1619 _depth: fidl::encoding::Depth,
1620 ) -> fidl::Result<()> {
1621 decoder.debug_check_bounds::<Self>(offset);
1622 let prim = decoder.read_num::<u8>(offset);
1623
1624 *self = Self::from_primitive_allow_unknown(prim);
1625 Ok(())
1626 }
1627 }
1628 unsafe impl fidl::encoding::TypeMarker for InterfaceRemovedReason {
1629 type Owned = Self;
1630
1631 #[inline(always)]
1632 fn inline_align(_context: fidl::encoding::Context) -> usize {
1633 std::mem::align_of::<u32>()
1634 }
1635
1636 #[inline(always)]
1637 fn inline_size(_context: fidl::encoding::Context) -> usize {
1638 std::mem::size_of::<u32>()
1639 }
1640
1641 #[inline(always)]
1642 fn encode_is_copy() -> bool {
1643 false
1644 }
1645
1646 #[inline(always)]
1647 fn decode_is_copy() -> bool {
1648 false
1649 }
1650 }
1651
1652 impl fidl::encoding::ValueTypeMarker for InterfaceRemovedReason {
1653 type Borrowed<'a> = Self;
1654 #[inline(always)]
1655 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1656 *value
1657 }
1658 }
1659
1660 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1661 for InterfaceRemovedReason
1662 {
1663 #[inline]
1664 unsafe fn encode(
1665 self,
1666 encoder: &mut fidl::encoding::Encoder<'_, D>,
1667 offset: usize,
1668 _depth: fidl::encoding::Depth,
1669 ) -> fidl::Result<()> {
1670 encoder.debug_check_bounds::<Self>(offset);
1671 encoder.write_num(self.into_primitive(), offset);
1672 Ok(())
1673 }
1674 }
1675
1676 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1677 for InterfaceRemovedReason
1678 {
1679 #[inline(always)]
1680 fn new_empty() -> Self {
1681 Self::unknown()
1682 }
1683
1684 #[inline]
1685 unsafe fn decode(
1686 &mut self,
1687 decoder: &mut fidl::encoding::Decoder<'_, D>,
1688 offset: usize,
1689 _depth: fidl::encoding::Depth,
1690 ) -> fidl::Result<()> {
1691 decoder.debug_check_bounds::<Self>(offset);
1692 let prim = decoder.read_num::<u32>(offset);
1693
1694 *self = Self::from_primitive_allow_unknown(prim);
1695 Ok(())
1696 }
1697 }
1698 unsafe impl fidl::encoding::TypeMarker for MldVersion {
1699 type Owned = Self;
1700
1701 #[inline(always)]
1702 fn inline_align(_context: fidl::encoding::Context) -> usize {
1703 std::mem::align_of::<u8>()
1704 }
1705
1706 #[inline(always)]
1707 fn inline_size(_context: fidl::encoding::Context) -> usize {
1708 std::mem::size_of::<u8>()
1709 }
1710
1711 #[inline(always)]
1712 fn encode_is_copy() -> bool {
1713 false
1714 }
1715
1716 #[inline(always)]
1717 fn decode_is_copy() -> bool {
1718 false
1719 }
1720 }
1721
1722 impl fidl::encoding::ValueTypeMarker for MldVersion {
1723 type Borrowed<'a> = Self;
1724 #[inline(always)]
1725 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1726 *value
1727 }
1728 }
1729
1730 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for MldVersion {
1731 #[inline]
1732 unsafe fn encode(
1733 self,
1734 encoder: &mut fidl::encoding::Encoder<'_, D>,
1735 offset: usize,
1736 _depth: fidl::encoding::Depth,
1737 ) -> fidl::Result<()> {
1738 encoder.debug_check_bounds::<Self>(offset);
1739 encoder.write_num(self.into_primitive(), offset);
1740 Ok(())
1741 }
1742 }
1743
1744 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MldVersion {
1745 #[inline(always)]
1746 fn new_empty() -> Self {
1747 Self::unknown()
1748 }
1749
1750 #[inline]
1751 unsafe fn decode(
1752 &mut self,
1753 decoder: &mut fidl::encoding::Decoder<'_, D>,
1754 offset: usize,
1755 _depth: fidl::encoding::Depth,
1756 ) -> fidl::Result<()> {
1757 decoder.debug_check_bounds::<Self>(offset);
1758 let prim = decoder.read_num::<u8>(offset);
1759
1760 *self = Self::from_primitive_allow_unknown(prim);
1761 Ok(())
1762 }
1763 }
1764
1765 impl fidl::encoding::ValueTypeMarker for AddressStateProviderOnAddressRemovedRequest {
1766 type Borrowed<'a> = &'a Self;
1767 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1768 value
1769 }
1770 }
1771
1772 unsafe impl fidl::encoding::TypeMarker for AddressStateProviderOnAddressRemovedRequest {
1773 type Owned = Self;
1774
1775 #[inline(always)]
1776 fn inline_align(_context: fidl::encoding::Context) -> usize {
1777 4
1778 }
1779
1780 #[inline(always)]
1781 fn inline_size(_context: fidl::encoding::Context) -> usize {
1782 4
1783 }
1784 }
1785
1786 unsafe impl<D: fidl::encoding::ResourceDialect>
1787 fidl::encoding::Encode<AddressStateProviderOnAddressRemovedRequest, D>
1788 for &AddressStateProviderOnAddressRemovedRequest
1789 {
1790 #[inline]
1791 unsafe fn encode(
1792 self,
1793 encoder: &mut fidl::encoding::Encoder<'_, D>,
1794 offset: usize,
1795 _depth: fidl::encoding::Depth,
1796 ) -> fidl::Result<()> {
1797 encoder.debug_check_bounds::<AddressStateProviderOnAddressRemovedRequest>(offset);
1798 fidl::encoding::Encode::<AddressStateProviderOnAddressRemovedRequest, D>::encode(
1800 (<AddressRemovalReason as fidl::encoding::ValueTypeMarker>::borrow(&self.error),),
1801 encoder,
1802 offset,
1803 _depth,
1804 )
1805 }
1806 }
1807 unsafe impl<
1808 D: fidl::encoding::ResourceDialect,
1809 T0: fidl::encoding::Encode<AddressRemovalReason, D>,
1810 > fidl::encoding::Encode<AddressStateProviderOnAddressRemovedRequest, D> for (T0,)
1811 {
1812 #[inline]
1813 unsafe fn encode(
1814 self,
1815 encoder: &mut fidl::encoding::Encoder<'_, D>,
1816 offset: usize,
1817 depth: fidl::encoding::Depth,
1818 ) -> fidl::Result<()> {
1819 encoder.debug_check_bounds::<AddressStateProviderOnAddressRemovedRequest>(offset);
1820 self.0.encode(encoder, offset + 0, depth)?;
1824 Ok(())
1825 }
1826 }
1827
1828 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1829 for AddressStateProviderOnAddressRemovedRequest
1830 {
1831 #[inline(always)]
1832 fn new_empty() -> Self {
1833 Self { error: fidl::new_empty!(AddressRemovalReason, D) }
1834 }
1835
1836 #[inline]
1837 unsafe fn decode(
1838 &mut self,
1839 decoder: &mut fidl::encoding::Decoder<'_, D>,
1840 offset: usize,
1841 _depth: fidl::encoding::Depth,
1842 ) -> fidl::Result<()> {
1843 decoder.debug_check_bounds::<Self>(offset);
1844 fidl::decode!(AddressRemovalReason, D, &mut self.error, decoder, offset + 0, _depth)?;
1846 Ok(())
1847 }
1848 }
1849
1850 impl fidl::encoding::ValueTypeMarker for AddressStateProviderUpdateAddressPropertiesRequest {
1851 type Borrowed<'a> = &'a Self;
1852 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1853 value
1854 }
1855 }
1856
1857 unsafe impl fidl::encoding::TypeMarker for AddressStateProviderUpdateAddressPropertiesRequest {
1858 type Owned = Self;
1859
1860 #[inline(always)]
1861 fn inline_align(_context: fidl::encoding::Context) -> usize {
1862 8
1863 }
1864
1865 #[inline(always)]
1866 fn inline_size(_context: fidl::encoding::Context) -> usize {
1867 16
1868 }
1869 }
1870
1871 unsafe impl<D: fidl::encoding::ResourceDialect>
1872 fidl::encoding::Encode<AddressStateProviderUpdateAddressPropertiesRequest, D>
1873 for &AddressStateProviderUpdateAddressPropertiesRequest
1874 {
1875 #[inline]
1876 unsafe fn encode(
1877 self,
1878 encoder: &mut fidl::encoding::Encoder<'_, D>,
1879 offset: usize,
1880 _depth: fidl::encoding::Depth,
1881 ) -> fidl::Result<()> {
1882 encoder
1883 .debug_check_bounds::<AddressStateProviderUpdateAddressPropertiesRequest>(offset);
1884 fidl::encoding::Encode::<AddressStateProviderUpdateAddressPropertiesRequest, D>::encode(
1886 (<AddressProperties as fidl::encoding::ValueTypeMarker>::borrow(
1887 &self.address_properties,
1888 ),),
1889 encoder,
1890 offset,
1891 _depth,
1892 )
1893 }
1894 }
1895 unsafe impl<
1896 D: fidl::encoding::ResourceDialect,
1897 T0: fidl::encoding::Encode<AddressProperties, D>,
1898 > fidl::encoding::Encode<AddressStateProviderUpdateAddressPropertiesRequest, D> for (T0,)
1899 {
1900 #[inline]
1901 unsafe fn encode(
1902 self,
1903 encoder: &mut fidl::encoding::Encoder<'_, D>,
1904 offset: usize,
1905 depth: fidl::encoding::Depth,
1906 ) -> fidl::Result<()> {
1907 encoder
1908 .debug_check_bounds::<AddressStateProviderUpdateAddressPropertiesRequest>(offset);
1909 self.0.encode(encoder, offset + 0, depth)?;
1913 Ok(())
1914 }
1915 }
1916
1917 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1918 for AddressStateProviderUpdateAddressPropertiesRequest
1919 {
1920 #[inline(always)]
1921 fn new_empty() -> Self {
1922 Self { address_properties: fidl::new_empty!(AddressProperties, D) }
1923 }
1924
1925 #[inline]
1926 unsafe fn decode(
1927 &mut self,
1928 decoder: &mut fidl::encoding::Decoder<'_, D>,
1929 offset: usize,
1930 _depth: fidl::encoding::Depth,
1931 ) -> fidl::Result<()> {
1932 decoder.debug_check_bounds::<Self>(offset);
1933 fidl::decode!(
1935 AddressProperties,
1936 D,
1937 &mut self.address_properties,
1938 decoder,
1939 offset + 0,
1940 _depth
1941 )?;
1942 Ok(())
1943 }
1944 }
1945
1946 impl fidl::encoding::ValueTypeMarker for AddressStateProviderWatchAddressAssignmentStateResponse {
1947 type Borrowed<'a> = &'a Self;
1948 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1949 value
1950 }
1951 }
1952
1953 unsafe impl fidl::encoding::TypeMarker for AddressStateProviderWatchAddressAssignmentStateResponse {
1954 type Owned = Self;
1955
1956 #[inline(always)]
1957 fn inline_align(_context: fidl::encoding::Context) -> usize {
1958 4
1959 }
1960
1961 #[inline(always)]
1962 fn inline_size(_context: fidl::encoding::Context) -> usize {
1963 4
1964 }
1965 }
1966
1967 unsafe impl<D: fidl::encoding::ResourceDialect>
1968 fidl::encoding::Encode<AddressStateProviderWatchAddressAssignmentStateResponse, D>
1969 for &AddressStateProviderWatchAddressAssignmentStateResponse
1970 {
1971 #[inline]
1972 unsafe fn encode(
1973 self,
1974 encoder: &mut fidl::encoding::Encoder<'_, D>,
1975 offset: usize,
1976 _depth: fidl::encoding::Depth,
1977 ) -> fidl::Result<()> {
1978 encoder.debug_check_bounds::<AddressStateProviderWatchAddressAssignmentStateResponse>(
1979 offset,
1980 );
1981 fidl::encoding::Encode::<AddressStateProviderWatchAddressAssignmentStateResponse, D>::encode(
1983 (
1984 <fidl_fuchsia_net_interfaces_common::AddressAssignmentState as fidl::encoding::ValueTypeMarker>::borrow(&self.assignment_state),
1985 ),
1986 encoder, offset, _depth
1987 )
1988 }
1989 }
1990 unsafe impl<
1991 D: fidl::encoding::ResourceDialect,
1992 T0: fidl::encoding::Encode<fidl_fuchsia_net_interfaces_common::AddressAssignmentState, D>,
1993 > fidl::encoding::Encode<AddressStateProviderWatchAddressAssignmentStateResponse, D> for (T0,)
1994 {
1995 #[inline]
1996 unsafe fn encode(
1997 self,
1998 encoder: &mut fidl::encoding::Encoder<'_, D>,
1999 offset: usize,
2000 depth: fidl::encoding::Depth,
2001 ) -> fidl::Result<()> {
2002 encoder.debug_check_bounds::<AddressStateProviderWatchAddressAssignmentStateResponse>(
2003 offset,
2004 );
2005 self.0.encode(encoder, offset + 0, depth)?;
2009 Ok(())
2010 }
2011 }
2012
2013 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2014 for AddressStateProviderWatchAddressAssignmentStateResponse
2015 {
2016 #[inline(always)]
2017 fn new_empty() -> Self {
2018 Self {
2019 assignment_state: fidl::new_empty!(
2020 fidl_fuchsia_net_interfaces_common::AddressAssignmentState,
2021 D
2022 ),
2023 }
2024 }
2025
2026 #[inline]
2027 unsafe fn decode(
2028 &mut self,
2029 decoder: &mut fidl::encoding::Decoder<'_, D>,
2030 offset: usize,
2031 _depth: fidl::encoding::Depth,
2032 ) -> fidl::Result<()> {
2033 decoder.debug_check_bounds::<Self>(offset);
2034 fidl::decode!(
2036 fidl_fuchsia_net_interfaces_common::AddressAssignmentState,
2037 D,
2038 &mut self.assignment_state,
2039 decoder,
2040 offset + 0,
2041 _depth
2042 )?;
2043 Ok(())
2044 }
2045 }
2046
2047 impl fidl::encoding::ValueTypeMarker for ControlGetIdResponse {
2048 type Borrowed<'a> = &'a Self;
2049 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2050 value
2051 }
2052 }
2053
2054 unsafe impl fidl::encoding::TypeMarker for ControlGetIdResponse {
2055 type Owned = Self;
2056
2057 #[inline(always)]
2058 fn inline_align(_context: fidl::encoding::Context) -> usize {
2059 8
2060 }
2061
2062 #[inline(always)]
2063 fn inline_size(_context: fidl::encoding::Context) -> usize {
2064 8
2065 }
2066 #[inline(always)]
2067 fn encode_is_copy() -> bool {
2068 true
2069 }
2070
2071 #[inline(always)]
2072 fn decode_is_copy() -> bool {
2073 true
2074 }
2075 }
2076
2077 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ControlGetIdResponse, D>
2078 for &ControlGetIdResponse
2079 {
2080 #[inline]
2081 unsafe fn encode(
2082 self,
2083 encoder: &mut fidl::encoding::Encoder<'_, D>,
2084 offset: usize,
2085 _depth: fidl::encoding::Depth,
2086 ) -> fidl::Result<()> {
2087 encoder.debug_check_bounds::<ControlGetIdResponse>(offset);
2088 unsafe {
2089 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2091 (buf_ptr as *mut ControlGetIdResponse)
2092 .write_unaligned((self as *const ControlGetIdResponse).read());
2093 }
2096 Ok(())
2097 }
2098 }
2099 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
2100 fidl::encoding::Encode<ControlGetIdResponse, D> for (T0,)
2101 {
2102 #[inline]
2103 unsafe fn encode(
2104 self,
2105 encoder: &mut fidl::encoding::Encoder<'_, D>,
2106 offset: usize,
2107 depth: fidl::encoding::Depth,
2108 ) -> fidl::Result<()> {
2109 encoder.debug_check_bounds::<ControlGetIdResponse>(offset);
2110 self.0.encode(encoder, offset + 0, depth)?;
2114 Ok(())
2115 }
2116 }
2117
2118 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlGetIdResponse {
2119 #[inline(always)]
2120 fn new_empty() -> Self {
2121 Self { id: fidl::new_empty!(u64, D) }
2122 }
2123
2124 #[inline]
2125 unsafe fn decode(
2126 &mut self,
2127 decoder: &mut fidl::encoding::Decoder<'_, D>,
2128 offset: usize,
2129 _depth: fidl::encoding::Depth,
2130 ) -> fidl::Result<()> {
2131 decoder.debug_check_bounds::<Self>(offset);
2132 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2133 unsafe {
2136 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
2137 }
2138 Ok(())
2139 }
2140 }
2141
2142 impl fidl::encoding::ValueTypeMarker for ControlOnInterfaceRemovedRequest {
2143 type Borrowed<'a> = &'a Self;
2144 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2145 value
2146 }
2147 }
2148
2149 unsafe impl fidl::encoding::TypeMarker for ControlOnInterfaceRemovedRequest {
2150 type Owned = Self;
2151
2152 #[inline(always)]
2153 fn inline_align(_context: fidl::encoding::Context) -> usize {
2154 4
2155 }
2156
2157 #[inline(always)]
2158 fn inline_size(_context: fidl::encoding::Context) -> usize {
2159 4
2160 }
2161 }
2162
2163 unsafe impl<D: fidl::encoding::ResourceDialect>
2164 fidl::encoding::Encode<ControlOnInterfaceRemovedRequest, D>
2165 for &ControlOnInterfaceRemovedRequest
2166 {
2167 #[inline]
2168 unsafe fn encode(
2169 self,
2170 encoder: &mut fidl::encoding::Encoder<'_, D>,
2171 offset: usize,
2172 _depth: fidl::encoding::Depth,
2173 ) -> fidl::Result<()> {
2174 encoder.debug_check_bounds::<ControlOnInterfaceRemovedRequest>(offset);
2175 fidl::encoding::Encode::<ControlOnInterfaceRemovedRequest, D>::encode(
2177 (<InterfaceRemovedReason as fidl::encoding::ValueTypeMarker>::borrow(&self.reason),),
2178 encoder,
2179 offset,
2180 _depth,
2181 )
2182 }
2183 }
2184 unsafe impl<
2185 D: fidl::encoding::ResourceDialect,
2186 T0: fidl::encoding::Encode<InterfaceRemovedReason, D>,
2187 > fidl::encoding::Encode<ControlOnInterfaceRemovedRequest, D> for (T0,)
2188 {
2189 #[inline]
2190 unsafe fn encode(
2191 self,
2192 encoder: &mut fidl::encoding::Encoder<'_, D>,
2193 offset: usize,
2194 depth: fidl::encoding::Depth,
2195 ) -> fidl::Result<()> {
2196 encoder.debug_check_bounds::<ControlOnInterfaceRemovedRequest>(offset);
2197 self.0.encode(encoder, offset + 0, depth)?;
2201 Ok(())
2202 }
2203 }
2204
2205 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2206 for ControlOnInterfaceRemovedRequest
2207 {
2208 #[inline(always)]
2209 fn new_empty() -> Self {
2210 Self { reason: fidl::new_empty!(InterfaceRemovedReason, D) }
2211 }
2212
2213 #[inline]
2214 unsafe fn decode(
2215 &mut self,
2216 decoder: &mut fidl::encoding::Decoder<'_, D>,
2217 offset: usize,
2218 _depth: fidl::encoding::Depth,
2219 ) -> fidl::Result<()> {
2220 decoder.debug_check_bounds::<Self>(offset);
2221 fidl::decode!(
2223 InterfaceRemovedReason,
2224 D,
2225 &mut self.reason,
2226 decoder,
2227 offset + 0,
2228 _depth
2229 )?;
2230 Ok(())
2231 }
2232 }
2233
2234 impl fidl::encoding::ValueTypeMarker for ControlRemoveAddressRequest {
2235 type Borrowed<'a> = &'a Self;
2236 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2237 value
2238 }
2239 }
2240
2241 unsafe impl fidl::encoding::TypeMarker for ControlRemoveAddressRequest {
2242 type Owned = Self;
2243
2244 #[inline(always)]
2245 fn inline_align(_context: fidl::encoding::Context) -> usize {
2246 8
2247 }
2248
2249 #[inline(always)]
2250 fn inline_size(_context: fidl::encoding::Context) -> usize {
2251 24
2252 }
2253 }
2254
2255 unsafe impl<D: fidl::encoding::ResourceDialect>
2256 fidl::encoding::Encode<ControlRemoveAddressRequest, D> for &ControlRemoveAddressRequest
2257 {
2258 #[inline]
2259 unsafe fn encode(
2260 self,
2261 encoder: &mut fidl::encoding::Encoder<'_, D>,
2262 offset: usize,
2263 _depth: fidl::encoding::Depth,
2264 ) -> fidl::Result<()> {
2265 encoder.debug_check_bounds::<ControlRemoveAddressRequest>(offset);
2266 fidl::encoding::Encode::<ControlRemoveAddressRequest, D>::encode(
2268 (<fidl_fuchsia_net_common::Subnet as fidl::encoding::ValueTypeMarker>::borrow(
2269 &self.address,
2270 ),),
2271 encoder,
2272 offset,
2273 _depth,
2274 )
2275 }
2276 }
2277 unsafe impl<
2278 D: fidl::encoding::ResourceDialect,
2279 T0: fidl::encoding::Encode<fidl_fuchsia_net_common::Subnet, D>,
2280 > fidl::encoding::Encode<ControlRemoveAddressRequest, D> for (T0,)
2281 {
2282 #[inline]
2283 unsafe fn encode(
2284 self,
2285 encoder: &mut fidl::encoding::Encoder<'_, D>,
2286 offset: usize,
2287 depth: fidl::encoding::Depth,
2288 ) -> fidl::Result<()> {
2289 encoder.debug_check_bounds::<ControlRemoveAddressRequest>(offset);
2290 self.0.encode(encoder, offset + 0, depth)?;
2294 Ok(())
2295 }
2296 }
2297
2298 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2299 for ControlRemoveAddressRequest
2300 {
2301 #[inline(always)]
2302 fn new_empty() -> Self {
2303 Self { address: fidl::new_empty!(fidl_fuchsia_net_common::Subnet, D) }
2304 }
2305
2306 #[inline]
2307 unsafe fn decode(
2308 &mut self,
2309 decoder: &mut fidl::encoding::Decoder<'_, D>,
2310 offset: usize,
2311 _depth: fidl::encoding::Depth,
2312 ) -> fidl::Result<()> {
2313 decoder.debug_check_bounds::<Self>(offset);
2314 fidl::decode!(
2316 fidl_fuchsia_net_common::Subnet,
2317 D,
2318 &mut self.address,
2319 decoder,
2320 offset + 0,
2321 _depth
2322 )?;
2323 Ok(())
2324 }
2325 }
2326
2327 impl fidl::encoding::ValueTypeMarker for ControlSetConfigurationRequest {
2328 type Borrowed<'a> = &'a Self;
2329 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2330 value
2331 }
2332 }
2333
2334 unsafe impl fidl::encoding::TypeMarker for ControlSetConfigurationRequest {
2335 type Owned = Self;
2336
2337 #[inline(always)]
2338 fn inline_align(_context: fidl::encoding::Context) -> usize {
2339 8
2340 }
2341
2342 #[inline(always)]
2343 fn inline_size(_context: fidl::encoding::Context) -> usize {
2344 16
2345 }
2346 }
2347
2348 unsafe impl<D: fidl::encoding::ResourceDialect>
2349 fidl::encoding::Encode<ControlSetConfigurationRequest, D>
2350 for &ControlSetConfigurationRequest
2351 {
2352 #[inline]
2353 unsafe fn encode(
2354 self,
2355 encoder: &mut fidl::encoding::Encoder<'_, D>,
2356 offset: usize,
2357 _depth: fidl::encoding::Depth,
2358 ) -> fidl::Result<()> {
2359 encoder.debug_check_bounds::<ControlSetConfigurationRequest>(offset);
2360 fidl::encoding::Encode::<ControlSetConfigurationRequest, D>::encode(
2362 (<Configuration as fidl::encoding::ValueTypeMarker>::borrow(&self.config),),
2363 encoder,
2364 offset,
2365 _depth,
2366 )
2367 }
2368 }
2369 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Configuration, D>>
2370 fidl::encoding::Encode<ControlSetConfigurationRequest, D> for (T0,)
2371 {
2372 #[inline]
2373 unsafe fn encode(
2374 self,
2375 encoder: &mut fidl::encoding::Encoder<'_, D>,
2376 offset: usize,
2377 depth: fidl::encoding::Depth,
2378 ) -> fidl::Result<()> {
2379 encoder.debug_check_bounds::<ControlSetConfigurationRequest>(offset);
2380 self.0.encode(encoder, offset + 0, depth)?;
2384 Ok(())
2385 }
2386 }
2387
2388 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2389 for ControlSetConfigurationRequest
2390 {
2391 #[inline(always)]
2392 fn new_empty() -> Self {
2393 Self { config: fidl::new_empty!(Configuration, D) }
2394 }
2395
2396 #[inline]
2397 unsafe fn decode(
2398 &mut self,
2399 decoder: &mut fidl::encoding::Decoder<'_, D>,
2400 offset: usize,
2401 _depth: fidl::encoding::Depth,
2402 ) -> fidl::Result<()> {
2403 decoder.debug_check_bounds::<Self>(offset);
2404 fidl::decode!(Configuration, D, &mut self.config, decoder, offset + 0, _depth)?;
2406 Ok(())
2407 }
2408 }
2409
2410 impl fidl::encoding::ValueTypeMarker for ControlDisableResponse {
2411 type Borrowed<'a> = &'a Self;
2412 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2413 value
2414 }
2415 }
2416
2417 unsafe impl fidl::encoding::TypeMarker for ControlDisableResponse {
2418 type Owned = Self;
2419
2420 #[inline(always)]
2421 fn inline_align(_context: fidl::encoding::Context) -> usize {
2422 1
2423 }
2424
2425 #[inline(always)]
2426 fn inline_size(_context: fidl::encoding::Context) -> usize {
2427 1
2428 }
2429 }
2430
2431 unsafe impl<D: fidl::encoding::ResourceDialect>
2432 fidl::encoding::Encode<ControlDisableResponse, D> for &ControlDisableResponse
2433 {
2434 #[inline]
2435 unsafe fn encode(
2436 self,
2437 encoder: &mut fidl::encoding::Encoder<'_, D>,
2438 offset: usize,
2439 _depth: fidl::encoding::Depth,
2440 ) -> fidl::Result<()> {
2441 encoder.debug_check_bounds::<ControlDisableResponse>(offset);
2442 fidl::encoding::Encode::<ControlDisableResponse, D>::encode(
2444 (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.did_disable),),
2445 encoder,
2446 offset,
2447 _depth,
2448 )
2449 }
2450 }
2451 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
2452 fidl::encoding::Encode<ControlDisableResponse, D> for (T0,)
2453 {
2454 #[inline]
2455 unsafe fn encode(
2456 self,
2457 encoder: &mut fidl::encoding::Encoder<'_, D>,
2458 offset: usize,
2459 depth: fidl::encoding::Depth,
2460 ) -> fidl::Result<()> {
2461 encoder.debug_check_bounds::<ControlDisableResponse>(offset);
2462 self.0.encode(encoder, offset + 0, depth)?;
2466 Ok(())
2467 }
2468 }
2469
2470 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2471 for ControlDisableResponse
2472 {
2473 #[inline(always)]
2474 fn new_empty() -> Self {
2475 Self { did_disable: fidl::new_empty!(bool, D) }
2476 }
2477
2478 #[inline]
2479 unsafe fn decode(
2480 &mut self,
2481 decoder: &mut fidl::encoding::Decoder<'_, D>,
2482 offset: usize,
2483 _depth: fidl::encoding::Depth,
2484 ) -> fidl::Result<()> {
2485 decoder.debug_check_bounds::<Self>(offset);
2486 fidl::decode!(bool, D, &mut self.did_disable, decoder, offset + 0, _depth)?;
2488 Ok(())
2489 }
2490 }
2491
2492 impl fidl::encoding::ValueTypeMarker for ControlEnableResponse {
2493 type Borrowed<'a> = &'a Self;
2494 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2495 value
2496 }
2497 }
2498
2499 unsafe impl fidl::encoding::TypeMarker for ControlEnableResponse {
2500 type Owned = Self;
2501
2502 #[inline(always)]
2503 fn inline_align(_context: fidl::encoding::Context) -> usize {
2504 1
2505 }
2506
2507 #[inline(always)]
2508 fn inline_size(_context: fidl::encoding::Context) -> usize {
2509 1
2510 }
2511 }
2512
2513 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ControlEnableResponse, D>
2514 for &ControlEnableResponse
2515 {
2516 #[inline]
2517 unsafe fn encode(
2518 self,
2519 encoder: &mut fidl::encoding::Encoder<'_, D>,
2520 offset: usize,
2521 _depth: fidl::encoding::Depth,
2522 ) -> fidl::Result<()> {
2523 encoder.debug_check_bounds::<ControlEnableResponse>(offset);
2524 fidl::encoding::Encode::<ControlEnableResponse, D>::encode(
2526 (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.did_enable),),
2527 encoder,
2528 offset,
2529 _depth,
2530 )
2531 }
2532 }
2533 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
2534 fidl::encoding::Encode<ControlEnableResponse, D> for (T0,)
2535 {
2536 #[inline]
2537 unsafe fn encode(
2538 self,
2539 encoder: &mut fidl::encoding::Encoder<'_, D>,
2540 offset: usize,
2541 depth: fidl::encoding::Depth,
2542 ) -> fidl::Result<()> {
2543 encoder.debug_check_bounds::<ControlEnableResponse>(offset);
2544 self.0.encode(encoder, offset + 0, depth)?;
2548 Ok(())
2549 }
2550 }
2551
2552 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlEnableResponse {
2553 #[inline(always)]
2554 fn new_empty() -> Self {
2555 Self { did_enable: fidl::new_empty!(bool, D) }
2556 }
2557
2558 #[inline]
2559 unsafe fn decode(
2560 &mut self,
2561 decoder: &mut fidl::encoding::Decoder<'_, D>,
2562 offset: usize,
2563 _depth: fidl::encoding::Depth,
2564 ) -> fidl::Result<()> {
2565 decoder.debug_check_bounds::<Self>(offset);
2566 fidl::decode!(bool, D, &mut self.did_enable, decoder, offset + 0, _depth)?;
2568 Ok(())
2569 }
2570 }
2571
2572 impl fidl::encoding::ValueTypeMarker for ControlGetConfigurationResponse {
2573 type Borrowed<'a> = &'a Self;
2574 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2575 value
2576 }
2577 }
2578
2579 unsafe impl fidl::encoding::TypeMarker for ControlGetConfigurationResponse {
2580 type Owned = Self;
2581
2582 #[inline(always)]
2583 fn inline_align(_context: fidl::encoding::Context) -> usize {
2584 8
2585 }
2586
2587 #[inline(always)]
2588 fn inline_size(_context: fidl::encoding::Context) -> usize {
2589 16
2590 }
2591 }
2592
2593 unsafe impl<D: fidl::encoding::ResourceDialect>
2594 fidl::encoding::Encode<ControlGetConfigurationResponse, D>
2595 for &ControlGetConfigurationResponse
2596 {
2597 #[inline]
2598 unsafe fn encode(
2599 self,
2600 encoder: &mut fidl::encoding::Encoder<'_, D>,
2601 offset: usize,
2602 _depth: fidl::encoding::Depth,
2603 ) -> fidl::Result<()> {
2604 encoder.debug_check_bounds::<ControlGetConfigurationResponse>(offset);
2605 fidl::encoding::Encode::<ControlGetConfigurationResponse, D>::encode(
2607 (<Configuration as fidl::encoding::ValueTypeMarker>::borrow(&self.config),),
2608 encoder,
2609 offset,
2610 _depth,
2611 )
2612 }
2613 }
2614 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Configuration, D>>
2615 fidl::encoding::Encode<ControlGetConfigurationResponse, D> for (T0,)
2616 {
2617 #[inline]
2618 unsafe fn encode(
2619 self,
2620 encoder: &mut fidl::encoding::Encoder<'_, D>,
2621 offset: usize,
2622 depth: fidl::encoding::Depth,
2623 ) -> fidl::Result<()> {
2624 encoder.debug_check_bounds::<ControlGetConfigurationResponse>(offset);
2625 self.0.encode(encoder, offset + 0, depth)?;
2629 Ok(())
2630 }
2631 }
2632
2633 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2634 for ControlGetConfigurationResponse
2635 {
2636 #[inline(always)]
2637 fn new_empty() -> Self {
2638 Self { config: fidl::new_empty!(Configuration, D) }
2639 }
2640
2641 #[inline]
2642 unsafe fn decode(
2643 &mut self,
2644 decoder: &mut fidl::encoding::Decoder<'_, D>,
2645 offset: usize,
2646 _depth: fidl::encoding::Depth,
2647 ) -> fidl::Result<()> {
2648 decoder.debug_check_bounds::<Self>(offset);
2649 fidl::decode!(Configuration, D, &mut self.config, decoder, offset + 0, _depth)?;
2651 Ok(())
2652 }
2653 }
2654
2655 impl fidl::encoding::ValueTypeMarker for ControlRemoveAddressResponse {
2656 type Borrowed<'a> = &'a Self;
2657 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2658 value
2659 }
2660 }
2661
2662 unsafe impl fidl::encoding::TypeMarker for ControlRemoveAddressResponse {
2663 type Owned = Self;
2664
2665 #[inline(always)]
2666 fn inline_align(_context: fidl::encoding::Context) -> usize {
2667 1
2668 }
2669
2670 #[inline(always)]
2671 fn inline_size(_context: fidl::encoding::Context) -> usize {
2672 1
2673 }
2674 }
2675
2676 unsafe impl<D: fidl::encoding::ResourceDialect>
2677 fidl::encoding::Encode<ControlRemoveAddressResponse, D> for &ControlRemoveAddressResponse
2678 {
2679 #[inline]
2680 unsafe fn encode(
2681 self,
2682 encoder: &mut fidl::encoding::Encoder<'_, D>,
2683 offset: usize,
2684 _depth: fidl::encoding::Depth,
2685 ) -> fidl::Result<()> {
2686 encoder.debug_check_bounds::<ControlRemoveAddressResponse>(offset);
2687 fidl::encoding::Encode::<ControlRemoveAddressResponse, D>::encode(
2689 (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.did_remove),),
2690 encoder,
2691 offset,
2692 _depth,
2693 )
2694 }
2695 }
2696 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
2697 fidl::encoding::Encode<ControlRemoveAddressResponse, D> for (T0,)
2698 {
2699 #[inline]
2700 unsafe fn encode(
2701 self,
2702 encoder: &mut fidl::encoding::Encoder<'_, D>,
2703 offset: usize,
2704 depth: fidl::encoding::Depth,
2705 ) -> fidl::Result<()> {
2706 encoder.debug_check_bounds::<ControlRemoveAddressResponse>(offset);
2707 self.0.encode(encoder, offset + 0, depth)?;
2711 Ok(())
2712 }
2713 }
2714
2715 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2716 for ControlRemoveAddressResponse
2717 {
2718 #[inline(always)]
2719 fn new_empty() -> Self {
2720 Self { did_remove: fidl::new_empty!(bool, D) }
2721 }
2722
2723 #[inline]
2724 unsafe fn decode(
2725 &mut self,
2726 decoder: &mut fidl::encoding::Decoder<'_, D>,
2727 offset: usize,
2728 _depth: fidl::encoding::Depth,
2729 ) -> fidl::Result<()> {
2730 decoder.debug_check_bounds::<Self>(offset);
2731 fidl::decode!(bool, D, &mut self.did_remove, decoder, offset + 0, _depth)?;
2733 Ok(())
2734 }
2735 }
2736
2737 impl fidl::encoding::ValueTypeMarker for ControlSetConfigurationResponse {
2738 type Borrowed<'a> = &'a Self;
2739 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2740 value
2741 }
2742 }
2743
2744 unsafe impl fidl::encoding::TypeMarker for ControlSetConfigurationResponse {
2745 type Owned = Self;
2746
2747 #[inline(always)]
2748 fn inline_align(_context: fidl::encoding::Context) -> usize {
2749 8
2750 }
2751
2752 #[inline(always)]
2753 fn inline_size(_context: fidl::encoding::Context) -> usize {
2754 16
2755 }
2756 }
2757
2758 unsafe impl<D: fidl::encoding::ResourceDialect>
2759 fidl::encoding::Encode<ControlSetConfigurationResponse, D>
2760 for &ControlSetConfigurationResponse
2761 {
2762 #[inline]
2763 unsafe fn encode(
2764 self,
2765 encoder: &mut fidl::encoding::Encoder<'_, D>,
2766 offset: usize,
2767 _depth: fidl::encoding::Depth,
2768 ) -> fidl::Result<()> {
2769 encoder.debug_check_bounds::<ControlSetConfigurationResponse>(offset);
2770 fidl::encoding::Encode::<ControlSetConfigurationResponse, D>::encode(
2772 (<Configuration as fidl::encoding::ValueTypeMarker>::borrow(&self.previous_config),),
2773 encoder,
2774 offset,
2775 _depth,
2776 )
2777 }
2778 }
2779 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Configuration, D>>
2780 fidl::encoding::Encode<ControlSetConfigurationResponse, D> for (T0,)
2781 {
2782 #[inline]
2783 unsafe fn encode(
2784 self,
2785 encoder: &mut fidl::encoding::Encoder<'_, D>,
2786 offset: usize,
2787 depth: fidl::encoding::Depth,
2788 ) -> fidl::Result<()> {
2789 encoder.debug_check_bounds::<ControlSetConfigurationResponse>(offset);
2790 self.0.encode(encoder, offset + 0, depth)?;
2794 Ok(())
2795 }
2796 }
2797
2798 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2799 for ControlSetConfigurationResponse
2800 {
2801 #[inline(always)]
2802 fn new_empty() -> Self {
2803 Self { previous_config: fidl::new_empty!(Configuration, D) }
2804 }
2805
2806 #[inline]
2807 unsafe fn decode(
2808 &mut self,
2809 decoder: &mut fidl::encoding::Decoder<'_, D>,
2810 offset: usize,
2811 _depth: fidl::encoding::Depth,
2812 ) -> fidl::Result<()> {
2813 decoder.debug_check_bounds::<Self>(offset);
2814 fidl::decode!(
2816 Configuration,
2817 D,
2818 &mut self.previous_config,
2819 decoder,
2820 offset + 0,
2821 _depth
2822 )?;
2823 Ok(())
2824 }
2825 }
2826
2827 impl fidl::encoding::ValueTypeMarker for Empty {
2828 type Borrowed<'a> = &'a Self;
2829 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2830 value
2831 }
2832 }
2833
2834 unsafe impl fidl::encoding::TypeMarker for Empty {
2835 type Owned = Self;
2836
2837 #[inline(always)]
2838 fn inline_align(_context: fidl::encoding::Context) -> usize {
2839 1
2840 }
2841
2842 #[inline(always)]
2843 fn inline_size(_context: fidl::encoding::Context) -> usize {
2844 1
2845 }
2846 }
2847
2848 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Empty, D> for &Empty {
2849 #[inline]
2850 unsafe fn encode(
2851 self,
2852 encoder: &mut fidl::encoding::Encoder<'_, D>,
2853 offset: usize,
2854 _depth: fidl::encoding::Depth,
2855 ) -> fidl::Result<()> {
2856 encoder.debug_check_bounds::<Empty>(offset);
2857 encoder.write_num(0u8, offset);
2858 Ok(())
2859 }
2860 }
2861
2862 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Empty {
2863 #[inline(always)]
2864 fn new_empty() -> Self {
2865 Self
2866 }
2867
2868 #[inline]
2869 unsafe fn decode(
2870 &mut self,
2871 decoder: &mut fidl::encoding::Decoder<'_, D>,
2872 offset: usize,
2873 _depth: fidl::encoding::Depth,
2874 ) -> fidl::Result<()> {
2875 decoder.debug_check_bounds::<Self>(offset);
2876 match decoder.read_num::<u8>(offset) {
2877 0 => Ok(()),
2878 _ => Err(fidl::Error::Invalid),
2879 }
2880 }
2881 }
2882
2883 impl AddressParameters {
2884 #[inline(always)]
2885 fn max_ordinal_present(&self) -> u64 {
2886 if let Some(_) = self.perform_dad {
2887 return 4;
2888 }
2889 if let Some(_) = self.add_subnet_route {
2890 return 3;
2891 }
2892 if let Some(_) = self.temporary {
2893 return 2;
2894 }
2895 if let Some(_) = self.initial_properties {
2896 return 1;
2897 }
2898 0
2899 }
2900 }
2901
2902 impl fidl::encoding::ValueTypeMarker for AddressParameters {
2903 type Borrowed<'a> = &'a Self;
2904 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2905 value
2906 }
2907 }
2908
2909 unsafe impl fidl::encoding::TypeMarker for AddressParameters {
2910 type Owned = Self;
2911
2912 #[inline(always)]
2913 fn inline_align(_context: fidl::encoding::Context) -> usize {
2914 8
2915 }
2916
2917 #[inline(always)]
2918 fn inline_size(_context: fidl::encoding::Context) -> usize {
2919 16
2920 }
2921 }
2922
2923 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AddressParameters, D>
2924 for &AddressParameters
2925 {
2926 unsafe fn encode(
2927 self,
2928 encoder: &mut fidl::encoding::Encoder<'_, D>,
2929 offset: usize,
2930 mut depth: fidl::encoding::Depth,
2931 ) -> fidl::Result<()> {
2932 encoder.debug_check_bounds::<AddressParameters>(offset);
2933 let max_ordinal: u64 = self.max_ordinal_present();
2935 encoder.write_num(max_ordinal, offset);
2936 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2937 if max_ordinal == 0 {
2939 return Ok(());
2940 }
2941 depth.increment()?;
2942 let envelope_size = 8;
2943 let bytes_len = max_ordinal as usize * envelope_size;
2944 #[allow(unused_variables)]
2945 let offset = encoder.out_of_line_offset(bytes_len);
2946 let mut _prev_end_offset: usize = 0;
2947 if 1 > max_ordinal {
2948 return Ok(());
2949 }
2950
2951 let cur_offset: usize = (1 - 1) * envelope_size;
2954
2955 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2957
2958 fidl::encoding::encode_in_envelope_optional::<AddressProperties, D>(
2963 self.initial_properties
2964 .as_ref()
2965 .map(<AddressProperties as fidl::encoding::ValueTypeMarker>::borrow),
2966 encoder,
2967 offset + cur_offset,
2968 depth,
2969 )?;
2970
2971 _prev_end_offset = cur_offset + envelope_size;
2972 if 2 > max_ordinal {
2973 return Ok(());
2974 }
2975
2976 let cur_offset: usize = (2 - 1) * envelope_size;
2979
2980 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2982
2983 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2988 self.temporary.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2989 encoder,
2990 offset + cur_offset,
2991 depth,
2992 )?;
2993
2994 _prev_end_offset = cur_offset + envelope_size;
2995 if 3 > max_ordinal {
2996 return Ok(());
2997 }
2998
2999 let cur_offset: usize = (3 - 1) * envelope_size;
3002
3003 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3005
3006 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3011 self.add_subnet_route
3012 .as_ref()
3013 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3014 encoder,
3015 offset + cur_offset,
3016 depth,
3017 )?;
3018
3019 _prev_end_offset = cur_offset + envelope_size;
3020 if 4 > max_ordinal {
3021 return Ok(());
3022 }
3023
3024 let cur_offset: usize = (4 - 1) * envelope_size;
3027
3028 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3030
3031 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3036 self.perform_dad.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3037 encoder,
3038 offset + cur_offset,
3039 depth,
3040 )?;
3041
3042 _prev_end_offset = cur_offset + envelope_size;
3043
3044 Ok(())
3045 }
3046 }
3047
3048 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AddressParameters {
3049 #[inline(always)]
3050 fn new_empty() -> Self {
3051 Self::default()
3052 }
3053
3054 unsafe fn decode(
3055 &mut self,
3056 decoder: &mut fidl::encoding::Decoder<'_, D>,
3057 offset: usize,
3058 mut depth: fidl::encoding::Depth,
3059 ) -> fidl::Result<()> {
3060 decoder.debug_check_bounds::<Self>(offset);
3061 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3062 None => return Err(fidl::Error::NotNullable),
3063 Some(len) => len,
3064 };
3065 if len == 0 {
3067 return Ok(());
3068 };
3069 depth.increment()?;
3070 let envelope_size = 8;
3071 let bytes_len = len * envelope_size;
3072 let offset = decoder.out_of_line_offset(bytes_len)?;
3073 let mut _next_ordinal_to_read = 0;
3075 let mut next_offset = offset;
3076 let end_offset = offset + bytes_len;
3077 _next_ordinal_to_read += 1;
3078 if next_offset >= end_offset {
3079 return Ok(());
3080 }
3081
3082 while _next_ordinal_to_read < 1 {
3084 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3085 _next_ordinal_to_read += 1;
3086 next_offset += envelope_size;
3087 }
3088
3089 let next_out_of_line = decoder.next_out_of_line();
3090 let handles_before = decoder.remaining_handles();
3091 if let Some((inlined, num_bytes, num_handles)) =
3092 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3093 {
3094 let member_inline_size =
3095 <AddressProperties as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3096 if inlined != (member_inline_size <= 4) {
3097 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3098 }
3099 let inner_offset;
3100 let mut inner_depth = depth.clone();
3101 if inlined {
3102 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3103 inner_offset = next_offset;
3104 } else {
3105 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3106 inner_depth.increment()?;
3107 }
3108 let val_ref = self
3109 .initial_properties
3110 .get_or_insert_with(|| fidl::new_empty!(AddressProperties, D));
3111 fidl::decode!(AddressProperties, D, val_ref, decoder, inner_offset, inner_depth)?;
3112 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3113 {
3114 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3115 }
3116 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3117 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3118 }
3119 }
3120
3121 next_offset += envelope_size;
3122 _next_ordinal_to_read += 1;
3123 if next_offset >= end_offset {
3124 return Ok(());
3125 }
3126
3127 while _next_ordinal_to_read < 2 {
3129 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3130 _next_ordinal_to_read += 1;
3131 next_offset += envelope_size;
3132 }
3133
3134 let next_out_of_line = decoder.next_out_of_line();
3135 let handles_before = decoder.remaining_handles();
3136 if let Some((inlined, num_bytes, num_handles)) =
3137 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3138 {
3139 let member_inline_size =
3140 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3141 if inlined != (member_inline_size <= 4) {
3142 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3143 }
3144 let inner_offset;
3145 let mut inner_depth = depth.clone();
3146 if inlined {
3147 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3148 inner_offset = next_offset;
3149 } else {
3150 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3151 inner_depth.increment()?;
3152 }
3153 let val_ref = self.temporary.get_or_insert_with(|| fidl::new_empty!(bool, D));
3154 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3155 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3156 {
3157 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3158 }
3159 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3160 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3161 }
3162 }
3163
3164 next_offset += envelope_size;
3165 _next_ordinal_to_read += 1;
3166 if next_offset >= end_offset {
3167 return Ok(());
3168 }
3169
3170 while _next_ordinal_to_read < 3 {
3172 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3173 _next_ordinal_to_read += 1;
3174 next_offset += envelope_size;
3175 }
3176
3177 let next_out_of_line = decoder.next_out_of_line();
3178 let handles_before = decoder.remaining_handles();
3179 if let Some((inlined, num_bytes, num_handles)) =
3180 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3181 {
3182 let member_inline_size =
3183 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3184 if inlined != (member_inline_size <= 4) {
3185 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3186 }
3187 let inner_offset;
3188 let mut inner_depth = depth.clone();
3189 if inlined {
3190 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3191 inner_offset = next_offset;
3192 } else {
3193 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3194 inner_depth.increment()?;
3195 }
3196 let val_ref =
3197 self.add_subnet_route.get_or_insert_with(|| fidl::new_empty!(bool, D));
3198 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3199 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3200 {
3201 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3202 }
3203 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3204 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3205 }
3206 }
3207
3208 next_offset += envelope_size;
3209 _next_ordinal_to_read += 1;
3210 if next_offset >= end_offset {
3211 return Ok(());
3212 }
3213
3214 while _next_ordinal_to_read < 4 {
3216 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3217 _next_ordinal_to_read += 1;
3218 next_offset += envelope_size;
3219 }
3220
3221 let next_out_of_line = decoder.next_out_of_line();
3222 let handles_before = decoder.remaining_handles();
3223 if let Some((inlined, num_bytes, num_handles)) =
3224 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3225 {
3226 let member_inline_size =
3227 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3228 if inlined != (member_inline_size <= 4) {
3229 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3230 }
3231 let inner_offset;
3232 let mut inner_depth = depth.clone();
3233 if inlined {
3234 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3235 inner_offset = next_offset;
3236 } else {
3237 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3238 inner_depth.increment()?;
3239 }
3240 let val_ref = self.perform_dad.get_or_insert_with(|| fidl::new_empty!(bool, D));
3241 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3242 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3243 {
3244 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3245 }
3246 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3247 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3248 }
3249 }
3250
3251 next_offset += envelope_size;
3252
3253 while next_offset < end_offset {
3255 _next_ordinal_to_read += 1;
3256 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3257 next_offset += envelope_size;
3258 }
3259
3260 Ok(())
3261 }
3262 }
3263
3264 impl AddressProperties {
3265 #[inline(always)]
3266 fn max_ordinal_present(&self) -> u64 {
3267 if let Some(_) = self.valid_lifetime_end {
3268 return 2;
3269 }
3270 if let Some(_) = self.preferred_lifetime_info {
3271 return 1;
3272 }
3273 0
3274 }
3275 }
3276
3277 impl fidl::encoding::ValueTypeMarker for AddressProperties {
3278 type Borrowed<'a> = &'a Self;
3279 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3280 value
3281 }
3282 }
3283
3284 unsafe impl fidl::encoding::TypeMarker for AddressProperties {
3285 type Owned = Self;
3286
3287 #[inline(always)]
3288 fn inline_align(_context: fidl::encoding::Context) -> usize {
3289 8
3290 }
3291
3292 #[inline(always)]
3293 fn inline_size(_context: fidl::encoding::Context) -> usize {
3294 16
3295 }
3296 }
3297
3298 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AddressProperties, D>
3299 for &AddressProperties
3300 {
3301 unsafe fn encode(
3302 self,
3303 encoder: &mut fidl::encoding::Encoder<'_, D>,
3304 offset: usize,
3305 mut depth: fidl::encoding::Depth,
3306 ) -> fidl::Result<()> {
3307 encoder.debug_check_bounds::<AddressProperties>(offset);
3308 let max_ordinal: u64 = self.max_ordinal_present();
3310 encoder.write_num(max_ordinal, offset);
3311 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3312 if max_ordinal == 0 {
3314 return Ok(());
3315 }
3316 depth.increment()?;
3317 let envelope_size = 8;
3318 let bytes_len = max_ordinal as usize * envelope_size;
3319 #[allow(unused_variables)]
3320 let offset = encoder.out_of_line_offset(bytes_len);
3321 let mut _prev_end_offset: usize = 0;
3322 if 1 > max_ordinal {
3323 return Ok(());
3324 }
3325
3326 let cur_offset: usize = (1 - 1) * envelope_size;
3329
3330 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3332
3333 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_interfaces_common::PreferredLifetimeInfo, D>(
3338 self.preferred_lifetime_info.as_ref().map(<fidl_fuchsia_net_interfaces_common::PreferredLifetimeInfo as fidl::encoding::ValueTypeMarker>::borrow),
3339 encoder, offset + cur_offset, depth
3340 )?;
3341
3342 _prev_end_offset = cur_offset + envelope_size;
3343 if 2 > max_ordinal {
3344 return Ok(());
3345 }
3346
3347 let cur_offset: usize = (2 - 1) * envelope_size;
3350
3351 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3353
3354 fidl::encoding::encode_in_envelope_optional::<i64, D>(
3359 self.valid_lifetime_end
3360 .as_ref()
3361 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
3362 encoder,
3363 offset + cur_offset,
3364 depth,
3365 )?;
3366
3367 _prev_end_offset = cur_offset + envelope_size;
3368
3369 Ok(())
3370 }
3371 }
3372
3373 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AddressProperties {
3374 #[inline(always)]
3375 fn new_empty() -> Self {
3376 Self::default()
3377 }
3378
3379 unsafe fn decode(
3380 &mut self,
3381 decoder: &mut fidl::encoding::Decoder<'_, D>,
3382 offset: usize,
3383 mut depth: fidl::encoding::Depth,
3384 ) -> fidl::Result<()> {
3385 decoder.debug_check_bounds::<Self>(offset);
3386 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3387 None => return Err(fidl::Error::NotNullable),
3388 Some(len) => len,
3389 };
3390 if len == 0 {
3392 return Ok(());
3393 };
3394 depth.increment()?;
3395 let envelope_size = 8;
3396 let bytes_len = len * envelope_size;
3397 let offset = decoder.out_of_line_offset(bytes_len)?;
3398 let mut _next_ordinal_to_read = 0;
3400 let mut next_offset = offset;
3401 let end_offset = offset + bytes_len;
3402 _next_ordinal_to_read += 1;
3403 if next_offset >= end_offset {
3404 return Ok(());
3405 }
3406
3407 while _next_ordinal_to_read < 1 {
3409 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3410 _next_ordinal_to_read += 1;
3411 next_offset += envelope_size;
3412 }
3413
3414 let next_out_of_line = decoder.next_out_of_line();
3415 let handles_before = decoder.remaining_handles();
3416 if let Some((inlined, num_bytes, num_handles)) =
3417 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3418 {
3419 let member_inline_size = <fidl_fuchsia_net_interfaces_common::PreferredLifetimeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3420 if inlined != (member_inline_size <= 4) {
3421 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3422 }
3423 let inner_offset;
3424 let mut inner_depth = depth.clone();
3425 if inlined {
3426 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3427 inner_offset = next_offset;
3428 } else {
3429 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3430 inner_depth.increment()?;
3431 }
3432 let val_ref = self.preferred_lifetime_info.get_or_insert_with(|| {
3433 fidl::new_empty!(fidl_fuchsia_net_interfaces_common::PreferredLifetimeInfo, D)
3434 });
3435 fidl::decode!(
3436 fidl_fuchsia_net_interfaces_common::PreferredLifetimeInfo,
3437 D,
3438 val_ref,
3439 decoder,
3440 inner_offset,
3441 inner_depth
3442 )?;
3443 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3444 {
3445 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3446 }
3447 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3448 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3449 }
3450 }
3451
3452 next_offset += envelope_size;
3453 _next_ordinal_to_read += 1;
3454 if next_offset >= end_offset {
3455 return Ok(());
3456 }
3457
3458 while _next_ordinal_to_read < 2 {
3460 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3461 _next_ordinal_to_read += 1;
3462 next_offset += envelope_size;
3463 }
3464
3465 let next_out_of_line = decoder.next_out_of_line();
3466 let handles_before = decoder.remaining_handles();
3467 if let Some((inlined, num_bytes, num_handles)) =
3468 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3469 {
3470 let member_inline_size =
3471 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3472 if inlined != (member_inline_size <= 4) {
3473 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3474 }
3475 let inner_offset;
3476 let mut inner_depth = depth.clone();
3477 if inlined {
3478 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3479 inner_offset = next_offset;
3480 } else {
3481 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3482 inner_depth.increment()?;
3483 }
3484 let val_ref =
3485 self.valid_lifetime_end.get_or_insert_with(|| fidl::new_empty!(i64, D));
3486 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
3487 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3488 {
3489 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3490 }
3491 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3492 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3493 }
3494 }
3495
3496 next_offset += envelope_size;
3497
3498 while next_offset < end_offset {
3500 _next_ordinal_to_read += 1;
3501 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3502 next_offset += envelope_size;
3503 }
3504
3505 Ok(())
3506 }
3507 }
3508
3509 impl ArpConfiguration {
3510 #[inline(always)]
3511 fn max_ordinal_present(&self) -> u64 {
3512 if let Some(_) = self.dad {
3513 return 2;
3514 }
3515 if let Some(_) = self.nud {
3516 return 1;
3517 }
3518 0
3519 }
3520 }
3521
3522 impl fidl::encoding::ValueTypeMarker for ArpConfiguration {
3523 type Borrowed<'a> = &'a Self;
3524 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3525 value
3526 }
3527 }
3528
3529 unsafe impl fidl::encoding::TypeMarker for ArpConfiguration {
3530 type Owned = Self;
3531
3532 #[inline(always)]
3533 fn inline_align(_context: fidl::encoding::Context) -> usize {
3534 8
3535 }
3536
3537 #[inline(always)]
3538 fn inline_size(_context: fidl::encoding::Context) -> usize {
3539 16
3540 }
3541 }
3542
3543 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ArpConfiguration, D>
3544 for &ArpConfiguration
3545 {
3546 unsafe fn encode(
3547 self,
3548 encoder: &mut fidl::encoding::Encoder<'_, D>,
3549 offset: usize,
3550 mut depth: fidl::encoding::Depth,
3551 ) -> fidl::Result<()> {
3552 encoder.debug_check_bounds::<ArpConfiguration>(offset);
3553 let max_ordinal: u64 = self.max_ordinal_present();
3555 encoder.write_num(max_ordinal, offset);
3556 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3557 if max_ordinal == 0 {
3559 return Ok(());
3560 }
3561 depth.increment()?;
3562 let envelope_size = 8;
3563 let bytes_len = max_ordinal as usize * envelope_size;
3564 #[allow(unused_variables)]
3565 let offset = encoder.out_of_line_offset(bytes_len);
3566 let mut _prev_end_offset: usize = 0;
3567 if 1 > max_ordinal {
3568 return Ok(());
3569 }
3570
3571 let cur_offset: usize = (1 - 1) * envelope_size;
3574
3575 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3577
3578 fidl::encoding::encode_in_envelope_optional::<NudConfiguration, D>(
3583 self.nud
3584 .as_ref()
3585 .map(<NudConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
3586 encoder,
3587 offset + cur_offset,
3588 depth,
3589 )?;
3590
3591 _prev_end_offset = cur_offset + envelope_size;
3592 if 2 > max_ordinal {
3593 return Ok(());
3594 }
3595
3596 let cur_offset: usize = (2 - 1) * envelope_size;
3599
3600 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3602
3603 fidl::encoding::encode_in_envelope_optional::<DadConfiguration, D>(
3608 self.dad
3609 .as_ref()
3610 .map(<DadConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
3611 encoder,
3612 offset + cur_offset,
3613 depth,
3614 )?;
3615
3616 _prev_end_offset = cur_offset + envelope_size;
3617
3618 Ok(())
3619 }
3620 }
3621
3622 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ArpConfiguration {
3623 #[inline(always)]
3624 fn new_empty() -> Self {
3625 Self::default()
3626 }
3627
3628 unsafe fn decode(
3629 &mut self,
3630 decoder: &mut fidl::encoding::Decoder<'_, D>,
3631 offset: usize,
3632 mut depth: fidl::encoding::Depth,
3633 ) -> fidl::Result<()> {
3634 decoder.debug_check_bounds::<Self>(offset);
3635 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3636 None => return Err(fidl::Error::NotNullable),
3637 Some(len) => len,
3638 };
3639 if len == 0 {
3641 return Ok(());
3642 };
3643 depth.increment()?;
3644 let envelope_size = 8;
3645 let bytes_len = len * envelope_size;
3646 let offset = decoder.out_of_line_offset(bytes_len)?;
3647 let mut _next_ordinal_to_read = 0;
3649 let mut next_offset = offset;
3650 let end_offset = offset + bytes_len;
3651 _next_ordinal_to_read += 1;
3652 if next_offset >= end_offset {
3653 return Ok(());
3654 }
3655
3656 while _next_ordinal_to_read < 1 {
3658 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3659 _next_ordinal_to_read += 1;
3660 next_offset += envelope_size;
3661 }
3662
3663 let next_out_of_line = decoder.next_out_of_line();
3664 let handles_before = decoder.remaining_handles();
3665 if let Some((inlined, num_bytes, num_handles)) =
3666 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3667 {
3668 let member_inline_size =
3669 <NudConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3670 if inlined != (member_inline_size <= 4) {
3671 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3672 }
3673 let inner_offset;
3674 let mut inner_depth = depth.clone();
3675 if inlined {
3676 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3677 inner_offset = next_offset;
3678 } else {
3679 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3680 inner_depth.increment()?;
3681 }
3682 let val_ref = self.nud.get_or_insert_with(|| fidl::new_empty!(NudConfiguration, D));
3683 fidl::decode!(NudConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
3684 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3685 {
3686 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3687 }
3688 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3689 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3690 }
3691 }
3692
3693 next_offset += envelope_size;
3694 _next_ordinal_to_read += 1;
3695 if next_offset >= end_offset {
3696 return Ok(());
3697 }
3698
3699 while _next_ordinal_to_read < 2 {
3701 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3702 _next_ordinal_to_read += 1;
3703 next_offset += envelope_size;
3704 }
3705
3706 let next_out_of_line = decoder.next_out_of_line();
3707 let handles_before = decoder.remaining_handles();
3708 if let Some((inlined, num_bytes, num_handles)) =
3709 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3710 {
3711 let member_inline_size =
3712 <DadConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3713 if inlined != (member_inline_size <= 4) {
3714 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3715 }
3716 let inner_offset;
3717 let mut inner_depth = depth.clone();
3718 if inlined {
3719 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3720 inner_offset = next_offset;
3721 } else {
3722 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3723 inner_depth.increment()?;
3724 }
3725 let val_ref = self.dad.get_or_insert_with(|| fidl::new_empty!(DadConfiguration, D));
3726 fidl::decode!(DadConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
3727 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3728 {
3729 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3730 }
3731 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3732 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3733 }
3734 }
3735
3736 next_offset += envelope_size;
3737
3738 while next_offset < end_offset {
3740 _next_ordinal_to_read += 1;
3741 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3742 next_offset += envelope_size;
3743 }
3744
3745 Ok(())
3746 }
3747 }
3748
3749 impl Configuration {
3750 #[inline(always)]
3751 fn max_ordinal_present(&self) -> u64 {
3752 if let Some(_) = self.ipv6 {
3753 return 2;
3754 }
3755 if let Some(_) = self.ipv4 {
3756 return 1;
3757 }
3758 0
3759 }
3760 }
3761
3762 impl fidl::encoding::ValueTypeMarker for Configuration {
3763 type Borrowed<'a> = &'a Self;
3764 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3765 value
3766 }
3767 }
3768
3769 unsafe impl fidl::encoding::TypeMarker for Configuration {
3770 type Owned = Self;
3771
3772 #[inline(always)]
3773 fn inline_align(_context: fidl::encoding::Context) -> usize {
3774 8
3775 }
3776
3777 #[inline(always)]
3778 fn inline_size(_context: fidl::encoding::Context) -> usize {
3779 16
3780 }
3781 }
3782
3783 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Configuration, D>
3784 for &Configuration
3785 {
3786 unsafe fn encode(
3787 self,
3788 encoder: &mut fidl::encoding::Encoder<'_, D>,
3789 offset: usize,
3790 mut depth: fidl::encoding::Depth,
3791 ) -> fidl::Result<()> {
3792 encoder.debug_check_bounds::<Configuration>(offset);
3793 let max_ordinal: u64 = self.max_ordinal_present();
3795 encoder.write_num(max_ordinal, offset);
3796 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3797 if max_ordinal == 0 {
3799 return Ok(());
3800 }
3801 depth.increment()?;
3802 let envelope_size = 8;
3803 let bytes_len = max_ordinal as usize * envelope_size;
3804 #[allow(unused_variables)]
3805 let offset = encoder.out_of_line_offset(bytes_len);
3806 let mut _prev_end_offset: usize = 0;
3807 if 1 > max_ordinal {
3808 return Ok(());
3809 }
3810
3811 let cur_offset: usize = (1 - 1) * envelope_size;
3814
3815 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3817
3818 fidl::encoding::encode_in_envelope_optional::<Ipv4Configuration, D>(
3823 self.ipv4
3824 .as_ref()
3825 .map(<Ipv4Configuration as fidl::encoding::ValueTypeMarker>::borrow),
3826 encoder,
3827 offset + cur_offset,
3828 depth,
3829 )?;
3830
3831 _prev_end_offset = cur_offset + envelope_size;
3832 if 2 > max_ordinal {
3833 return Ok(());
3834 }
3835
3836 let cur_offset: usize = (2 - 1) * envelope_size;
3839
3840 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3842
3843 fidl::encoding::encode_in_envelope_optional::<Ipv6Configuration, D>(
3848 self.ipv6
3849 .as_ref()
3850 .map(<Ipv6Configuration as fidl::encoding::ValueTypeMarker>::borrow),
3851 encoder,
3852 offset + cur_offset,
3853 depth,
3854 )?;
3855
3856 _prev_end_offset = cur_offset + envelope_size;
3857
3858 Ok(())
3859 }
3860 }
3861
3862 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Configuration {
3863 #[inline(always)]
3864 fn new_empty() -> Self {
3865 Self::default()
3866 }
3867
3868 unsafe fn decode(
3869 &mut self,
3870 decoder: &mut fidl::encoding::Decoder<'_, D>,
3871 offset: usize,
3872 mut depth: fidl::encoding::Depth,
3873 ) -> fidl::Result<()> {
3874 decoder.debug_check_bounds::<Self>(offset);
3875 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3876 None => return Err(fidl::Error::NotNullable),
3877 Some(len) => len,
3878 };
3879 if len == 0 {
3881 return Ok(());
3882 };
3883 depth.increment()?;
3884 let envelope_size = 8;
3885 let bytes_len = len * envelope_size;
3886 let offset = decoder.out_of_line_offset(bytes_len)?;
3887 let mut _next_ordinal_to_read = 0;
3889 let mut next_offset = offset;
3890 let end_offset = offset + bytes_len;
3891 _next_ordinal_to_read += 1;
3892 if next_offset >= end_offset {
3893 return Ok(());
3894 }
3895
3896 while _next_ordinal_to_read < 1 {
3898 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3899 _next_ordinal_to_read += 1;
3900 next_offset += envelope_size;
3901 }
3902
3903 let next_out_of_line = decoder.next_out_of_line();
3904 let handles_before = decoder.remaining_handles();
3905 if let Some((inlined, num_bytes, num_handles)) =
3906 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3907 {
3908 let member_inline_size =
3909 <Ipv4Configuration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3910 if inlined != (member_inline_size <= 4) {
3911 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3912 }
3913 let inner_offset;
3914 let mut inner_depth = depth.clone();
3915 if inlined {
3916 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3917 inner_offset = next_offset;
3918 } else {
3919 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3920 inner_depth.increment()?;
3921 }
3922 let val_ref =
3923 self.ipv4.get_or_insert_with(|| fidl::new_empty!(Ipv4Configuration, D));
3924 fidl::decode!(Ipv4Configuration, D, val_ref, decoder, inner_offset, inner_depth)?;
3925 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3926 {
3927 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3928 }
3929 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3930 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3931 }
3932 }
3933
3934 next_offset += envelope_size;
3935 _next_ordinal_to_read += 1;
3936 if next_offset >= end_offset {
3937 return Ok(());
3938 }
3939
3940 while _next_ordinal_to_read < 2 {
3942 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3943 _next_ordinal_to_read += 1;
3944 next_offset += envelope_size;
3945 }
3946
3947 let next_out_of_line = decoder.next_out_of_line();
3948 let handles_before = decoder.remaining_handles();
3949 if let Some((inlined, num_bytes, num_handles)) =
3950 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3951 {
3952 let member_inline_size =
3953 <Ipv6Configuration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3954 if inlined != (member_inline_size <= 4) {
3955 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3956 }
3957 let inner_offset;
3958 let mut inner_depth = depth.clone();
3959 if inlined {
3960 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3961 inner_offset = next_offset;
3962 } else {
3963 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3964 inner_depth.increment()?;
3965 }
3966 let val_ref =
3967 self.ipv6.get_or_insert_with(|| fidl::new_empty!(Ipv6Configuration, D));
3968 fidl::decode!(Ipv6Configuration, D, val_ref, decoder, inner_offset, inner_depth)?;
3969 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3970 {
3971 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3972 }
3973 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3974 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3975 }
3976 }
3977
3978 next_offset += envelope_size;
3979
3980 while next_offset < end_offset {
3982 _next_ordinal_to_read += 1;
3983 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3984 next_offset += envelope_size;
3985 }
3986
3987 Ok(())
3988 }
3989 }
3990
3991 impl DadConfiguration {
3992 #[inline(always)]
3993 fn max_ordinal_present(&self) -> u64 {
3994 if let Some(_) = self.transmits {
3995 return 1;
3996 }
3997 0
3998 }
3999 }
4000
4001 impl fidl::encoding::ValueTypeMarker for DadConfiguration {
4002 type Borrowed<'a> = &'a Self;
4003 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4004 value
4005 }
4006 }
4007
4008 unsafe impl fidl::encoding::TypeMarker for DadConfiguration {
4009 type Owned = Self;
4010
4011 #[inline(always)]
4012 fn inline_align(_context: fidl::encoding::Context) -> usize {
4013 8
4014 }
4015
4016 #[inline(always)]
4017 fn inline_size(_context: fidl::encoding::Context) -> usize {
4018 16
4019 }
4020 }
4021
4022 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DadConfiguration, D>
4023 for &DadConfiguration
4024 {
4025 unsafe fn encode(
4026 self,
4027 encoder: &mut fidl::encoding::Encoder<'_, D>,
4028 offset: usize,
4029 mut depth: fidl::encoding::Depth,
4030 ) -> fidl::Result<()> {
4031 encoder.debug_check_bounds::<DadConfiguration>(offset);
4032 let max_ordinal: u64 = self.max_ordinal_present();
4034 encoder.write_num(max_ordinal, offset);
4035 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4036 if max_ordinal == 0 {
4038 return Ok(());
4039 }
4040 depth.increment()?;
4041 let envelope_size = 8;
4042 let bytes_len = max_ordinal as usize * envelope_size;
4043 #[allow(unused_variables)]
4044 let offset = encoder.out_of_line_offset(bytes_len);
4045 let mut _prev_end_offset: usize = 0;
4046 if 1 > max_ordinal {
4047 return Ok(());
4048 }
4049
4050 let cur_offset: usize = (1 - 1) * envelope_size;
4053
4054 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4056
4057 fidl::encoding::encode_in_envelope_optional::<u16, D>(
4062 self.transmits.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4063 encoder,
4064 offset + cur_offset,
4065 depth,
4066 )?;
4067
4068 _prev_end_offset = cur_offset + envelope_size;
4069
4070 Ok(())
4071 }
4072 }
4073
4074 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DadConfiguration {
4075 #[inline(always)]
4076 fn new_empty() -> Self {
4077 Self::default()
4078 }
4079
4080 unsafe fn decode(
4081 &mut self,
4082 decoder: &mut fidl::encoding::Decoder<'_, D>,
4083 offset: usize,
4084 mut depth: fidl::encoding::Depth,
4085 ) -> fidl::Result<()> {
4086 decoder.debug_check_bounds::<Self>(offset);
4087 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4088 None => return Err(fidl::Error::NotNullable),
4089 Some(len) => len,
4090 };
4091 if len == 0 {
4093 return Ok(());
4094 };
4095 depth.increment()?;
4096 let envelope_size = 8;
4097 let bytes_len = len * envelope_size;
4098 let offset = decoder.out_of_line_offset(bytes_len)?;
4099 let mut _next_ordinal_to_read = 0;
4101 let mut next_offset = offset;
4102 let end_offset = offset + bytes_len;
4103 _next_ordinal_to_read += 1;
4104 if next_offset >= end_offset {
4105 return Ok(());
4106 }
4107
4108 while _next_ordinal_to_read < 1 {
4110 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4111 _next_ordinal_to_read += 1;
4112 next_offset += envelope_size;
4113 }
4114
4115 let next_out_of_line = decoder.next_out_of_line();
4116 let handles_before = decoder.remaining_handles();
4117 if let Some((inlined, num_bytes, num_handles)) =
4118 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4119 {
4120 let member_inline_size =
4121 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4122 if inlined != (member_inline_size <= 4) {
4123 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4124 }
4125 let inner_offset;
4126 let mut inner_depth = depth.clone();
4127 if inlined {
4128 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4129 inner_offset = next_offset;
4130 } else {
4131 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4132 inner_depth.increment()?;
4133 }
4134 let val_ref = self.transmits.get_or_insert_with(|| fidl::new_empty!(u16, D));
4135 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4136 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4137 {
4138 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4139 }
4140 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4141 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4142 }
4143 }
4144
4145 next_offset += envelope_size;
4146
4147 while next_offset < end_offset {
4149 _next_ordinal_to_read += 1;
4150 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4151 next_offset += envelope_size;
4152 }
4153
4154 Ok(())
4155 }
4156 }
4157
4158 impl IgmpConfiguration {
4159 #[inline(always)]
4160 fn max_ordinal_present(&self) -> u64 {
4161 if let Some(_) = self.version {
4162 return 1;
4163 }
4164 0
4165 }
4166 }
4167
4168 impl fidl::encoding::ValueTypeMarker for IgmpConfiguration {
4169 type Borrowed<'a> = &'a Self;
4170 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4171 value
4172 }
4173 }
4174
4175 unsafe impl fidl::encoding::TypeMarker for IgmpConfiguration {
4176 type Owned = Self;
4177
4178 #[inline(always)]
4179 fn inline_align(_context: fidl::encoding::Context) -> usize {
4180 8
4181 }
4182
4183 #[inline(always)]
4184 fn inline_size(_context: fidl::encoding::Context) -> usize {
4185 16
4186 }
4187 }
4188
4189 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<IgmpConfiguration, D>
4190 for &IgmpConfiguration
4191 {
4192 unsafe fn encode(
4193 self,
4194 encoder: &mut fidl::encoding::Encoder<'_, D>,
4195 offset: usize,
4196 mut depth: fidl::encoding::Depth,
4197 ) -> fidl::Result<()> {
4198 encoder.debug_check_bounds::<IgmpConfiguration>(offset);
4199 let max_ordinal: u64 = self.max_ordinal_present();
4201 encoder.write_num(max_ordinal, offset);
4202 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4203 if max_ordinal == 0 {
4205 return Ok(());
4206 }
4207 depth.increment()?;
4208 let envelope_size = 8;
4209 let bytes_len = max_ordinal as usize * envelope_size;
4210 #[allow(unused_variables)]
4211 let offset = encoder.out_of_line_offset(bytes_len);
4212 let mut _prev_end_offset: usize = 0;
4213 if 1 > max_ordinal {
4214 return Ok(());
4215 }
4216
4217 let cur_offset: usize = (1 - 1) * envelope_size;
4220
4221 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4223
4224 fidl::encoding::encode_in_envelope_optional::<IgmpVersion, D>(
4229 self.version.as_ref().map(<IgmpVersion as fidl::encoding::ValueTypeMarker>::borrow),
4230 encoder,
4231 offset + cur_offset,
4232 depth,
4233 )?;
4234
4235 _prev_end_offset = cur_offset + envelope_size;
4236
4237 Ok(())
4238 }
4239 }
4240
4241 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IgmpConfiguration {
4242 #[inline(always)]
4243 fn new_empty() -> Self {
4244 Self::default()
4245 }
4246
4247 unsafe fn decode(
4248 &mut self,
4249 decoder: &mut fidl::encoding::Decoder<'_, D>,
4250 offset: usize,
4251 mut depth: fidl::encoding::Depth,
4252 ) -> fidl::Result<()> {
4253 decoder.debug_check_bounds::<Self>(offset);
4254 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4255 None => return Err(fidl::Error::NotNullable),
4256 Some(len) => len,
4257 };
4258 if len == 0 {
4260 return Ok(());
4261 };
4262 depth.increment()?;
4263 let envelope_size = 8;
4264 let bytes_len = len * envelope_size;
4265 let offset = decoder.out_of_line_offset(bytes_len)?;
4266 let mut _next_ordinal_to_read = 0;
4268 let mut next_offset = offset;
4269 let end_offset = offset + bytes_len;
4270 _next_ordinal_to_read += 1;
4271 if next_offset >= end_offset {
4272 return Ok(());
4273 }
4274
4275 while _next_ordinal_to_read < 1 {
4277 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4278 _next_ordinal_to_read += 1;
4279 next_offset += envelope_size;
4280 }
4281
4282 let next_out_of_line = decoder.next_out_of_line();
4283 let handles_before = decoder.remaining_handles();
4284 if let Some((inlined, num_bytes, num_handles)) =
4285 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4286 {
4287 let member_inline_size =
4288 <IgmpVersion as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4289 if inlined != (member_inline_size <= 4) {
4290 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4291 }
4292 let inner_offset;
4293 let mut inner_depth = depth.clone();
4294 if inlined {
4295 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4296 inner_offset = next_offset;
4297 } else {
4298 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4299 inner_depth.increment()?;
4300 }
4301 let val_ref = self.version.get_or_insert_with(|| fidl::new_empty!(IgmpVersion, D));
4302 fidl::decode!(IgmpVersion, D, val_ref, decoder, inner_offset, inner_depth)?;
4303 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4304 {
4305 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4306 }
4307 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4308 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4309 }
4310 }
4311
4312 next_offset += envelope_size;
4313
4314 while next_offset < end_offset {
4316 _next_ordinal_to_read += 1;
4317 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4318 next_offset += envelope_size;
4319 }
4320
4321 Ok(())
4322 }
4323 }
4324
4325 impl Ipv4Configuration {
4326 #[inline(always)]
4327 fn max_ordinal_present(&self) -> u64 {
4328 if let Some(_) = self.enabled {
4329 return 5;
4330 }
4331 if let Some(_) = self.arp {
4332 return 4;
4333 }
4334 if let Some(_) = self.igmp {
4335 return 3;
4336 }
4337 if let Some(_) = self.multicast_forwarding {
4338 return 2;
4339 }
4340 if let Some(_) = self.unicast_forwarding {
4341 return 1;
4342 }
4343 0
4344 }
4345 }
4346
4347 impl fidl::encoding::ValueTypeMarker for Ipv4Configuration {
4348 type Borrowed<'a> = &'a Self;
4349 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4350 value
4351 }
4352 }
4353
4354 unsafe impl fidl::encoding::TypeMarker for Ipv4Configuration {
4355 type Owned = Self;
4356
4357 #[inline(always)]
4358 fn inline_align(_context: fidl::encoding::Context) -> usize {
4359 8
4360 }
4361
4362 #[inline(always)]
4363 fn inline_size(_context: fidl::encoding::Context) -> usize {
4364 16
4365 }
4366 }
4367
4368 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Ipv4Configuration, D>
4369 for &Ipv4Configuration
4370 {
4371 unsafe fn encode(
4372 self,
4373 encoder: &mut fidl::encoding::Encoder<'_, D>,
4374 offset: usize,
4375 mut depth: fidl::encoding::Depth,
4376 ) -> fidl::Result<()> {
4377 encoder.debug_check_bounds::<Ipv4Configuration>(offset);
4378 let max_ordinal: u64 = self.max_ordinal_present();
4380 encoder.write_num(max_ordinal, offset);
4381 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4382 if max_ordinal == 0 {
4384 return Ok(());
4385 }
4386 depth.increment()?;
4387 let envelope_size = 8;
4388 let bytes_len = max_ordinal as usize * envelope_size;
4389 #[allow(unused_variables)]
4390 let offset = encoder.out_of_line_offset(bytes_len);
4391 let mut _prev_end_offset: usize = 0;
4392 if 1 > max_ordinal {
4393 return Ok(());
4394 }
4395
4396 let cur_offset: usize = (1 - 1) * envelope_size;
4399
4400 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4402
4403 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4408 self.unicast_forwarding
4409 .as_ref()
4410 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4411 encoder,
4412 offset + cur_offset,
4413 depth,
4414 )?;
4415
4416 _prev_end_offset = cur_offset + envelope_size;
4417 if 2 > max_ordinal {
4418 return Ok(());
4419 }
4420
4421 let cur_offset: usize = (2 - 1) * envelope_size;
4424
4425 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4427
4428 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4433 self.multicast_forwarding
4434 .as_ref()
4435 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4436 encoder,
4437 offset + cur_offset,
4438 depth,
4439 )?;
4440
4441 _prev_end_offset = cur_offset + envelope_size;
4442 if 3 > max_ordinal {
4443 return Ok(());
4444 }
4445
4446 let cur_offset: usize = (3 - 1) * envelope_size;
4449
4450 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4452
4453 fidl::encoding::encode_in_envelope_optional::<IgmpConfiguration, D>(
4458 self.igmp
4459 .as_ref()
4460 .map(<IgmpConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
4461 encoder,
4462 offset + cur_offset,
4463 depth,
4464 )?;
4465
4466 _prev_end_offset = cur_offset + envelope_size;
4467 if 4 > max_ordinal {
4468 return Ok(());
4469 }
4470
4471 let cur_offset: usize = (4 - 1) * envelope_size;
4474
4475 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4477
4478 fidl::encoding::encode_in_envelope_optional::<ArpConfiguration, D>(
4483 self.arp
4484 .as_ref()
4485 .map(<ArpConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
4486 encoder,
4487 offset + cur_offset,
4488 depth,
4489 )?;
4490
4491 _prev_end_offset = cur_offset + envelope_size;
4492 if 5 > max_ordinal {
4493 return Ok(());
4494 }
4495
4496 let cur_offset: usize = (5 - 1) * envelope_size;
4499
4500 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4502
4503 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4508 self.enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4509 encoder,
4510 offset + cur_offset,
4511 depth,
4512 )?;
4513
4514 _prev_end_offset = cur_offset + envelope_size;
4515
4516 Ok(())
4517 }
4518 }
4519
4520 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Ipv4Configuration {
4521 #[inline(always)]
4522 fn new_empty() -> Self {
4523 Self::default()
4524 }
4525
4526 unsafe fn decode(
4527 &mut self,
4528 decoder: &mut fidl::encoding::Decoder<'_, D>,
4529 offset: usize,
4530 mut depth: fidl::encoding::Depth,
4531 ) -> fidl::Result<()> {
4532 decoder.debug_check_bounds::<Self>(offset);
4533 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4534 None => return Err(fidl::Error::NotNullable),
4535 Some(len) => len,
4536 };
4537 if len == 0 {
4539 return Ok(());
4540 };
4541 depth.increment()?;
4542 let envelope_size = 8;
4543 let bytes_len = len * envelope_size;
4544 let offset = decoder.out_of_line_offset(bytes_len)?;
4545 let mut _next_ordinal_to_read = 0;
4547 let mut next_offset = offset;
4548 let end_offset = offset + bytes_len;
4549 _next_ordinal_to_read += 1;
4550 if next_offset >= end_offset {
4551 return Ok(());
4552 }
4553
4554 while _next_ordinal_to_read < 1 {
4556 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4557 _next_ordinal_to_read += 1;
4558 next_offset += envelope_size;
4559 }
4560
4561 let next_out_of_line = decoder.next_out_of_line();
4562 let handles_before = decoder.remaining_handles();
4563 if let Some((inlined, num_bytes, num_handles)) =
4564 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4565 {
4566 let member_inline_size =
4567 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4568 if inlined != (member_inline_size <= 4) {
4569 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4570 }
4571 let inner_offset;
4572 let mut inner_depth = depth.clone();
4573 if inlined {
4574 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4575 inner_offset = next_offset;
4576 } else {
4577 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4578 inner_depth.increment()?;
4579 }
4580 let val_ref =
4581 self.unicast_forwarding.get_or_insert_with(|| fidl::new_empty!(bool, D));
4582 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4583 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4584 {
4585 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4586 }
4587 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4588 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4589 }
4590 }
4591
4592 next_offset += envelope_size;
4593 _next_ordinal_to_read += 1;
4594 if next_offset >= end_offset {
4595 return Ok(());
4596 }
4597
4598 while _next_ordinal_to_read < 2 {
4600 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4601 _next_ordinal_to_read += 1;
4602 next_offset += envelope_size;
4603 }
4604
4605 let next_out_of_line = decoder.next_out_of_line();
4606 let handles_before = decoder.remaining_handles();
4607 if let Some((inlined, num_bytes, num_handles)) =
4608 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4609 {
4610 let member_inline_size =
4611 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4612 if inlined != (member_inline_size <= 4) {
4613 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4614 }
4615 let inner_offset;
4616 let mut inner_depth = depth.clone();
4617 if inlined {
4618 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4619 inner_offset = next_offset;
4620 } else {
4621 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4622 inner_depth.increment()?;
4623 }
4624 let val_ref =
4625 self.multicast_forwarding.get_or_insert_with(|| fidl::new_empty!(bool, D));
4626 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4627 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4628 {
4629 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4630 }
4631 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4632 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4633 }
4634 }
4635
4636 next_offset += envelope_size;
4637 _next_ordinal_to_read += 1;
4638 if next_offset >= end_offset {
4639 return Ok(());
4640 }
4641
4642 while _next_ordinal_to_read < 3 {
4644 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4645 _next_ordinal_to_read += 1;
4646 next_offset += envelope_size;
4647 }
4648
4649 let next_out_of_line = decoder.next_out_of_line();
4650 let handles_before = decoder.remaining_handles();
4651 if let Some((inlined, num_bytes, num_handles)) =
4652 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4653 {
4654 let member_inline_size =
4655 <IgmpConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4656 if inlined != (member_inline_size <= 4) {
4657 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4658 }
4659 let inner_offset;
4660 let mut inner_depth = depth.clone();
4661 if inlined {
4662 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4663 inner_offset = next_offset;
4664 } else {
4665 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4666 inner_depth.increment()?;
4667 }
4668 let val_ref =
4669 self.igmp.get_or_insert_with(|| fidl::new_empty!(IgmpConfiguration, D));
4670 fidl::decode!(IgmpConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
4671 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4672 {
4673 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4674 }
4675 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4676 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4677 }
4678 }
4679
4680 next_offset += envelope_size;
4681 _next_ordinal_to_read += 1;
4682 if next_offset >= end_offset {
4683 return Ok(());
4684 }
4685
4686 while _next_ordinal_to_read < 4 {
4688 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4689 _next_ordinal_to_read += 1;
4690 next_offset += envelope_size;
4691 }
4692
4693 let next_out_of_line = decoder.next_out_of_line();
4694 let handles_before = decoder.remaining_handles();
4695 if let Some((inlined, num_bytes, num_handles)) =
4696 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4697 {
4698 let member_inline_size =
4699 <ArpConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4700 if inlined != (member_inline_size <= 4) {
4701 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4702 }
4703 let inner_offset;
4704 let mut inner_depth = depth.clone();
4705 if inlined {
4706 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4707 inner_offset = next_offset;
4708 } else {
4709 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4710 inner_depth.increment()?;
4711 }
4712 let val_ref = self.arp.get_or_insert_with(|| fidl::new_empty!(ArpConfiguration, D));
4713 fidl::decode!(ArpConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
4714 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4715 {
4716 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4717 }
4718 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4719 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4720 }
4721 }
4722
4723 next_offset += envelope_size;
4724 _next_ordinal_to_read += 1;
4725 if next_offset >= end_offset {
4726 return Ok(());
4727 }
4728
4729 while _next_ordinal_to_read < 5 {
4731 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4732 _next_ordinal_to_read += 1;
4733 next_offset += envelope_size;
4734 }
4735
4736 let next_out_of_line = decoder.next_out_of_line();
4737 let handles_before = decoder.remaining_handles();
4738 if let Some((inlined, num_bytes, num_handles)) =
4739 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4740 {
4741 let member_inline_size =
4742 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4743 if inlined != (member_inline_size <= 4) {
4744 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4745 }
4746 let inner_offset;
4747 let mut inner_depth = depth.clone();
4748 if inlined {
4749 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4750 inner_offset = next_offset;
4751 } else {
4752 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4753 inner_depth.increment()?;
4754 }
4755 let val_ref = self.enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
4756 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4757 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4758 {
4759 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4760 }
4761 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4762 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4763 }
4764 }
4765
4766 next_offset += envelope_size;
4767
4768 while next_offset < end_offset {
4770 _next_ordinal_to_read += 1;
4771 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4772 next_offset += envelope_size;
4773 }
4774
4775 Ok(())
4776 }
4777 }
4778
4779 impl Ipv6Configuration {
4780 #[inline(always)]
4781 fn max_ordinal_present(&self) -> u64 {
4782 if let Some(_) = self.enabled {
4783 return 5;
4784 }
4785 if let Some(_) = self.ndp {
4786 return 4;
4787 }
4788 if let Some(_) = self.mld {
4789 return 3;
4790 }
4791 if let Some(_) = self.multicast_forwarding {
4792 return 2;
4793 }
4794 if let Some(_) = self.unicast_forwarding {
4795 return 1;
4796 }
4797 0
4798 }
4799 }
4800
4801 impl fidl::encoding::ValueTypeMarker for Ipv6Configuration {
4802 type Borrowed<'a> = &'a Self;
4803 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4804 value
4805 }
4806 }
4807
4808 unsafe impl fidl::encoding::TypeMarker for Ipv6Configuration {
4809 type Owned = Self;
4810
4811 #[inline(always)]
4812 fn inline_align(_context: fidl::encoding::Context) -> usize {
4813 8
4814 }
4815
4816 #[inline(always)]
4817 fn inline_size(_context: fidl::encoding::Context) -> usize {
4818 16
4819 }
4820 }
4821
4822 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Ipv6Configuration, D>
4823 for &Ipv6Configuration
4824 {
4825 unsafe fn encode(
4826 self,
4827 encoder: &mut fidl::encoding::Encoder<'_, D>,
4828 offset: usize,
4829 mut depth: fidl::encoding::Depth,
4830 ) -> fidl::Result<()> {
4831 encoder.debug_check_bounds::<Ipv6Configuration>(offset);
4832 let max_ordinal: u64 = self.max_ordinal_present();
4834 encoder.write_num(max_ordinal, offset);
4835 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4836 if max_ordinal == 0 {
4838 return Ok(());
4839 }
4840 depth.increment()?;
4841 let envelope_size = 8;
4842 let bytes_len = max_ordinal as usize * envelope_size;
4843 #[allow(unused_variables)]
4844 let offset = encoder.out_of_line_offset(bytes_len);
4845 let mut _prev_end_offset: usize = 0;
4846 if 1 > max_ordinal {
4847 return Ok(());
4848 }
4849
4850 let cur_offset: usize = (1 - 1) * envelope_size;
4853
4854 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4856
4857 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4862 self.unicast_forwarding
4863 .as_ref()
4864 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4865 encoder,
4866 offset + cur_offset,
4867 depth,
4868 )?;
4869
4870 _prev_end_offset = cur_offset + envelope_size;
4871 if 2 > max_ordinal {
4872 return Ok(());
4873 }
4874
4875 let cur_offset: usize = (2 - 1) * envelope_size;
4878
4879 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4881
4882 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4887 self.multicast_forwarding
4888 .as_ref()
4889 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4890 encoder,
4891 offset + cur_offset,
4892 depth,
4893 )?;
4894
4895 _prev_end_offset = cur_offset + envelope_size;
4896 if 3 > max_ordinal {
4897 return Ok(());
4898 }
4899
4900 let cur_offset: usize = (3 - 1) * envelope_size;
4903
4904 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4906
4907 fidl::encoding::encode_in_envelope_optional::<MldConfiguration, D>(
4912 self.mld
4913 .as_ref()
4914 .map(<MldConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
4915 encoder,
4916 offset + cur_offset,
4917 depth,
4918 )?;
4919
4920 _prev_end_offset = cur_offset + envelope_size;
4921 if 4 > max_ordinal {
4922 return Ok(());
4923 }
4924
4925 let cur_offset: usize = (4 - 1) * envelope_size;
4928
4929 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4931
4932 fidl::encoding::encode_in_envelope_optional::<NdpConfiguration, D>(
4937 self.ndp
4938 .as_ref()
4939 .map(<NdpConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
4940 encoder,
4941 offset + cur_offset,
4942 depth,
4943 )?;
4944
4945 _prev_end_offset = cur_offset + envelope_size;
4946 if 5 > max_ordinal {
4947 return Ok(());
4948 }
4949
4950 let cur_offset: usize = (5 - 1) * envelope_size;
4953
4954 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4956
4957 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4962 self.enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4963 encoder,
4964 offset + cur_offset,
4965 depth,
4966 )?;
4967
4968 _prev_end_offset = cur_offset + envelope_size;
4969
4970 Ok(())
4971 }
4972 }
4973
4974 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Ipv6Configuration {
4975 #[inline(always)]
4976 fn new_empty() -> Self {
4977 Self::default()
4978 }
4979
4980 unsafe fn decode(
4981 &mut self,
4982 decoder: &mut fidl::encoding::Decoder<'_, D>,
4983 offset: usize,
4984 mut depth: fidl::encoding::Depth,
4985 ) -> fidl::Result<()> {
4986 decoder.debug_check_bounds::<Self>(offset);
4987 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4988 None => return Err(fidl::Error::NotNullable),
4989 Some(len) => len,
4990 };
4991 if len == 0 {
4993 return Ok(());
4994 };
4995 depth.increment()?;
4996 let envelope_size = 8;
4997 let bytes_len = len * envelope_size;
4998 let offset = decoder.out_of_line_offset(bytes_len)?;
4999 let mut _next_ordinal_to_read = 0;
5001 let mut next_offset = offset;
5002 let end_offset = offset + bytes_len;
5003 _next_ordinal_to_read += 1;
5004 if next_offset >= end_offset {
5005 return Ok(());
5006 }
5007
5008 while _next_ordinal_to_read < 1 {
5010 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5011 _next_ordinal_to_read += 1;
5012 next_offset += envelope_size;
5013 }
5014
5015 let next_out_of_line = decoder.next_out_of_line();
5016 let handles_before = decoder.remaining_handles();
5017 if let Some((inlined, num_bytes, num_handles)) =
5018 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5019 {
5020 let member_inline_size =
5021 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5022 if inlined != (member_inline_size <= 4) {
5023 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5024 }
5025 let inner_offset;
5026 let mut inner_depth = depth.clone();
5027 if inlined {
5028 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5029 inner_offset = next_offset;
5030 } else {
5031 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5032 inner_depth.increment()?;
5033 }
5034 let val_ref =
5035 self.unicast_forwarding.get_or_insert_with(|| fidl::new_empty!(bool, D));
5036 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5037 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5038 {
5039 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5040 }
5041 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5042 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5043 }
5044 }
5045
5046 next_offset += envelope_size;
5047 _next_ordinal_to_read += 1;
5048 if next_offset >= end_offset {
5049 return Ok(());
5050 }
5051
5052 while _next_ordinal_to_read < 2 {
5054 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5055 _next_ordinal_to_read += 1;
5056 next_offset += envelope_size;
5057 }
5058
5059 let next_out_of_line = decoder.next_out_of_line();
5060 let handles_before = decoder.remaining_handles();
5061 if let Some((inlined, num_bytes, num_handles)) =
5062 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5063 {
5064 let member_inline_size =
5065 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5066 if inlined != (member_inline_size <= 4) {
5067 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5068 }
5069 let inner_offset;
5070 let mut inner_depth = depth.clone();
5071 if inlined {
5072 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5073 inner_offset = next_offset;
5074 } else {
5075 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5076 inner_depth.increment()?;
5077 }
5078 let val_ref =
5079 self.multicast_forwarding.get_or_insert_with(|| fidl::new_empty!(bool, D));
5080 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5081 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5082 {
5083 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5084 }
5085 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5086 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5087 }
5088 }
5089
5090 next_offset += envelope_size;
5091 _next_ordinal_to_read += 1;
5092 if next_offset >= end_offset {
5093 return Ok(());
5094 }
5095
5096 while _next_ordinal_to_read < 3 {
5098 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5099 _next_ordinal_to_read += 1;
5100 next_offset += envelope_size;
5101 }
5102
5103 let next_out_of_line = decoder.next_out_of_line();
5104 let handles_before = decoder.remaining_handles();
5105 if let Some((inlined, num_bytes, num_handles)) =
5106 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5107 {
5108 let member_inline_size =
5109 <MldConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5110 if inlined != (member_inline_size <= 4) {
5111 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5112 }
5113 let inner_offset;
5114 let mut inner_depth = depth.clone();
5115 if inlined {
5116 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5117 inner_offset = next_offset;
5118 } else {
5119 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5120 inner_depth.increment()?;
5121 }
5122 let val_ref = self.mld.get_or_insert_with(|| fidl::new_empty!(MldConfiguration, D));
5123 fidl::decode!(MldConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
5124 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5125 {
5126 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5127 }
5128 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5129 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5130 }
5131 }
5132
5133 next_offset += envelope_size;
5134 _next_ordinal_to_read += 1;
5135 if next_offset >= end_offset {
5136 return Ok(());
5137 }
5138
5139 while _next_ordinal_to_read < 4 {
5141 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5142 _next_ordinal_to_read += 1;
5143 next_offset += envelope_size;
5144 }
5145
5146 let next_out_of_line = decoder.next_out_of_line();
5147 let handles_before = decoder.remaining_handles();
5148 if let Some((inlined, num_bytes, num_handles)) =
5149 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5150 {
5151 let member_inline_size =
5152 <NdpConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5153 if inlined != (member_inline_size <= 4) {
5154 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5155 }
5156 let inner_offset;
5157 let mut inner_depth = depth.clone();
5158 if inlined {
5159 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5160 inner_offset = next_offset;
5161 } else {
5162 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5163 inner_depth.increment()?;
5164 }
5165 let val_ref = self.ndp.get_or_insert_with(|| fidl::new_empty!(NdpConfiguration, D));
5166 fidl::decode!(NdpConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
5167 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5168 {
5169 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5170 }
5171 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5172 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5173 }
5174 }
5175
5176 next_offset += envelope_size;
5177 _next_ordinal_to_read += 1;
5178 if next_offset >= end_offset {
5179 return Ok(());
5180 }
5181
5182 while _next_ordinal_to_read < 5 {
5184 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5185 _next_ordinal_to_read += 1;
5186 next_offset += envelope_size;
5187 }
5188
5189 let next_out_of_line = decoder.next_out_of_line();
5190 let handles_before = decoder.remaining_handles();
5191 if let Some((inlined, num_bytes, num_handles)) =
5192 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5193 {
5194 let member_inline_size =
5195 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5196 if inlined != (member_inline_size <= 4) {
5197 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5198 }
5199 let inner_offset;
5200 let mut inner_depth = depth.clone();
5201 if inlined {
5202 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5203 inner_offset = next_offset;
5204 } else {
5205 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5206 inner_depth.increment()?;
5207 }
5208 let val_ref = self.enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
5209 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5210 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5211 {
5212 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5213 }
5214 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5215 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5216 }
5217 }
5218
5219 next_offset += envelope_size;
5220
5221 while next_offset < end_offset {
5223 _next_ordinal_to_read += 1;
5224 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5225 next_offset += envelope_size;
5226 }
5227
5228 Ok(())
5229 }
5230 }
5231
5232 impl MldConfiguration {
5233 #[inline(always)]
5234 fn max_ordinal_present(&self) -> u64 {
5235 if let Some(_) = self.version {
5236 return 1;
5237 }
5238 0
5239 }
5240 }
5241
5242 impl fidl::encoding::ValueTypeMarker for MldConfiguration {
5243 type Borrowed<'a> = &'a Self;
5244 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5245 value
5246 }
5247 }
5248
5249 unsafe impl fidl::encoding::TypeMarker for MldConfiguration {
5250 type Owned = Self;
5251
5252 #[inline(always)]
5253 fn inline_align(_context: fidl::encoding::Context) -> usize {
5254 8
5255 }
5256
5257 #[inline(always)]
5258 fn inline_size(_context: fidl::encoding::Context) -> usize {
5259 16
5260 }
5261 }
5262
5263 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MldConfiguration, D>
5264 for &MldConfiguration
5265 {
5266 unsafe fn encode(
5267 self,
5268 encoder: &mut fidl::encoding::Encoder<'_, D>,
5269 offset: usize,
5270 mut depth: fidl::encoding::Depth,
5271 ) -> fidl::Result<()> {
5272 encoder.debug_check_bounds::<MldConfiguration>(offset);
5273 let max_ordinal: u64 = self.max_ordinal_present();
5275 encoder.write_num(max_ordinal, offset);
5276 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5277 if max_ordinal == 0 {
5279 return Ok(());
5280 }
5281 depth.increment()?;
5282 let envelope_size = 8;
5283 let bytes_len = max_ordinal as usize * envelope_size;
5284 #[allow(unused_variables)]
5285 let offset = encoder.out_of_line_offset(bytes_len);
5286 let mut _prev_end_offset: usize = 0;
5287 if 1 > max_ordinal {
5288 return Ok(());
5289 }
5290
5291 let cur_offset: usize = (1 - 1) * envelope_size;
5294
5295 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5297
5298 fidl::encoding::encode_in_envelope_optional::<MldVersion, D>(
5303 self.version.as_ref().map(<MldVersion as fidl::encoding::ValueTypeMarker>::borrow),
5304 encoder,
5305 offset + cur_offset,
5306 depth,
5307 )?;
5308
5309 _prev_end_offset = cur_offset + envelope_size;
5310
5311 Ok(())
5312 }
5313 }
5314
5315 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MldConfiguration {
5316 #[inline(always)]
5317 fn new_empty() -> Self {
5318 Self::default()
5319 }
5320
5321 unsafe fn decode(
5322 &mut self,
5323 decoder: &mut fidl::encoding::Decoder<'_, D>,
5324 offset: usize,
5325 mut depth: fidl::encoding::Depth,
5326 ) -> fidl::Result<()> {
5327 decoder.debug_check_bounds::<Self>(offset);
5328 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5329 None => return Err(fidl::Error::NotNullable),
5330 Some(len) => len,
5331 };
5332 if len == 0 {
5334 return Ok(());
5335 };
5336 depth.increment()?;
5337 let envelope_size = 8;
5338 let bytes_len = len * envelope_size;
5339 let offset = decoder.out_of_line_offset(bytes_len)?;
5340 let mut _next_ordinal_to_read = 0;
5342 let mut next_offset = offset;
5343 let end_offset = offset + bytes_len;
5344 _next_ordinal_to_read += 1;
5345 if next_offset >= end_offset {
5346 return Ok(());
5347 }
5348
5349 while _next_ordinal_to_read < 1 {
5351 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5352 _next_ordinal_to_read += 1;
5353 next_offset += envelope_size;
5354 }
5355
5356 let next_out_of_line = decoder.next_out_of_line();
5357 let handles_before = decoder.remaining_handles();
5358 if let Some((inlined, num_bytes, num_handles)) =
5359 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5360 {
5361 let member_inline_size =
5362 <MldVersion as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5363 if inlined != (member_inline_size <= 4) {
5364 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5365 }
5366 let inner_offset;
5367 let mut inner_depth = depth.clone();
5368 if inlined {
5369 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5370 inner_offset = next_offset;
5371 } else {
5372 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5373 inner_depth.increment()?;
5374 }
5375 let val_ref = self.version.get_or_insert_with(|| fidl::new_empty!(MldVersion, D));
5376 fidl::decode!(MldVersion, D, val_ref, decoder, inner_offset, inner_depth)?;
5377 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5378 {
5379 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5380 }
5381 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5382 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5383 }
5384 }
5385
5386 next_offset += envelope_size;
5387
5388 while next_offset < end_offset {
5390 _next_ordinal_to_read += 1;
5391 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5392 next_offset += envelope_size;
5393 }
5394
5395 Ok(())
5396 }
5397 }
5398
5399 impl NdpConfiguration {
5400 #[inline(always)]
5401 fn max_ordinal_present(&self) -> u64 {
5402 if let Some(_) = self.router_solicitations {
5403 return 5;
5404 }
5405 if let Some(_) = self.route_discovery {
5406 return 4;
5407 }
5408 if let Some(_) = self.slaac {
5409 return 3;
5410 }
5411 if let Some(_) = self.dad {
5412 return 2;
5413 }
5414 if let Some(_) = self.nud {
5415 return 1;
5416 }
5417 0
5418 }
5419 }
5420
5421 impl fidl::encoding::ValueTypeMarker for NdpConfiguration {
5422 type Borrowed<'a> = &'a Self;
5423 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5424 value
5425 }
5426 }
5427
5428 unsafe impl fidl::encoding::TypeMarker for NdpConfiguration {
5429 type Owned = Self;
5430
5431 #[inline(always)]
5432 fn inline_align(_context: fidl::encoding::Context) -> usize {
5433 8
5434 }
5435
5436 #[inline(always)]
5437 fn inline_size(_context: fidl::encoding::Context) -> usize {
5438 16
5439 }
5440 }
5441
5442 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NdpConfiguration, D>
5443 for &NdpConfiguration
5444 {
5445 unsafe fn encode(
5446 self,
5447 encoder: &mut fidl::encoding::Encoder<'_, D>,
5448 offset: usize,
5449 mut depth: fidl::encoding::Depth,
5450 ) -> fidl::Result<()> {
5451 encoder.debug_check_bounds::<NdpConfiguration>(offset);
5452 let max_ordinal: u64 = self.max_ordinal_present();
5454 encoder.write_num(max_ordinal, offset);
5455 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5456 if max_ordinal == 0 {
5458 return Ok(());
5459 }
5460 depth.increment()?;
5461 let envelope_size = 8;
5462 let bytes_len = max_ordinal as usize * envelope_size;
5463 #[allow(unused_variables)]
5464 let offset = encoder.out_of_line_offset(bytes_len);
5465 let mut _prev_end_offset: usize = 0;
5466 if 1 > max_ordinal {
5467 return Ok(());
5468 }
5469
5470 let cur_offset: usize = (1 - 1) * envelope_size;
5473
5474 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5476
5477 fidl::encoding::encode_in_envelope_optional::<NudConfiguration, D>(
5482 self.nud
5483 .as_ref()
5484 .map(<NudConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
5485 encoder,
5486 offset + cur_offset,
5487 depth,
5488 )?;
5489
5490 _prev_end_offset = cur_offset + envelope_size;
5491 if 2 > max_ordinal {
5492 return Ok(());
5493 }
5494
5495 let cur_offset: usize = (2 - 1) * envelope_size;
5498
5499 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5501
5502 fidl::encoding::encode_in_envelope_optional::<DadConfiguration, D>(
5507 self.dad
5508 .as_ref()
5509 .map(<DadConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
5510 encoder,
5511 offset + cur_offset,
5512 depth,
5513 )?;
5514
5515 _prev_end_offset = cur_offset + envelope_size;
5516 if 3 > max_ordinal {
5517 return Ok(());
5518 }
5519
5520 let cur_offset: usize = (3 - 1) * envelope_size;
5523
5524 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5526
5527 fidl::encoding::encode_in_envelope_optional::<SlaacConfiguration, D>(
5532 self.slaac
5533 .as_ref()
5534 .map(<SlaacConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
5535 encoder,
5536 offset + cur_offset,
5537 depth,
5538 )?;
5539
5540 _prev_end_offset = cur_offset + envelope_size;
5541 if 4 > max_ordinal {
5542 return Ok(());
5543 }
5544
5545 let cur_offset: usize = (4 - 1) * envelope_size;
5548
5549 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5551
5552 fidl::encoding::encode_in_envelope_optional::<RouteDiscoveryConfiguration, D>(
5557 self.route_discovery
5558 .as_ref()
5559 .map(<RouteDiscoveryConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
5560 encoder,
5561 offset + cur_offset,
5562 depth,
5563 )?;
5564
5565 _prev_end_offset = cur_offset + envelope_size;
5566 if 5 > max_ordinal {
5567 return Ok(());
5568 }
5569
5570 let cur_offset: usize = (5 - 1) * envelope_size;
5573
5574 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5576
5577 fidl::encoding::encode_in_envelope_optional::<RouterSolicitationConfiguration, D>(
5582 self.router_solicitations.as_ref().map(
5583 <RouterSolicitationConfiguration as fidl::encoding::ValueTypeMarker>::borrow,
5584 ),
5585 encoder,
5586 offset + cur_offset,
5587 depth,
5588 )?;
5589
5590 _prev_end_offset = cur_offset + envelope_size;
5591
5592 Ok(())
5593 }
5594 }
5595
5596 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NdpConfiguration {
5597 #[inline(always)]
5598 fn new_empty() -> Self {
5599 Self::default()
5600 }
5601
5602 unsafe fn decode(
5603 &mut self,
5604 decoder: &mut fidl::encoding::Decoder<'_, D>,
5605 offset: usize,
5606 mut depth: fidl::encoding::Depth,
5607 ) -> fidl::Result<()> {
5608 decoder.debug_check_bounds::<Self>(offset);
5609 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5610 None => return Err(fidl::Error::NotNullable),
5611 Some(len) => len,
5612 };
5613 if len == 0 {
5615 return Ok(());
5616 };
5617 depth.increment()?;
5618 let envelope_size = 8;
5619 let bytes_len = len * envelope_size;
5620 let offset = decoder.out_of_line_offset(bytes_len)?;
5621 let mut _next_ordinal_to_read = 0;
5623 let mut next_offset = offset;
5624 let end_offset = offset + bytes_len;
5625 _next_ordinal_to_read += 1;
5626 if next_offset >= end_offset {
5627 return Ok(());
5628 }
5629
5630 while _next_ordinal_to_read < 1 {
5632 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5633 _next_ordinal_to_read += 1;
5634 next_offset += envelope_size;
5635 }
5636
5637 let next_out_of_line = decoder.next_out_of_line();
5638 let handles_before = decoder.remaining_handles();
5639 if let Some((inlined, num_bytes, num_handles)) =
5640 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5641 {
5642 let member_inline_size =
5643 <NudConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5644 if inlined != (member_inline_size <= 4) {
5645 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5646 }
5647 let inner_offset;
5648 let mut inner_depth = depth.clone();
5649 if inlined {
5650 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5651 inner_offset = next_offset;
5652 } else {
5653 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5654 inner_depth.increment()?;
5655 }
5656 let val_ref = self.nud.get_or_insert_with(|| fidl::new_empty!(NudConfiguration, D));
5657 fidl::decode!(NudConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
5658 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5659 {
5660 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5661 }
5662 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5663 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5664 }
5665 }
5666
5667 next_offset += envelope_size;
5668 _next_ordinal_to_read += 1;
5669 if next_offset >= end_offset {
5670 return Ok(());
5671 }
5672
5673 while _next_ordinal_to_read < 2 {
5675 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5676 _next_ordinal_to_read += 1;
5677 next_offset += envelope_size;
5678 }
5679
5680 let next_out_of_line = decoder.next_out_of_line();
5681 let handles_before = decoder.remaining_handles();
5682 if let Some((inlined, num_bytes, num_handles)) =
5683 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5684 {
5685 let member_inline_size =
5686 <DadConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5687 if inlined != (member_inline_size <= 4) {
5688 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5689 }
5690 let inner_offset;
5691 let mut inner_depth = depth.clone();
5692 if inlined {
5693 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5694 inner_offset = next_offset;
5695 } else {
5696 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5697 inner_depth.increment()?;
5698 }
5699 let val_ref = self.dad.get_or_insert_with(|| fidl::new_empty!(DadConfiguration, D));
5700 fidl::decode!(DadConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
5701 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5702 {
5703 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5704 }
5705 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5706 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5707 }
5708 }
5709
5710 next_offset += envelope_size;
5711 _next_ordinal_to_read += 1;
5712 if next_offset >= end_offset {
5713 return Ok(());
5714 }
5715
5716 while _next_ordinal_to_read < 3 {
5718 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5719 _next_ordinal_to_read += 1;
5720 next_offset += envelope_size;
5721 }
5722
5723 let next_out_of_line = decoder.next_out_of_line();
5724 let handles_before = decoder.remaining_handles();
5725 if let Some((inlined, num_bytes, num_handles)) =
5726 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5727 {
5728 let member_inline_size =
5729 <SlaacConfiguration as fidl::encoding::TypeMarker>::inline_size(
5730 decoder.context,
5731 );
5732 if inlined != (member_inline_size <= 4) {
5733 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5734 }
5735 let inner_offset;
5736 let mut inner_depth = depth.clone();
5737 if inlined {
5738 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5739 inner_offset = next_offset;
5740 } else {
5741 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5742 inner_depth.increment()?;
5743 }
5744 let val_ref =
5745 self.slaac.get_or_insert_with(|| fidl::new_empty!(SlaacConfiguration, D));
5746 fidl::decode!(SlaacConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
5747 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5748 {
5749 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5750 }
5751 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5752 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5753 }
5754 }
5755
5756 next_offset += envelope_size;
5757 _next_ordinal_to_read += 1;
5758 if next_offset >= end_offset {
5759 return Ok(());
5760 }
5761
5762 while _next_ordinal_to_read < 4 {
5764 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5765 _next_ordinal_to_read += 1;
5766 next_offset += envelope_size;
5767 }
5768
5769 let next_out_of_line = decoder.next_out_of_line();
5770 let handles_before = decoder.remaining_handles();
5771 if let Some((inlined, num_bytes, num_handles)) =
5772 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5773 {
5774 let member_inline_size =
5775 <RouteDiscoveryConfiguration as fidl::encoding::TypeMarker>::inline_size(
5776 decoder.context,
5777 );
5778 if inlined != (member_inline_size <= 4) {
5779 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5780 }
5781 let inner_offset;
5782 let mut inner_depth = depth.clone();
5783 if inlined {
5784 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5785 inner_offset = next_offset;
5786 } else {
5787 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5788 inner_depth.increment()?;
5789 }
5790 let val_ref = self
5791 .route_discovery
5792 .get_or_insert_with(|| fidl::new_empty!(RouteDiscoveryConfiguration, D));
5793 fidl::decode!(
5794 RouteDiscoveryConfiguration,
5795 D,
5796 val_ref,
5797 decoder,
5798 inner_offset,
5799 inner_depth
5800 )?;
5801 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5802 {
5803 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5804 }
5805 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5806 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5807 }
5808 }
5809
5810 next_offset += envelope_size;
5811 _next_ordinal_to_read += 1;
5812 if next_offset >= end_offset {
5813 return Ok(());
5814 }
5815
5816 while _next_ordinal_to_read < 5 {
5818 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5819 _next_ordinal_to_read += 1;
5820 next_offset += envelope_size;
5821 }
5822
5823 let next_out_of_line = decoder.next_out_of_line();
5824 let handles_before = decoder.remaining_handles();
5825 if let Some((inlined, num_bytes, num_handles)) =
5826 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5827 {
5828 let member_inline_size =
5829 <RouterSolicitationConfiguration as fidl::encoding::TypeMarker>::inline_size(
5830 decoder.context,
5831 );
5832 if inlined != (member_inline_size <= 4) {
5833 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5834 }
5835 let inner_offset;
5836 let mut inner_depth = depth.clone();
5837 if inlined {
5838 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5839 inner_offset = next_offset;
5840 } else {
5841 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5842 inner_depth.increment()?;
5843 }
5844 let val_ref = self
5845 .router_solicitations
5846 .get_or_insert_with(|| fidl::new_empty!(RouterSolicitationConfiguration, D));
5847 fidl::decode!(
5848 RouterSolicitationConfiguration,
5849 D,
5850 val_ref,
5851 decoder,
5852 inner_offset,
5853 inner_depth
5854 )?;
5855 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5856 {
5857 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5858 }
5859 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5860 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5861 }
5862 }
5863
5864 next_offset += envelope_size;
5865
5866 while next_offset < end_offset {
5868 _next_ordinal_to_read += 1;
5869 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5870 next_offset += envelope_size;
5871 }
5872
5873 Ok(())
5874 }
5875 }
5876
5877 impl NudConfiguration {
5878 #[inline(always)]
5879 fn max_ordinal_present(&self) -> u64 {
5880 if let Some(_) = self.retrans_timer {
5881 return 4;
5882 }
5883 if let Some(_) = self.base_reachable_time {
5884 return 3;
5885 }
5886 if let Some(_) = self.max_unicast_solicitations {
5887 return 2;
5888 }
5889 if let Some(_) = self.max_multicast_solicitations {
5890 return 1;
5891 }
5892 0
5893 }
5894 }
5895
5896 impl fidl::encoding::ValueTypeMarker for NudConfiguration {
5897 type Borrowed<'a> = &'a Self;
5898 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5899 value
5900 }
5901 }
5902
5903 unsafe impl fidl::encoding::TypeMarker for NudConfiguration {
5904 type Owned = Self;
5905
5906 #[inline(always)]
5907 fn inline_align(_context: fidl::encoding::Context) -> usize {
5908 8
5909 }
5910
5911 #[inline(always)]
5912 fn inline_size(_context: fidl::encoding::Context) -> usize {
5913 16
5914 }
5915 }
5916
5917 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NudConfiguration, D>
5918 for &NudConfiguration
5919 {
5920 unsafe fn encode(
5921 self,
5922 encoder: &mut fidl::encoding::Encoder<'_, D>,
5923 offset: usize,
5924 mut depth: fidl::encoding::Depth,
5925 ) -> fidl::Result<()> {
5926 encoder.debug_check_bounds::<NudConfiguration>(offset);
5927 let max_ordinal: u64 = self.max_ordinal_present();
5929 encoder.write_num(max_ordinal, offset);
5930 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5931 if max_ordinal == 0 {
5933 return Ok(());
5934 }
5935 depth.increment()?;
5936 let envelope_size = 8;
5937 let bytes_len = max_ordinal as usize * envelope_size;
5938 #[allow(unused_variables)]
5939 let offset = encoder.out_of_line_offset(bytes_len);
5940 let mut _prev_end_offset: usize = 0;
5941 if 1 > max_ordinal {
5942 return Ok(());
5943 }
5944
5945 let cur_offset: usize = (1 - 1) * envelope_size;
5948
5949 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5951
5952 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5957 self.max_multicast_solicitations
5958 .as_ref()
5959 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5960 encoder,
5961 offset + cur_offset,
5962 depth,
5963 )?;
5964
5965 _prev_end_offset = cur_offset + envelope_size;
5966 if 2 > max_ordinal {
5967 return Ok(());
5968 }
5969
5970 let cur_offset: usize = (2 - 1) * envelope_size;
5973
5974 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5976
5977 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5982 self.max_unicast_solicitations
5983 .as_ref()
5984 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5985 encoder,
5986 offset + cur_offset,
5987 depth,
5988 )?;
5989
5990 _prev_end_offset = cur_offset + envelope_size;
5991 if 3 > max_ordinal {
5992 return Ok(());
5993 }
5994
5995 let cur_offset: usize = (3 - 1) * envelope_size;
5998
5999 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6001
6002 fidl::encoding::encode_in_envelope_optional::<i64, D>(
6007 self.base_reachable_time
6008 .as_ref()
6009 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
6010 encoder,
6011 offset + cur_offset,
6012 depth,
6013 )?;
6014
6015 _prev_end_offset = cur_offset + envelope_size;
6016 if 4 > max_ordinal {
6017 return Ok(());
6018 }
6019
6020 let cur_offset: usize = (4 - 1) * envelope_size;
6023
6024 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6026
6027 fidl::encoding::encode_in_envelope_optional::<i64, D>(
6032 self.retrans_timer.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
6033 encoder,
6034 offset + cur_offset,
6035 depth,
6036 )?;
6037
6038 _prev_end_offset = cur_offset + envelope_size;
6039
6040 Ok(())
6041 }
6042 }
6043
6044 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NudConfiguration {
6045 #[inline(always)]
6046 fn new_empty() -> Self {
6047 Self::default()
6048 }
6049
6050 unsafe fn decode(
6051 &mut self,
6052 decoder: &mut fidl::encoding::Decoder<'_, D>,
6053 offset: usize,
6054 mut depth: fidl::encoding::Depth,
6055 ) -> fidl::Result<()> {
6056 decoder.debug_check_bounds::<Self>(offset);
6057 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6058 None => return Err(fidl::Error::NotNullable),
6059 Some(len) => len,
6060 };
6061 if len == 0 {
6063 return Ok(());
6064 };
6065 depth.increment()?;
6066 let envelope_size = 8;
6067 let bytes_len = len * envelope_size;
6068 let offset = decoder.out_of_line_offset(bytes_len)?;
6069 let mut _next_ordinal_to_read = 0;
6071 let mut next_offset = offset;
6072 let end_offset = offset + bytes_len;
6073 _next_ordinal_to_read += 1;
6074 if next_offset >= end_offset {
6075 return Ok(());
6076 }
6077
6078 while _next_ordinal_to_read < 1 {
6080 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6081 _next_ordinal_to_read += 1;
6082 next_offset += envelope_size;
6083 }
6084
6085 let next_out_of_line = decoder.next_out_of_line();
6086 let handles_before = decoder.remaining_handles();
6087 if let Some((inlined, num_bytes, num_handles)) =
6088 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6089 {
6090 let member_inline_size =
6091 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6092 if inlined != (member_inline_size <= 4) {
6093 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6094 }
6095 let inner_offset;
6096 let mut inner_depth = depth.clone();
6097 if inlined {
6098 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6099 inner_offset = next_offset;
6100 } else {
6101 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6102 inner_depth.increment()?;
6103 }
6104 let val_ref = self
6105 .max_multicast_solicitations
6106 .get_or_insert_with(|| fidl::new_empty!(u16, D));
6107 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6108 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6109 {
6110 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6111 }
6112 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6113 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6114 }
6115 }
6116
6117 next_offset += envelope_size;
6118 _next_ordinal_to_read += 1;
6119 if next_offset >= end_offset {
6120 return Ok(());
6121 }
6122
6123 while _next_ordinal_to_read < 2 {
6125 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6126 _next_ordinal_to_read += 1;
6127 next_offset += envelope_size;
6128 }
6129
6130 let next_out_of_line = decoder.next_out_of_line();
6131 let handles_before = decoder.remaining_handles();
6132 if let Some((inlined, num_bytes, num_handles)) =
6133 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6134 {
6135 let member_inline_size =
6136 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6137 if inlined != (member_inline_size <= 4) {
6138 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6139 }
6140 let inner_offset;
6141 let mut inner_depth = depth.clone();
6142 if inlined {
6143 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6144 inner_offset = next_offset;
6145 } else {
6146 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6147 inner_depth.increment()?;
6148 }
6149 let val_ref =
6150 self.max_unicast_solicitations.get_or_insert_with(|| fidl::new_empty!(u16, D));
6151 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6152 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6153 {
6154 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6155 }
6156 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6157 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6158 }
6159 }
6160
6161 next_offset += envelope_size;
6162 _next_ordinal_to_read += 1;
6163 if next_offset >= end_offset {
6164 return Ok(());
6165 }
6166
6167 while _next_ordinal_to_read < 3 {
6169 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6170 _next_ordinal_to_read += 1;
6171 next_offset += envelope_size;
6172 }
6173
6174 let next_out_of_line = decoder.next_out_of_line();
6175 let handles_before = decoder.remaining_handles();
6176 if let Some((inlined, num_bytes, num_handles)) =
6177 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6178 {
6179 let member_inline_size =
6180 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6181 if inlined != (member_inline_size <= 4) {
6182 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6183 }
6184 let inner_offset;
6185 let mut inner_depth = depth.clone();
6186 if inlined {
6187 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6188 inner_offset = next_offset;
6189 } else {
6190 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6191 inner_depth.increment()?;
6192 }
6193 let val_ref =
6194 self.base_reachable_time.get_or_insert_with(|| fidl::new_empty!(i64, D));
6195 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
6196 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6197 {
6198 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6199 }
6200 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6201 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6202 }
6203 }
6204
6205 next_offset += envelope_size;
6206 _next_ordinal_to_read += 1;
6207 if next_offset >= end_offset {
6208 return Ok(());
6209 }
6210
6211 while _next_ordinal_to_read < 4 {
6213 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6214 _next_ordinal_to_read += 1;
6215 next_offset += envelope_size;
6216 }
6217
6218 let next_out_of_line = decoder.next_out_of_line();
6219 let handles_before = decoder.remaining_handles();
6220 if let Some((inlined, num_bytes, num_handles)) =
6221 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6222 {
6223 let member_inline_size =
6224 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6225 if inlined != (member_inline_size <= 4) {
6226 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6227 }
6228 let inner_offset;
6229 let mut inner_depth = depth.clone();
6230 if inlined {
6231 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6232 inner_offset = next_offset;
6233 } else {
6234 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6235 inner_depth.increment()?;
6236 }
6237 let val_ref = self.retrans_timer.get_or_insert_with(|| fidl::new_empty!(i64, D));
6238 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
6239 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6240 {
6241 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6242 }
6243 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6244 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6245 }
6246 }
6247
6248 next_offset += envelope_size;
6249
6250 while next_offset < end_offset {
6252 _next_ordinal_to_read += 1;
6253 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6254 next_offset += envelope_size;
6255 }
6256
6257 Ok(())
6258 }
6259 }
6260
6261 impl RouteDiscoveryConfiguration {
6262 #[inline(always)]
6263 fn max_ordinal_present(&self) -> u64 {
6264 if let Some(_) = self.allow_default_route {
6265 return 1;
6266 }
6267 0
6268 }
6269 }
6270
6271 impl fidl::encoding::ValueTypeMarker for RouteDiscoveryConfiguration {
6272 type Borrowed<'a> = &'a Self;
6273 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6274 value
6275 }
6276 }
6277
6278 unsafe impl fidl::encoding::TypeMarker for RouteDiscoveryConfiguration {
6279 type Owned = Self;
6280
6281 #[inline(always)]
6282 fn inline_align(_context: fidl::encoding::Context) -> usize {
6283 8
6284 }
6285
6286 #[inline(always)]
6287 fn inline_size(_context: fidl::encoding::Context) -> usize {
6288 16
6289 }
6290 }
6291
6292 unsafe impl<D: fidl::encoding::ResourceDialect>
6293 fidl::encoding::Encode<RouteDiscoveryConfiguration, D> for &RouteDiscoveryConfiguration
6294 {
6295 unsafe fn encode(
6296 self,
6297 encoder: &mut fidl::encoding::Encoder<'_, D>,
6298 offset: usize,
6299 mut depth: fidl::encoding::Depth,
6300 ) -> fidl::Result<()> {
6301 encoder.debug_check_bounds::<RouteDiscoveryConfiguration>(offset);
6302 let max_ordinal: u64 = self.max_ordinal_present();
6304 encoder.write_num(max_ordinal, offset);
6305 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6306 if max_ordinal == 0 {
6308 return Ok(());
6309 }
6310 depth.increment()?;
6311 let envelope_size = 8;
6312 let bytes_len = max_ordinal as usize * envelope_size;
6313 #[allow(unused_variables)]
6314 let offset = encoder.out_of_line_offset(bytes_len);
6315 let mut _prev_end_offset: usize = 0;
6316 if 1 > max_ordinal {
6317 return Ok(());
6318 }
6319
6320 let cur_offset: usize = (1 - 1) * envelope_size;
6323
6324 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6326
6327 fidl::encoding::encode_in_envelope_optional::<bool, D>(
6332 self.allow_default_route
6333 .as_ref()
6334 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6335 encoder,
6336 offset + cur_offset,
6337 depth,
6338 )?;
6339
6340 _prev_end_offset = cur_offset + envelope_size;
6341
6342 Ok(())
6343 }
6344 }
6345
6346 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6347 for RouteDiscoveryConfiguration
6348 {
6349 #[inline(always)]
6350 fn new_empty() -> Self {
6351 Self::default()
6352 }
6353
6354 unsafe fn decode(
6355 &mut self,
6356 decoder: &mut fidl::encoding::Decoder<'_, D>,
6357 offset: usize,
6358 mut depth: fidl::encoding::Depth,
6359 ) -> fidl::Result<()> {
6360 decoder.debug_check_bounds::<Self>(offset);
6361 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6362 None => return Err(fidl::Error::NotNullable),
6363 Some(len) => len,
6364 };
6365 if len == 0 {
6367 return Ok(());
6368 };
6369 depth.increment()?;
6370 let envelope_size = 8;
6371 let bytes_len = len * envelope_size;
6372 let offset = decoder.out_of_line_offset(bytes_len)?;
6373 let mut _next_ordinal_to_read = 0;
6375 let mut next_offset = offset;
6376 let end_offset = offset + bytes_len;
6377 _next_ordinal_to_read += 1;
6378 if next_offset >= end_offset {
6379 return Ok(());
6380 }
6381
6382 while _next_ordinal_to_read < 1 {
6384 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6385 _next_ordinal_to_read += 1;
6386 next_offset += envelope_size;
6387 }
6388
6389 let next_out_of_line = decoder.next_out_of_line();
6390 let handles_before = decoder.remaining_handles();
6391 if let Some((inlined, num_bytes, num_handles)) =
6392 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6393 {
6394 let member_inline_size =
6395 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6396 if inlined != (member_inline_size <= 4) {
6397 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6398 }
6399 let inner_offset;
6400 let mut inner_depth = depth.clone();
6401 if inlined {
6402 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6403 inner_offset = next_offset;
6404 } else {
6405 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6406 inner_depth.increment()?;
6407 }
6408 let val_ref =
6409 self.allow_default_route.get_or_insert_with(|| fidl::new_empty!(bool, D));
6410 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6411 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6412 {
6413 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6414 }
6415 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6416 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6417 }
6418 }
6419
6420 next_offset += envelope_size;
6421
6422 while next_offset < end_offset {
6424 _next_ordinal_to_read += 1;
6425 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6426 next_offset += envelope_size;
6427 }
6428
6429 Ok(())
6430 }
6431 }
6432
6433 impl RouterSolicitationConfiguration {
6434 #[inline(always)]
6435 fn max_ordinal_present(&self) -> u64 {
6436 if let Some(_) = self.max {
6437 return 1;
6438 }
6439 0
6440 }
6441 }
6442
6443 impl fidl::encoding::ValueTypeMarker for RouterSolicitationConfiguration {
6444 type Borrowed<'a> = &'a Self;
6445 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6446 value
6447 }
6448 }
6449
6450 unsafe impl fidl::encoding::TypeMarker for RouterSolicitationConfiguration {
6451 type Owned = Self;
6452
6453 #[inline(always)]
6454 fn inline_align(_context: fidl::encoding::Context) -> usize {
6455 8
6456 }
6457
6458 #[inline(always)]
6459 fn inline_size(_context: fidl::encoding::Context) -> usize {
6460 16
6461 }
6462 }
6463
6464 unsafe impl<D: fidl::encoding::ResourceDialect>
6465 fidl::encoding::Encode<RouterSolicitationConfiguration, D>
6466 for &RouterSolicitationConfiguration
6467 {
6468 unsafe fn encode(
6469 self,
6470 encoder: &mut fidl::encoding::Encoder<'_, D>,
6471 offset: usize,
6472 mut depth: fidl::encoding::Depth,
6473 ) -> fidl::Result<()> {
6474 encoder.debug_check_bounds::<RouterSolicitationConfiguration>(offset);
6475 let max_ordinal: u64 = self.max_ordinal_present();
6477 encoder.write_num(max_ordinal, offset);
6478 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6479 if max_ordinal == 0 {
6481 return Ok(());
6482 }
6483 depth.increment()?;
6484 let envelope_size = 8;
6485 let bytes_len = max_ordinal as usize * envelope_size;
6486 #[allow(unused_variables)]
6487 let offset = encoder.out_of_line_offset(bytes_len);
6488 let mut _prev_end_offset: usize = 0;
6489 if 1 > max_ordinal {
6490 return Ok(());
6491 }
6492
6493 let cur_offset: usize = (1 - 1) * envelope_size;
6496
6497 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6499
6500 fidl::encoding::encode_in_envelope_optional::<u8, D>(
6505 self.max.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
6506 encoder,
6507 offset + cur_offset,
6508 depth,
6509 )?;
6510
6511 _prev_end_offset = cur_offset + envelope_size;
6512
6513 Ok(())
6514 }
6515 }
6516
6517 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6518 for RouterSolicitationConfiguration
6519 {
6520 #[inline(always)]
6521 fn new_empty() -> Self {
6522 Self::default()
6523 }
6524
6525 unsafe fn decode(
6526 &mut self,
6527 decoder: &mut fidl::encoding::Decoder<'_, D>,
6528 offset: usize,
6529 mut depth: fidl::encoding::Depth,
6530 ) -> fidl::Result<()> {
6531 decoder.debug_check_bounds::<Self>(offset);
6532 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6533 None => return Err(fidl::Error::NotNullable),
6534 Some(len) => len,
6535 };
6536 if len == 0 {
6538 return Ok(());
6539 };
6540 depth.increment()?;
6541 let envelope_size = 8;
6542 let bytes_len = len * envelope_size;
6543 let offset = decoder.out_of_line_offset(bytes_len)?;
6544 let mut _next_ordinal_to_read = 0;
6546 let mut next_offset = offset;
6547 let end_offset = offset + bytes_len;
6548 _next_ordinal_to_read += 1;
6549 if next_offset >= end_offset {
6550 return Ok(());
6551 }
6552
6553 while _next_ordinal_to_read < 1 {
6555 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6556 _next_ordinal_to_read += 1;
6557 next_offset += envelope_size;
6558 }
6559
6560 let next_out_of_line = decoder.next_out_of_line();
6561 let handles_before = decoder.remaining_handles();
6562 if let Some((inlined, num_bytes, num_handles)) =
6563 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6564 {
6565 let member_inline_size =
6566 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6567 if inlined != (member_inline_size <= 4) {
6568 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6569 }
6570 let inner_offset;
6571 let mut inner_depth = depth.clone();
6572 if inlined {
6573 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6574 inner_offset = next_offset;
6575 } else {
6576 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6577 inner_depth.increment()?;
6578 }
6579 let val_ref = self.max.get_or_insert_with(|| fidl::new_empty!(u8, D));
6580 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
6581 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6582 {
6583 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6584 }
6585 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6586 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6587 }
6588 }
6589
6590 next_offset += envelope_size;
6591
6592 while next_offset < end_offset {
6594 _next_ordinal_to_read += 1;
6595 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6596 next_offset += envelope_size;
6597 }
6598
6599 Ok(())
6600 }
6601 }
6602
6603 impl SlaacConfiguration {
6604 #[inline(always)]
6605 fn max_ordinal_present(&self) -> u64 {
6606 if let Some(_) = self.temporary_address {
6607 return 1;
6608 }
6609 0
6610 }
6611 }
6612
6613 impl fidl::encoding::ValueTypeMarker for SlaacConfiguration {
6614 type Borrowed<'a> = &'a Self;
6615 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6616 value
6617 }
6618 }
6619
6620 unsafe impl fidl::encoding::TypeMarker for SlaacConfiguration {
6621 type Owned = Self;
6622
6623 #[inline(always)]
6624 fn inline_align(_context: fidl::encoding::Context) -> usize {
6625 8
6626 }
6627
6628 #[inline(always)]
6629 fn inline_size(_context: fidl::encoding::Context) -> usize {
6630 16
6631 }
6632 }
6633
6634 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SlaacConfiguration, D>
6635 for &SlaacConfiguration
6636 {
6637 unsafe fn encode(
6638 self,
6639 encoder: &mut fidl::encoding::Encoder<'_, D>,
6640 offset: usize,
6641 mut depth: fidl::encoding::Depth,
6642 ) -> fidl::Result<()> {
6643 encoder.debug_check_bounds::<SlaacConfiguration>(offset);
6644 let max_ordinal: u64 = self.max_ordinal_present();
6646 encoder.write_num(max_ordinal, offset);
6647 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6648 if max_ordinal == 0 {
6650 return Ok(());
6651 }
6652 depth.increment()?;
6653 let envelope_size = 8;
6654 let bytes_len = max_ordinal as usize * envelope_size;
6655 #[allow(unused_variables)]
6656 let offset = encoder.out_of_line_offset(bytes_len);
6657 let mut _prev_end_offset: usize = 0;
6658 if 1 > max_ordinal {
6659 return Ok(());
6660 }
6661
6662 let cur_offset: usize = (1 - 1) * envelope_size;
6665
6666 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6668
6669 fidl::encoding::encode_in_envelope_optional::<bool, D>(
6674 self.temporary_address
6675 .as_ref()
6676 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6677 encoder,
6678 offset + cur_offset,
6679 depth,
6680 )?;
6681
6682 _prev_end_offset = cur_offset + envelope_size;
6683
6684 Ok(())
6685 }
6686 }
6687
6688 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SlaacConfiguration {
6689 #[inline(always)]
6690 fn new_empty() -> Self {
6691 Self::default()
6692 }
6693
6694 unsafe fn decode(
6695 &mut self,
6696 decoder: &mut fidl::encoding::Decoder<'_, D>,
6697 offset: usize,
6698 mut depth: fidl::encoding::Depth,
6699 ) -> fidl::Result<()> {
6700 decoder.debug_check_bounds::<Self>(offset);
6701 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6702 None => return Err(fidl::Error::NotNullable),
6703 Some(len) => len,
6704 };
6705 if len == 0 {
6707 return Ok(());
6708 };
6709 depth.increment()?;
6710 let envelope_size = 8;
6711 let bytes_len = len * envelope_size;
6712 let offset = decoder.out_of_line_offset(bytes_len)?;
6713 let mut _next_ordinal_to_read = 0;
6715 let mut next_offset = offset;
6716 let end_offset = offset + bytes_len;
6717 _next_ordinal_to_read += 1;
6718 if next_offset >= end_offset {
6719 return Ok(());
6720 }
6721
6722 while _next_ordinal_to_read < 1 {
6724 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6725 _next_ordinal_to_read += 1;
6726 next_offset += envelope_size;
6727 }
6728
6729 let next_out_of_line = decoder.next_out_of_line();
6730 let handles_before = decoder.remaining_handles();
6731 if let Some((inlined, num_bytes, num_handles)) =
6732 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6733 {
6734 let member_inline_size =
6735 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6736 if inlined != (member_inline_size <= 4) {
6737 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6738 }
6739 let inner_offset;
6740 let mut inner_depth = depth.clone();
6741 if inlined {
6742 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6743 inner_offset = next_offset;
6744 } else {
6745 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6746 inner_depth.increment()?;
6747 }
6748 let val_ref =
6749 self.temporary_address.get_or_insert_with(|| fidl::new_empty!(bool, D));
6750 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6751 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6752 {
6753 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6754 }
6755 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6756 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6757 }
6758 }
6759
6760 next_offset += envelope_size;
6761
6762 while next_offset < end_offset {
6764 _next_ordinal_to_read += 1;
6765 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6766 next_offset += envelope_size;
6767 }
6768
6769 Ok(())
6770 }
6771 }
6772}