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 #[doc(hidden)]
881 pub __source_breaking: fidl::marker::SourceBreaking,
882}
883
884impl fidl::Persistable for Ipv4Configuration {}
885
886#[derive(Clone, Debug, Default, PartialEq)]
887pub struct Ipv6Configuration {
888 pub unicast_forwarding: Option<bool>,
891 pub multicast_forwarding: Option<bool>,
893 pub mld: Option<MldConfiguration>,
895 pub ndp: Option<NdpConfiguration>,
897 #[doc(hidden)]
898 pub __source_breaking: fidl::marker::SourceBreaking,
899}
900
901impl fidl::Persistable for Ipv6Configuration {}
902
903#[derive(Clone, Debug, Default, PartialEq)]
904pub struct MldConfiguration {
905 pub version: Option<MldVersion>,
911 #[doc(hidden)]
912 pub __source_breaking: fidl::marker::SourceBreaking,
913}
914
915impl fidl::Persistable for MldConfiguration {}
916
917#[derive(Clone, Debug, Default, PartialEq)]
918pub struct NdpConfiguration {
919 pub nud: Option<NudConfiguration>,
921 pub dad: Option<DadConfiguration>,
923 pub slaac: Option<SlaacConfiguration>,
925 #[doc(hidden)]
926 pub __source_breaking: fidl::marker::SourceBreaking,
927}
928
929impl fidl::Persistable for NdpConfiguration {}
930
931#[derive(Clone, Debug, Default, PartialEq)]
935pub struct NudConfiguration {
936 pub max_multicast_solicitations: Option<u16>,
942 pub max_unicast_solicitations: Option<u16>,
947 pub base_reachable_time: Option<i64>,
957 #[doc(hidden)]
958 pub __source_breaking: fidl::marker::SourceBreaking,
959}
960
961impl fidl::Persistable for NudConfiguration {}
962
963#[derive(Clone, Debug, Default, PartialEq)]
964pub struct SlaacConfiguration {
965 pub temporary_address: Option<bool>,
974 #[doc(hidden)]
975 pub __source_breaking: fidl::marker::SourceBreaking,
976}
977
978impl fidl::Persistable for SlaacConfiguration {}
979
980pub mod address_state_provider_ordinals {
981 pub const UPDATE_ADDRESS_PROPERTIES: u64 = 0x52bdf5ed96ef573c;
982 pub const WATCH_ADDRESS_ASSIGNMENT_STATE: u64 = 0x740bb58c1b2d3188;
983 pub const DETACH: u64 = 0xc752381d739622f;
984 pub const REMOVE: u64 = 0x554407fe183e78ad;
985 pub const ON_ADDRESS_ADDED: u64 = 0x624f6ea62cce189e;
986 pub const ON_ADDRESS_REMOVED: u64 = 0x2480eb672ffd5962;
987}
988
989pub mod control_ordinals {
990 pub const ADD_ADDRESS: u64 = 0x1349d36da453ce;
991 pub const REMOVE_ADDRESS: u64 = 0x213ba73da997a620;
992 pub const GET_ID: u64 = 0x2a2459768d9ecc6f;
993 pub const SET_CONFIGURATION: u64 = 0x573923b7b4bde27f;
994 pub const GET_CONFIGURATION: u64 = 0x5f5d239820bdcc65;
995 pub const ENABLE: u64 = 0x15c983d3a8ac0b98;
996 pub const DISABLE: u64 = 0x98d3a585d905473;
997 pub const DETACH: u64 = 0x78ee27518b2dbfa;
998 pub const GET_AUTHORIZATION_FOR_INTERFACE: u64 = 0xc1de2ab60b5cb9e;
999 pub const REMOVE: u64 = 0x13aab8bbecc7ff0b;
1000 pub const ON_INTERFACE_REMOVED: u64 = 0x800d39e76c1cddd;
1001}
1002
1003pub mod device_control_ordinals {
1004 pub const CREATE_INTERFACE: u64 = 0x4ff8be7351d12f86;
1005 pub const DETACH: u64 = 0x57489f1554d489d2;
1006}
1007
1008pub mod installer_ordinals {
1009 pub const INSTALL_DEVICE: u64 = 0x3e84524dcecab23a;
1010 pub const INSTALL_BLACKHOLE_INTERFACE: u64 = 0x2ce57e87cdbcb809;
1011}
1012
1013mod internal {
1014 use super::*;
1015 unsafe impl fidl::encoding::TypeMarker for AddressRemovalReason {
1016 type Owned = Self;
1017
1018 #[inline(always)]
1019 fn inline_align(_context: fidl::encoding::Context) -> usize {
1020 std::mem::align_of::<u32>()
1021 }
1022
1023 #[inline(always)]
1024 fn inline_size(_context: fidl::encoding::Context) -> usize {
1025 std::mem::size_of::<u32>()
1026 }
1027
1028 #[inline(always)]
1029 fn encode_is_copy() -> bool {
1030 true
1031 }
1032
1033 #[inline(always)]
1034 fn decode_is_copy() -> bool {
1035 false
1036 }
1037 }
1038
1039 impl fidl::encoding::ValueTypeMarker for AddressRemovalReason {
1040 type Borrowed<'a> = Self;
1041 #[inline(always)]
1042 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1043 *value
1044 }
1045 }
1046
1047 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1048 for AddressRemovalReason
1049 {
1050 #[inline]
1051 unsafe fn encode(
1052 self,
1053 encoder: &mut fidl::encoding::Encoder<'_, D>,
1054 offset: usize,
1055 _depth: fidl::encoding::Depth,
1056 ) -> fidl::Result<()> {
1057 encoder.debug_check_bounds::<Self>(offset);
1058 encoder.write_num(self.into_primitive(), offset);
1059 Ok(())
1060 }
1061 }
1062
1063 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AddressRemovalReason {
1064 #[inline(always)]
1065 fn new_empty() -> Self {
1066 Self::Invalid
1067 }
1068
1069 #[inline]
1070 unsafe fn decode(
1071 &mut self,
1072 decoder: &mut fidl::encoding::Decoder<'_, D>,
1073 offset: usize,
1074 _depth: fidl::encoding::Depth,
1075 ) -> fidl::Result<()> {
1076 decoder.debug_check_bounds::<Self>(offset);
1077 let prim = decoder.read_num::<u32>(offset);
1078
1079 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1080 Ok(())
1081 }
1082 }
1083 unsafe impl fidl::encoding::TypeMarker for ControlDisableError {
1084 type Owned = Self;
1085
1086 #[inline(always)]
1087 fn inline_align(_context: fidl::encoding::Context) -> usize {
1088 std::mem::align_of::<u32>()
1089 }
1090
1091 #[inline(always)]
1092 fn inline_size(_context: fidl::encoding::Context) -> usize {
1093 std::mem::size_of::<u32>()
1094 }
1095
1096 #[inline(always)]
1097 fn encode_is_copy() -> bool {
1098 false
1099 }
1100
1101 #[inline(always)]
1102 fn decode_is_copy() -> bool {
1103 false
1104 }
1105 }
1106
1107 impl fidl::encoding::ValueTypeMarker for ControlDisableError {
1108 type Borrowed<'a> = Self;
1109 #[inline(always)]
1110 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1111 *value
1112 }
1113 }
1114
1115 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1116 for ControlDisableError
1117 {
1118 #[inline]
1119 unsafe fn encode(
1120 self,
1121 encoder: &mut fidl::encoding::Encoder<'_, D>,
1122 offset: usize,
1123 _depth: fidl::encoding::Depth,
1124 ) -> fidl::Result<()> {
1125 encoder.debug_check_bounds::<Self>(offset);
1126 encoder.write_num(self.into_primitive(), offset);
1127 Ok(())
1128 }
1129 }
1130
1131 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlDisableError {
1132 #[inline(always)]
1133 fn new_empty() -> Self {
1134 Self::unknown()
1135 }
1136
1137 #[inline]
1138 unsafe fn decode(
1139 &mut self,
1140 decoder: &mut fidl::encoding::Decoder<'_, D>,
1141 offset: usize,
1142 _depth: fidl::encoding::Depth,
1143 ) -> fidl::Result<()> {
1144 decoder.debug_check_bounds::<Self>(offset);
1145 let prim = decoder.read_num::<u32>(offset);
1146
1147 *self = Self::from_primitive_allow_unknown(prim);
1148 Ok(())
1149 }
1150 }
1151 unsafe impl fidl::encoding::TypeMarker for ControlEnableError {
1152 type Owned = Self;
1153
1154 #[inline(always)]
1155 fn inline_align(_context: fidl::encoding::Context) -> usize {
1156 std::mem::align_of::<u32>()
1157 }
1158
1159 #[inline(always)]
1160 fn inline_size(_context: fidl::encoding::Context) -> usize {
1161 std::mem::size_of::<u32>()
1162 }
1163
1164 #[inline(always)]
1165 fn encode_is_copy() -> bool {
1166 false
1167 }
1168
1169 #[inline(always)]
1170 fn decode_is_copy() -> bool {
1171 false
1172 }
1173 }
1174
1175 impl fidl::encoding::ValueTypeMarker for ControlEnableError {
1176 type Borrowed<'a> = Self;
1177 #[inline(always)]
1178 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1179 *value
1180 }
1181 }
1182
1183 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1184 for ControlEnableError
1185 {
1186 #[inline]
1187 unsafe fn encode(
1188 self,
1189 encoder: &mut fidl::encoding::Encoder<'_, D>,
1190 offset: usize,
1191 _depth: fidl::encoding::Depth,
1192 ) -> fidl::Result<()> {
1193 encoder.debug_check_bounds::<Self>(offset);
1194 encoder.write_num(self.into_primitive(), offset);
1195 Ok(())
1196 }
1197 }
1198
1199 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlEnableError {
1200 #[inline(always)]
1201 fn new_empty() -> Self {
1202 Self::unknown()
1203 }
1204
1205 #[inline]
1206 unsafe fn decode(
1207 &mut self,
1208 decoder: &mut fidl::encoding::Decoder<'_, D>,
1209 offset: usize,
1210 _depth: fidl::encoding::Depth,
1211 ) -> fidl::Result<()> {
1212 decoder.debug_check_bounds::<Self>(offset);
1213 let prim = decoder.read_num::<u32>(offset);
1214
1215 *self = Self::from_primitive_allow_unknown(prim);
1216 Ok(())
1217 }
1218 }
1219 unsafe impl fidl::encoding::TypeMarker for ControlGetConfigurationError {
1220 type Owned = Self;
1221
1222 #[inline(always)]
1223 fn inline_align(_context: fidl::encoding::Context) -> usize {
1224 std::mem::align_of::<u32>()
1225 }
1226
1227 #[inline(always)]
1228 fn inline_size(_context: fidl::encoding::Context) -> usize {
1229 std::mem::size_of::<u32>()
1230 }
1231
1232 #[inline(always)]
1233 fn encode_is_copy() -> bool {
1234 false
1235 }
1236
1237 #[inline(always)]
1238 fn decode_is_copy() -> bool {
1239 false
1240 }
1241 }
1242
1243 impl fidl::encoding::ValueTypeMarker for ControlGetConfigurationError {
1244 type Borrowed<'a> = Self;
1245 #[inline(always)]
1246 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1247 *value
1248 }
1249 }
1250
1251 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1252 for ControlGetConfigurationError
1253 {
1254 #[inline]
1255 unsafe fn encode(
1256 self,
1257 encoder: &mut fidl::encoding::Encoder<'_, D>,
1258 offset: usize,
1259 _depth: fidl::encoding::Depth,
1260 ) -> fidl::Result<()> {
1261 encoder.debug_check_bounds::<Self>(offset);
1262 encoder.write_num(self.into_primitive(), offset);
1263 Ok(())
1264 }
1265 }
1266
1267 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1268 for ControlGetConfigurationError
1269 {
1270 #[inline(always)]
1271 fn new_empty() -> Self {
1272 Self::unknown()
1273 }
1274
1275 #[inline]
1276 unsafe fn decode(
1277 &mut self,
1278 decoder: &mut fidl::encoding::Decoder<'_, D>,
1279 offset: usize,
1280 _depth: fidl::encoding::Depth,
1281 ) -> fidl::Result<()> {
1282 decoder.debug_check_bounds::<Self>(offset);
1283 let prim = decoder.read_num::<u32>(offset);
1284
1285 *self = Self::from_primitive_allow_unknown(prim);
1286 Ok(())
1287 }
1288 }
1289 unsafe impl fidl::encoding::TypeMarker for ControlRemoveAddressError {
1290 type Owned = Self;
1291
1292 #[inline(always)]
1293 fn inline_align(_context: fidl::encoding::Context) -> usize {
1294 std::mem::align_of::<u32>()
1295 }
1296
1297 #[inline(always)]
1298 fn inline_size(_context: fidl::encoding::Context) -> usize {
1299 std::mem::size_of::<u32>()
1300 }
1301
1302 #[inline(always)]
1303 fn encode_is_copy() -> bool {
1304 false
1305 }
1306
1307 #[inline(always)]
1308 fn decode_is_copy() -> bool {
1309 false
1310 }
1311 }
1312
1313 impl fidl::encoding::ValueTypeMarker for ControlRemoveAddressError {
1314 type Borrowed<'a> = Self;
1315 #[inline(always)]
1316 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1317 *value
1318 }
1319 }
1320
1321 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1322 for ControlRemoveAddressError
1323 {
1324 #[inline]
1325 unsafe fn encode(
1326 self,
1327 encoder: &mut fidl::encoding::Encoder<'_, D>,
1328 offset: usize,
1329 _depth: fidl::encoding::Depth,
1330 ) -> fidl::Result<()> {
1331 encoder.debug_check_bounds::<Self>(offset);
1332 encoder.write_num(self.into_primitive(), offset);
1333 Ok(())
1334 }
1335 }
1336
1337 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1338 for ControlRemoveAddressError
1339 {
1340 #[inline(always)]
1341 fn new_empty() -> Self {
1342 Self::unknown()
1343 }
1344
1345 #[inline]
1346 unsafe fn decode(
1347 &mut self,
1348 decoder: &mut fidl::encoding::Decoder<'_, D>,
1349 offset: usize,
1350 _depth: fidl::encoding::Depth,
1351 ) -> fidl::Result<()> {
1352 decoder.debug_check_bounds::<Self>(offset);
1353 let prim = decoder.read_num::<u32>(offset);
1354
1355 *self = Self::from_primitive_allow_unknown(prim);
1356 Ok(())
1357 }
1358 }
1359 unsafe impl fidl::encoding::TypeMarker for ControlRemoveError {
1360 type Owned = Self;
1361
1362 #[inline(always)]
1363 fn inline_align(_context: fidl::encoding::Context) -> usize {
1364 std::mem::align_of::<u32>()
1365 }
1366
1367 #[inline(always)]
1368 fn inline_size(_context: fidl::encoding::Context) -> usize {
1369 std::mem::size_of::<u32>()
1370 }
1371
1372 #[inline(always)]
1373 fn encode_is_copy() -> bool {
1374 false
1375 }
1376
1377 #[inline(always)]
1378 fn decode_is_copy() -> bool {
1379 false
1380 }
1381 }
1382
1383 impl fidl::encoding::ValueTypeMarker for ControlRemoveError {
1384 type Borrowed<'a> = Self;
1385 #[inline(always)]
1386 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1387 *value
1388 }
1389 }
1390
1391 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1392 for ControlRemoveError
1393 {
1394 #[inline]
1395 unsafe fn encode(
1396 self,
1397 encoder: &mut fidl::encoding::Encoder<'_, D>,
1398 offset: usize,
1399 _depth: fidl::encoding::Depth,
1400 ) -> fidl::Result<()> {
1401 encoder.debug_check_bounds::<Self>(offset);
1402 encoder.write_num(self.into_primitive(), offset);
1403 Ok(())
1404 }
1405 }
1406
1407 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlRemoveError {
1408 #[inline(always)]
1409 fn new_empty() -> Self {
1410 Self::unknown()
1411 }
1412
1413 #[inline]
1414 unsafe fn decode(
1415 &mut self,
1416 decoder: &mut fidl::encoding::Decoder<'_, D>,
1417 offset: usize,
1418 _depth: fidl::encoding::Depth,
1419 ) -> fidl::Result<()> {
1420 decoder.debug_check_bounds::<Self>(offset);
1421 let prim = decoder.read_num::<u32>(offset);
1422
1423 *self = Self::from_primitive_allow_unknown(prim);
1424 Ok(())
1425 }
1426 }
1427 unsafe impl fidl::encoding::TypeMarker for ControlSetConfigurationError {
1428 type Owned = Self;
1429
1430 #[inline(always)]
1431 fn inline_align(_context: fidl::encoding::Context) -> usize {
1432 std::mem::align_of::<u32>()
1433 }
1434
1435 #[inline(always)]
1436 fn inline_size(_context: fidl::encoding::Context) -> usize {
1437 std::mem::size_of::<u32>()
1438 }
1439
1440 #[inline(always)]
1441 fn encode_is_copy() -> bool {
1442 false
1443 }
1444
1445 #[inline(always)]
1446 fn decode_is_copy() -> bool {
1447 false
1448 }
1449 }
1450
1451 impl fidl::encoding::ValueTypeMarker for ControlSetConfigurationError {
1452 type Borrowed<'a> = Self;
1453 #[inline(always)]
1454 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1455 *value
1456 }
1457 }
1458
1459 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1460 for ControlSetConfigurationError
1461 {
1462 #[inline]
1463 unsafe fn encode(
1464 self,
1465 encoder: &mut fidl::encoding::Encoder<'_, D>,
1466 offset: usize,
1467 _depth: fidl::encoding::Depth,
1468 ) -> fidl::Result<()> {
1469 encoder.debug_check_bounds::<Self>(offset);
1470 encoder.write_num(self.into_primitive(), offset);
1471 Ok(())
1472 }
1473 }
1474
1475 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1476 for ControlSetConfigurationError
1477 {
1478 #[inline(always)]
1479 fn new_empty() -> Self {
1480 Self::unknown()
1481 }
1482
1483 #[inline]
1484 unsafe fn decode(
1485 &mut self,
1486 decoder: &mut fidl::encoding::Decoder<'_, D>,
1487 offset: usize,
1488 _depth: fidl::encoding::Depth,
1489 ) -> fidl::Result<()> {
1490 decoder.debug_check_bounds::<Self>(offset);
1491 let prim = decoder.read_num::<u32>(offset);
1492
1493 *self = Self::from_primitive_allow_unknown(prim);
1494 Ok(())
1495 }
1496 }
1497 unsafe impl fidl::encoding::TypeMarker for IgmpVersion {
1498 type Owned = Self;
1499
1500 #[inline(always)]
1501 fn inline_align(_context: fidl::encoding::Context) -> usize {
1502 std::mem::align_of::<u8>()
1503 }
1504
1505 #[inline(always)]
1506 fn inline_size(_context: fidl::encoding::Context) -> usize {
1507 std::mem::size_of::<u8>()
1508 }
1509
1510 #[inline(always)]
1511 fn encode_is_copy() -> bool {
1512 false
1513 }
1514
1515 #[inline(always)]
1516 fn decode_is_copy() -> bool {
1517 false
1518 }
1519 }
1520
1521 impl fidl::encoding::ValueTypeMarker for IgmpVersion {
1522 type Borrowed<'a> = Self;
1523 #[inline(always)]
1524 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1525 *value
1526 }
1527 }
1528
1529 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for IgmpVersion {
1530 #[inline]
1531 unsafe fn encode(
1532 self,
1533 encoder: &mut fidl::encoding::Encoder<'_, D>,
1534 offset: usize,
1535 _depth: fidl::encoding::Depth,
1536 ) -> fidl::Result<()> {
1537 encoder.debug_check_bounds::<Self>(offset);
1538 encoder.write_num(self.into_primitive(), offset);
1539 Ok(())
1540 }
1541 }
1542
1543 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IgmpVersion {
1544 #[inline(always)]
1545 fn new_empty() -> Self {
1546 Self::unknown()
1547 }
1548
1549 #[inline]
1550 unsafe fn decode(
1551 &mut self,
1552 decoder: &mut fidl::encoding::Decoder<'_, D>,
1553 offset: usize,
1554 _depth: fidl::encoding::Depth,
1555 ) -> fidl::Result<()> {
1556 decoder.debug_check_bounds::<Self>(offset);
1557 let prim = decoder.read_num::<u8>(offset);
1558
1559 *self = Self::from_primitive_allow_unknown(prim);
1560 Ok(())
1561 }
1562 }
1563 unsafe impl fidl::encoding::TypeMarker for InterfaceRemovedReason {
1564 type Owned = Self;
1565
1566 #[inline(always)]
1567 fn inline_align(_context: fidl::encoding::Context) -> usize {
1568 std::mem::align_of::<u32>()
1569 }
1570
1571 #[inline(always)]
1572 fn inline_size(_context: fidl::encoding::Context) -> usize {
1573 std::mem::size_of::<u32>()
1574 }
1575
1576 #[inline(always)]
1577 fn encode_is_copy() -> bool {
1578 false
1579 }
1580
1581 #[inline(always)]
1582 fn decode_is_copy() -> bool {
1583 false
1584 }
1585 }
1586
1587 impl fidl::encoding::ValueTypeMarker for InterfaceRemovedReason {
1588 type Borrowed<'a> = Self;
1589 #[inline(always)]
1590 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1591 *value
1592 }
1593 }
1594
1595 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1596 for InterfaceRemovedReason
1597 {
1598 #[inline]
1599 unsafe fn encode(
1600 self,
1601 encoder: &mut fidl::encoding::Encoder<'_, D>,
1602 offset: usize,
1603 _depth: fidl::encoding::Depth,
1604 ) -> fidl::Result<()> {
1605 encoder.debug_check_bounds::<Self>(offset);
1606 encoder.write_num(self.into_primitive(), offset);
1607 Ok(())
1608 }
1609 }
1610
1611 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1612 for InterfaceRemovedReason
1613 {
1614 #[inline(always)]
1615 fn new_empty() -> Self {
1616 Self::unknown()
1617 }
1618
1619 #[inline]
1620 unsafe fn decode(
1621 &mut self,
1622 decoder: &mut fidl::encoding::Decoder<'_, D>,
1623 offset: usize,
1624 _depth: fidl::encoding::Depth,
1625 ) -> fidl::Result<()> {
1626 decoder.debug_check_bounds::<Self>(offset);
1627 let prim = decoder.read_num::<u32>(offset);
1628
1629 *self = Self::from_primitive_allow_unknown(prim);
1630 Ok(())
1631 }
1632 }
1633 unsafe impl fidl::encoding::TypeMarker for MldVersion {
1634 type Owned = Self;
1635
1636 #[inline(always)]
1637 fn inline_align(_context: fidl::encoding::Context) -> usize {
1638 std::mem::align_of::<u8>()
1639 }
1640
1641 #[inline(always)]
1642 fn inline_size(_context: fidl::encoding::Context) -> usize {
1643 std::mem::size_of::<u8>()
1644 }
1645
1646 #[inline(always)]
1647 fn encode_is_copy() -> bool {
1648 false
1649 }
1650
1651 #[inline(always)]
1652 fn decode_is_copy() -> bool {
1653 false
1654 }
1655 }
1656
1657 impl fidl::encoding::ValueTypeMarker for MldVersion {
1658 type Borrowed<'a> = Self;
1659 #[inline(always)]
1660 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1661 *value
1662 }
1663 }
1664
1665 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for MldVersion {
1666 #[inline]
1667 unsafe fn encode(
1668 self,
1669 encoder: &mut fidl::encoding::Encoder<'_, D>,
1670 offset: usize,
1671 _depth: fidl::encoding::Depth,
1672 ) -> fidl::Result<()> {
1673 encoder.debug_check_bounds::<Self>(offset);
1674 encoder.write_num(self.into_primitive(), offset);
1675 Ok(())
1676 }
1677 }
1678
1679 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MldVersion {
1680 #[inline(always)]
1681 fn new_empty() -> Self {
1682 Self::unknown()
1683 }
1684
1685 #[inline]
1686 unsafe fn decode(
1687 &mut self,
1688 decoder: &mut fidl::encoding::Decoder<'_, D>,
1689 offset: usize,
1690 _depth: fidl::encoding::Depth,
1691 ) -> fidl::Result<()> {
1692 decoder.debug_check_bounds::<Self>(offset);
1693 let prim = decoder.read_num::<u8>(offset);
1694
1695 *self = Self::from_primitive_allow_unknown(prim);
1696 Ok(())
1697 }
1698 }
1699
1700 impl fidl::encoding::ValueTypeMarker for AddressStateProviderOnAddressRemovedRequest {
1701 type Borrowed<'a> = &'a Self;
1702 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1703 value
1704 }
1705 }
1706
1707 unsafe impl fidl::encoding::TypeMarker for AddressStateProviderOnAddressRemovedRequest {
1708 type Owned = Self;
1709
1710 #[inline(always)]
1711 fn inline_align(_context: fidl::encoding::Context) -> usize {
1712 4
1713 }
1714
1715 #[inline(always)]
1716 fn inline_size(_context: fidl::encoding::Context) -> usize {
1717 4
1718 }
1719 }
1720
1721 unsafe impl<D: fidl::encoding::ResourceDialect>
1722 fidl::encoding::Encode<AddressStateProviderOnAddressRemovedRequest, D>
1723 for &AddressStateProviderOnAddressRemovedRequest
1724 {
1725 #[inline]
1726 unsafe fn encode(
1727 self,
1728 encoder: &mut fidl::encoding::Encoder<'_, D>,
1729 offset: usize,
1730 _depth: fidl::encoding::Depth,
1731 ) -> fidl::Result<()> {
1732 encoder.debug_check_bounds::<AddressStateProviderOnAddressRemovedRequest>(offset);
1733 fidl::encoding::Encode::<AddressStateProviderOnAddressRemovedRequest, D>::encode(
1735 (<AddressRemovalReason as fidl::encoding::ValueTypeMarker>::borrow(&self.error),),
1736 encoder,
1737 offset,
1738 _depth,
1739 )
1740 }
1741 }
1742 unsafe impl<
1743 D: fidl::encoding::ResourceDialect,
1744 T0: fidl::encoding::Encode<AddressRemovalReason, D>,
1745 > fidl::encoding::Encode<AddressStateProviderOnAddressRemovedRequest, D> for (T0,)
1746 {
1747 #[inline]
1748 unsafe fn encode(
1749 self,
1750 encoder: &mut fidl::encoding::Encoder<'_, D>,
1751 offset: usize,
1752 depth: fidl::encoding::Depth,
1753 ) -> fidl::Result<()> {
1754 encoder.debug_check_bounds::<AddressStateProviderOnAddressRemovedRequest>(offset);
1755 self.0.encode(encoder, offset + 0, depth)?;
1759 Ok(())
1760 }
1761 }
1762
1763 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1764 for AddressStateProviderOnAddressRemovedRequest
1765 {
1766 #[inline(always)]
1767 fn new_empty() -> Self {
1768 Self { error: fidl::new_empty!(AddressRemovalReason, D) }
1769 }
1770
1771 #[inline]
1772 unsafe fn decode(
1773 &mut self,
1774 decoder: &mut fidl::encoding::Decoder<'_, D>,
1775 offset: usize,
1776 _depth: fidl::encoding::Depth,
1777 ) -> fidl::Result<()> {
1778 decoder.debug_check_bounds::<Self>(offset);
1779 fidl::decode!(AddressRemovalReason, D, &mut self.error, decoder, offset + 0, _depth)?;
1781 Ok(())
1782 }
1783 }
1784
1785 impl fidl::encoding::ValueTypeMarker for AddressStateProviderUpdateAddressPropertiesRequest {
1786 type Borrowed<'a> = &'a Self;
1787 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1788 value
1789 }
1790 }
1791
1792 unsafe impl fidl::encoding::TypeMarker for AddressStateProviderUpdateAddressPropertiesRequest {
1793 type Owned = Self;
1794
1795 #[inline(always)]
1796 fn inline_align(_context: fidl::encoding::Context) -> usize {
1797 8
1798 }
1799
1800 #[inline(always)]
1801 fn inline_size(_context: fidl::encoding::Context) -> usize {
1802 16
1803 }
1804 }
1805
1806 unsafe impl<D: fidl::encoding::ResourceDialect>
1807 fidl::encoding::Encode<AddressStateProviderUpdateAddressPropertiesRequest, D>
1808 for &AddressStateProviderUpdateAddressPropertiesRequest
1809 {
1810 #[inline]
1811 unsafe fn encode(
1812 self,
1813 encoder: &mut fidl::encoding::Encoder<'_, D>,
1814 offset: usize,
1815 _depth: fidl::encoding::Depth,
1816 ) -> fidl::Result<()> {
1817 encoder
1818 .debug_check_bounds::<AddressStateProviderUpdateAddressPropertiesRequest>(offset);
1819 fidl::encoding::Encode::<AddressStateProviderUpdateAddressPropertiesRequest, D>::encode(
1821 (<AddressProperties as fidl::encoding::ValueTypeMarker>::borrow(
1822 &self.address_properties,
1823 ),),
1824 encoder,
1825 offset,
1826 _depth,
1827 )
1828 }
1829 }
1830 unsafe impl<
1831 D: fidl::encoding::ResourceDialect,
1832 T0: fidl::encoding::Encode<AddressProperties, D>,
1833 > fidl::encoding::Encode<AddressStateProviderUpdateAddressPropertiesRequest, D> for (T0,)
1834 {
1835 #[inline]
1836 unsafe fn encode(
1837 self,
1838 encoder: &mut fidl::encoding::Encoder<'_, D>,
1839 offset: usize,
1840 depth: fidl::encoding::Depth,
1841 ) -> fidl::Result<()> {
1842 encoder
1843 .debug_check_bounds::<AddressStateProviderUpdateAddressPropertiesRequest>(offset);
1844 self.0.encode(encoder, offset + 0, depth)?;
1848 Ok(())
1849 }
1850 }
1851
1852 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1853 for AddressStateProviderUpdateAddressPropertiesRequest
1854 {
1855 #[inline(always)]
1856 fn new_empty() -> Self {
1857 Self { address_properties: fidl::new_empty!(AddressProperties, D) }
1858 }
1859
1860 #[inline]
1861 unsafe fn decode(
1862 &mut self,
1863 decoder: &mut fidl::encoding::Decoder<'_, D>,
1864 offset: usize,
1865 _depth: fidl::encoding::Depth,
1866 ) -> fidl::Result<()> {
1867 decoder.debug_check_bounds::<Self>(offset);
1868 fidl::decode!(
1870 AddressProperties,
1871 D,
1872 &mut self.address_properties,
1873 decoder,
1874 offset + 0,
1875 _depth
1876 )?;
1877 Ok(())
1878 }
1879 }
1880
1881 impl fidl::encoding::ValueTypeMarker for AddressStateProviderWatchAddressAssignmentStateResponse {
1882 type Borrowed<'a> = &'a Self;
1883 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1884 value
1885 }
1886 }
1887
1888 unsafe impl fidl::encoding::TypeMarker for AddressStateProviderWatchAddressAssignmentStateResponse {
1889 type Owned = Self;
1890
1891 #[inline(always)]
1892 fn inline_align(_context: fidl::encoding::Context) -> usize {
1893 4
1894 }
1895
1896 #[inline(always)]
1897 fn inline_size(_context: fidl::encoding::Context) -> usize {
1898 4
1899 }
1900 }
1901
1902 unsafe impl<D: fidl::encoding::ResourceDialect>
1903 fidl::encoding::Encode<AddressStateProviderWatchAddressAssignmentStateResponse, D>
1904 for &AddressStateProviderWatchAddressAssignmentStateResponse
1905 {
1906 #[inline]
1907 unsafe fn encode(
1908 self,
1909 encoder: &mut fidl::encoding::Encoder<'_, D>,
1910 offset: usize,
1911 _depth: fidl::encoding::Depth,
1912 ) -> fidl::Result<()> {
1913 encoder.debug_check_bounds::<AddressStateProviderWatchAddressAssignmentStateResponse>(
1914 offset,
1915 );
1916 fidl::encoding::Encode::<AddressStateProviderWatchAddressAssignmentStateResponse, D>::encode(
1918 (
1919 <fidl_fuchsia_net_interfaces__common::AddressAssignmentState as fidl::encoding::ValueTypeMarker>::borrow(&self.assignment_state),
1920 ),
1921 encoder, offset, _depth
1922 )
1923 }
1924 }
1925 unsafe impl<
1926 D: fidl::encoding::ResourceDialect,
1927 T0: fidl::encoding::Encode<fidl_fuchsia_net_interfaces__common::AddressAssignmentState, D>,
1928 > fidl::encoding::Encode<AddressStateProviderWatchAddressAssignmentStateResponse, D> for (T0,)
1929 {
1930 #[inline]
1931 unsafe fn encode(
1932 self,
1933 encoder: &mut fidl::encoding::Encoder<'_, D>,
1934 offset: usize,
1935 depth: fidl::encoding::Depth,
1936 ) -> fidl::Result<()> {
1937 encoder.debug_check_bounds::<AddressStateProviderWatchAddressAssignmentStateResponse>(
1938 offset,
1939 );
1940 self.0.encode(encoder, offset + 0, depth)?;
1944 Ok(())
1945 }
1946 }
1947
1948 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1949 for AddressStateProviderWatchAddressAssignmentStateResponse
1950 {
1951 #[inline(always)]
1952 fn new_empty() -> Self {
1953 Self {
1954 assignment_state: fidl::new_empty!(
1955 fidl_fuchsia_net_interfaces__common::AddressAssignmentState,
1956 D
1957 ),
1958 }
1959 }
1960
1961 #[inline]
1962 unsafe fn decode(
1963 &mut self,
1964 decoder: &mut fidl::encoding::Decoder<'_, D>,
1965 offset: usize,
1966 _depth: fidl::encoding::Depth,
1967 ) -> fidl::Result<()> {
1968 decoder.debug_check_bounds::<Self>(offset);
1969 fidl::decode!(
1971 fidl_fuchsia_net_interfaces__common::AddressAssignmentState,
1972 D,
1973 &mut self.assignment_state,
1974 decoder,
1975 offset + 0,
1976 _depth
1977 )?;
1978 Ok(())
1979 }
1980 }
1981
1982 impl fidl::encoding::ValueTypeMarker for ControlGetIdResponse {
1983 type Borrowed<'a> = &'a Self;
1984 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1985 value
1986 }
1987 }
1988
1989 unsafe impl fidl::encoding::TypeMarker for ControlGetIdResponse {
1990 type Owned = Self;
1991
1992 #[inline(always)]
1993 fn inline_align(_context: fidl::encoding::Context) -> usize {
1994 8
1995 }
1996
1997 #[inline(always)]
1998 fn inline_size(_context: fidl::encoding::Context) -> usize {
1999 8
2000 }
2001 #[inline(always)]
2002 fn encode_is_copy() -> bool {
2003 true
2004 }
2005
2006 #[inline(always)]
2007 fn decode_is_copy() -> bool {
2008 true
2009 }
2010 }
2011
2012 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ControlGetIdResponse, D>
2013 for &ControlGetIdResponse
2014 {
2015 #[inline]
2016 unsafe fn encode(
2017 self,
2018 encoder: &mut fidl::encoding::Encoder<'_, D>,
2019 offset: usize,
2020 _depth: fidl::encoding::Depth,
2021 ) -> fidl::Result<()> {
2022 encoder.debug_check_bounds::<ControlGetIdResponse>(offset);
2023 unsafe {
2024 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2026 (buf_ptr as *mut ControlGetIdResponse)
2027 .write_unaligned((self as *const ControlGetIdResponse).read());
2028 }
2031 Ok(())
2032 }
2033 }
2034 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
2035 fidl::encoding::Encode<ControlGetIdResponse, D> for (T0,)
2036 {
2037 #[inline]
2038 unsafe fn encode(
2039 self,
2040 encoder: &mut fidl::encoding::Encoder<'_, D>,
2041 offset: usize,
2042 depth: fidl::encoding::Depth,
2043 ) -> fidl::Result<()> {
2044 encoder.debug_check_bounds::<ControlGetIdResponse>(offset);
2045 self.0.encode(encoder, offset + 0, depth)?;
2049 Ok(())
2050 }
2051 }
2052
2053 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlGetIdResponse {
2054 #[inline(always)]
2055 fn new_empty() -> Self {
2056 Self { id: fidl::new_empty!(u64, D) }
2057 }
2058
2059 #[inline]
2060 unsafe fn decode(
2061 &mut self,
2062 decoder: &mut fidl::encoding::Decoder<'_, D>,
2063 offset: usize,
2064 _depth: fidl::encoding::Depth,
2065 ) -> fidl::Result<()> {
2066 decoder.debug_check_bounds::<Self>(offset);
2067 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2068 unsafe {
2071 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
2072 }
2073 Ok(())
2074 }
2075 }
2076
2077 impl fidl::encoding::ValueTypeMarker for ControlOnInterfaceRemovedRequest {
2078 type Borrowed<'a> = &'a Self;
2079 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2080 value
2081 }
2082 }
2083
2084 unsafe impl fidl::encoding::TypeMarker for ControlOnInterfaceRemovedRequest {
2085 type Owned = Self;
2086
2087 #[inline(always)]
2088 fn inline_align(_context: fidl::encoding::Context) -> usize {
2089 4
2090 }
2091
2092 #[inline(always)]
2093 fn inline_size(_context: fidl::encoding::Context) -> usize {
2094 4
2095 }
2096 }
2097
2098 unsafe impl<D: fidl::encoding::ResourceDialect>
2099 fidl::encoding::Encode<ControlOnInterfaceRemovedRequest, D>
2100 for &ControlOnInterfaceRemovedRequest
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::<ControlOnInterfaceRemovedRequest>(offset);
2110 fidl::encoding::Encode::<ControlOnInterfaceRemovedRequest, D>::encode(
2112 (<InterfaceRemovedReason as fidl::encoding::ValueTypeMarker>::borrow(&self.reason),),
2113 encoder,
2114 offset,
2115 _depth,
2116 )
2117 }
2118 }
2119 unsafe impl<
2120 D: fidl::encoding::ResourceDialect,
2121 T0: fidl::encoding::Encode<InterfaceRemovedReason, D>,
2122 > fidl::encoding::Encode<ControlOnInterfaceRemovedRequest, D> for (T0,)
2123 {
2124 #[inline]
2125 unsafe fn encode(
2126 self,
2127 encoder: &mut fidl::encoding::Encoder<'_, D>,
2128 offset: usize,
2129 depth: fidl::encoding::Depth,
2130 ) -> fidl::Result<()> {
2131 encoder.debug_check_bounds::<ControlOnInterfaceRemovedRequest>(offset);
2132 self.0.encode(encoder, offset + 0, depth)?;
2136 Ok(())
2137 }
2138 }
2139
2140 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2141 for ControlOnInterfaceRemovedRequest
2142 {
2143 #[inline(always)]
2144 fn new_empty() -> Self {
2145 Self { reason: fidl::new_empty!(InterfaceRemovedReason, D) }
2146 }
2147
2148 #[inline]
2149 unsafe fn decode(
2150 &mut self,
2151 decoder: &mut fidl::encoding::Decoder<'_, D>,
2152 offset: usize,
2153 _depth: fidl::encoding::Depth,
2154 ) -> fidl::Result<()> {
2155 decoder.debug_check_bounds::<Self>(offset);
2156 fidl::decode!(
2158 InterfaceRemovedReason,
2159 D,
2160 &mut self.reason,
2161 decoder,
2162 offset + 0,
2163 _depth
2164 )?;
2165 Ok(())
2166 }
2167 }
2168
2169 impl fidl::encoding::ValueTypeMarker for ControlRemoveAddressRequest {
2170 type Borrowed<'a> = &'a Self;
2171 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2172 value
2173 }
2174 }
2175
2176 unsafe impl fidl::encoding::TypeMarker for ControlRemoveAddressRequest {
2177 type Owned = Self;
2178
2179 #[inline(always)]
2180 fn inline_align(_context: fidl::encoding::Context) -> usize {
2181 8
2182 }
2183
2184 #[inline(always)]
2185 fn inline_size(_context: fidl::encoding::Context) -> usize {
2186 24
2187 }
2188 }
2189
2190 unsafe impl<D: fidl::encoding::ResourceDialect>
2191 fidl::encoding::Encode<ControlRemoveAddressRequest, D> for &ControlRemoveAddressRequest
2192 {
2193 #[inline]
2194 unsafe fn encode(
2195 self,
2196 encoder: &mut fidl::encoding::Encoder<'_, D>,
2197 offset: usize,
2198 _depth: fidl::encoding::Depth,
2199 ) -> fidl::Result<()> {
2200 encoder.debug_check_bounds::<ControlRemoveAddressRequest>(offset);
2201 fidl::encoding::Encode::<ControlRemoveAddressRequest, D>::encode(
2203 (<fidl_fuchsia_net__common::Subnet as fidl::encoding::ValueTypeMarker>::borrow(
2204 &self.address,
2205 ),),
2206 encoder,
2207 offset,
2208 _depth,
2209 )
2210 }
2211 }
2212 unsafe impl<
2213 D: fidl::encoding::ResourceDialect,
2214 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::Subnet, D>,
2215 > fidl::encoding::Encode<ControlRemoveAddressRequest, D> for (T0,)
2216 {
2217 #[inline]
2218 unsafe fn encode(
2219 self,
2220 encoder: &mut fidl::encoding::Encoder<'_, D>,
2221 offset: usize,
2222 depth: fidl::encoding::Depth,
2223 ) -> fidl::Result<()> {
2224 encoder.debug_check_bounds::<ControlRemoveAddressRequest>(offset);
2225 self.0.encode(encoder, offset + 0, depth)?;
2229 Ok(())
2230 }
2231 }
2232
2233 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2234 for ControlRemoveAddressRequest
2235 {
2236 #[inline(always)]
2237 fn new_empty() -> Self {
2238 Self { address: fidl::new_empty!(fidl_fuchsia_net__common::Subnet, D) }
2239 }
2240
2241 #[inline]
2242 unsafe fn decode(
2243 &mut self,
2244 decoder: &mut fidl::encoding::Decoder<'_, D>,
2245 offset: usize,
2246 _depth: fidl::encoding::Depth,
2247 ) -> fidl::Result<()> {
2248 decoder.debug_check_bounds::<Self>(offset);
2249 fidl::decode!(
2251 fidl_fuchsia_net__common::Subnet,
2252 D,
2253 &mut self.address,
2254 decoder,
2255 offset + 0,
2256 _depth
2257 )?;
2258 Ok(())
2259 }
2260 }
2261
2262 impl fidl::encoding::ValueTypeMarker for ControlSetConfigurationRequest {
2263 type Borrowed<'a> = &'a Self;
2264 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2265 value
2266 }
2267 }
2268
2269 unsafe impl fidl::encoding::TypeMarker for ControlSetConfigurationRequest {
2270 type Owned = Self;
2271
2272 #[inline(always)]
2273 fn inline_align(_context: fidl::encoding::Context) -> usize {
2274 8
2275 }
2276
2277 #[inline(always)]
2278 fn inline_size(_context: fidl::encoding::Context) -> usize {
2279 16
2280 }
2281 }
2282
2283 unsafe impl<D: fidl::encoding::ResourceDialect>
2284 fidl::encoding::Encode<ControlSetConfigurationRequest, D>
2285 for &ControlSetConfigurationRequest
2286 {
2287 #[inline]
2288 unsafe fn encode(
2289 self,
2290 encoder: &mut fidl::encoding::Encoder<'_, D>,
2291 offset: usize,
2292 _depth: fidl::encoding::Depth,
2293 ) -> fidl::Result<()> {
2294 encoder.debug_check_bounds::<ControlSetConfigurationRequest>(offset);
2295 fidl::encoding::Encode::<ControlSetConfigurationRequest, D>::encode(
2297 (<Configuration as fidl::encoding::ValueTypeMarker>::borrow(&self.config),),
2298 encoder,
2299 offset,
2300 _depth,
2301 )
2302 }
2303 }
2304 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Configuration, D>>
2305 fidl::encoding::Encode<ControlSetConfigurationRequest, D> for (T0,)
2306 {
2307 #[inline]
2308 unsafe fn encode(
2309 self,
2310 encoder: &mut fidl::encoding::Encoder<'_, D>,
2311 offset: usize,
2312 depth: fidl::encoding::Depth,
2313 ) -> fidl::Result<()> {
2314 encoder.debug_check_bounds::<ControlSetConfigurationRequest>(offset);
2315 self.0.encode(encoder, offset + 0, depth)?;
2319 Ok(())
2320 }
2321 }
2322
2323 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2324 for ControlSetConfigurationRequest
2325 {
2326 #[inline(always)]
2327 fn new_empty() -> Self {
2328 Self { config: fidl::new_empty!(Configuration, D) }
2329 }
2330
2331 #[inline]
2332 unsafe fn decode(
2333 &mut self,
2334 decoder: &mut fidl::encoding::Decoder<'_, D>,
2335 offset: usize,
2336 _depth: fidl::encoding::Depth,
2337 ) -> fidl::Result<()> {
2338 decoder.debug_check_bounds::<Self>(offset);
2339 fidl::decode!(Configuration, D, &mut self.config, decoder, offset + 0, _depth)?;
2341 Ok(())
2342 }
2343 }
2344
2345 impl fidl::encoding::ValueTypeMarker for ControlDisableResponse {
2346 type Borrowed<'a> = &'a Self;
2347 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2348 value
2349 }
2350 }
2351
2352 unsafe impl fidl::encoding::TypeMarker for ControlDisableResponse {
2353 type Owned = Self;
2354
2355 #[inline(always)]
2356 fn inline_align(_context: fidl::encoding::Context) -> usize {
2357 1
2358 }
2359
2360 #[inline(always)]
2361 fn inline_size(_context: fidl::encoding::Context) -> usize {
2362 1
2363 }
2364 }
2365
2366 unsafe impl<D: fidl::encoding::ResourceDialect>
2367 fidl::encoding::Encode<ControlDisableResponse, D> for &ControlDisableResponse
2368 {
2369 #[inline]
2370 unsafe fn encode(
2371 self,
2372 encoder: &mut fidl::encoding::Encoder<'_, D>,
2373 offset: usize,
2374 _depth: fidl::encoding::Depth,
2375 ) -> fidl::Result<()> {
2376 encoder.debug_check_bounds::<ControlDisableResponse>(offset);
2377 fidl::encoding::Encode::<ControlDisableResponse, D>::encode(
2379 (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.did_disable),),
2380 encoder,
2381 offset,
2382 _depth,
2383 )
2384 }
2385 }
2386 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
2387 fidl::encoding::Encode<ControlDisableResponse, D> for (T0,)
2388 {
2389 #[inline]
2390 unsafe fn encode(
2391 self,
2392 encoder: &mut fidl::encoding::Encoder<'_, D>,
2393 offset: usize,
2394 depth: fidl::encoding::Depth,
2395 ) -> fidl::Result<()> {
2396 encoder.debug_check_bounds::<ControlDisableResponse>(offset);
2397 self.0.encode(encoder, offset + 0, depth)?;
2401 Ok(())
2402 }
2403 }
2404
2405 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2406 for ControlDisableResponse
2407 {
2408 #[inline(always)]
2409 fn new_empty() -> Self {
2410 Self { did_disable: fidl::new_empty!(bool, D) }
2411 }
2412
2413 #[inline]
2414 unsafe fn decode(
2415 &mut self,
2416 decoder: &mut fidl::encoding::Decoder<'_, D>,
2417 offset: usize,
2418 _depth: fidl::encoding::Depth,
2419 ) -> fidl::Result<()> {
2420 decoder.debug_check_bounds::<Self>(offset);
2421 fidl::decode!(bool, D, &mut self.did_disable, decoder, offset + 0, _depth)?;
2423 Ok(())
2424 }
2425 }
2426
2427 impl fidl::encoding::ValueTypeMarker for ControlEnableResponse {
2428 type Borrowed<'a> = &'a Self;
2429 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2430 value
2431 }
2432 }
2433
2434 unsafe impl fidl::encoding::TypeMarker for ControlEnableResponse {
2435 type Owned = Self;
2436
2437 #[inline(always)]
2438 fn inline_align(_context: fidl::encoding::Context) -> usize {
2439 1
2440 }
2441
2442 #[inline(always)]
2443 fn inline_size(_context: fidl::encoding::Context) -> usize {
2444 1
2445 }
2446 }
2447
2448 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ControlEnableResponse, D>
2449 for &ControlEnableResponse
2450 {
2451 #[inline]
2452 unsafe fn encode(
2453 self,
2454 encoder: &mut fidl::encoding::Encoder<'_, D>,
2455 offset: usize,
2456 _depth: fidl::encoding::Depth,
2457 ) -> fidl::Result<()> {
2458 encoder.debug_check_bounds::<ControlEnableResponse>(offset);
2459 fidl::encoding::Encode::<ControlEnableResponse, D>::encode(
2461 (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.did_enable),),
2462 encoder,
2463 offset,
2464 _depth,
2465 )
2466 }
2467 }
2468 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
2469 fidl::encoding::Encode<ControlEnableResponse, D> for (T0,)
2470 {
2471 #[inline]
2472 unsafe fn encode(
2473 self,
2474 encoder: &mut fidl::encoding::Encoder<'_, D>,
2475 offset: usize,
2476 depth: fidl::encoding::Depth,
2477 ) -> fidl::Result<()> {
2478 encoder.debug_check_bounds::<ControlEnableResponse>(offset);
2479 self.0.encode(encoder, offset + 0, depth)?;
2483 Ok(())
2484 }
2485 }
2486
2487 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlEnableResponse {
2488 #[inline(always)]
2489 fn new_empty() -> Self {
2490 Self { did_enable: fidl::new_empty!(bool, D) }
2491 }
2492
2493 #[inline]
2494 unsafe fn decode(
2495 &mut self,
2496 decoder: &mut fidl::encoding::Decoder<'_, D>,
2497 offset: usize,
2498 _depth: fidl::encoding::Depth,
2499 ) -> fidl::Result<()> {
2500 decoder.debug_check_bounds::<Self>(offset);
2501 fidl::decode!(bool, D, &mut self.did_enable, decoder, offset + 0, _depth)?;
2503 Ok(())
2504 }
2505 }
2506
2507 impl fidl::encoding::ValueTypeMarker for ControlGetConfigurationResponse {
2508 type Borrowed<'a> = &'a Self;
2509 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2510 value
2511 }
2512 }
2513
2514 unsafe impl fidl::encoding::TypeMarker for ControlGetConfigurationResponse {
2515 type Owned = Self;
2516
2517 #[inline(always)]
2518 fn inline_align(_context: fidl::encoding::Context) -> usize {
2519 8
2520 }
2521
2522 #[inline(always)]
2523 fn inline_size(_context: fidl::encoding::Context) -> usize {
2524 16
2525 }
2526 }
2527
2528 unsafe impl<D: fidl::encoding::ResourceDialect>
2529 fidl::encoding::Encode<ControlGetConfigurationResponse, D>
2530 for &ControlGetConfigurationResponse
2531 {
2532 #[inline]
2533 unsafe fn encode(
2534 self,
2535 encoder: &mut fidl::encoding::Encoder<'_, D>,
2536 offset: usize,
2537 _depth: fidl::encoding::Depth,
2538 ) -> fidl::Result<()> {
2539 encoder.debug_check_bounds::<ControlGetConfigurationResponse>(offset);
2540 fidl::encoding::Encode::<ControlGetConfigurationResponse, D>::encode(
2542 (<Configuration as fidl::encoding::ValueTypeMarker>::borrow(&self.config),),
2543 encoder,
2544 offset,
2545 _depth,
2546 )
2547 }
2548 }
2549 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Configuration, D>>
2550 fidl::encoding::Encode<ControlGetConfigurationResponse, D> for (T0,)
2551 {
2552 #[inline]
2553 unsafe fn encode(
2554 self,
2555 encoder: &mut fidl::encoding::Encoder<'_, D>,
2556 offset: usize,
2557 depth: fidl::encoding::Depth,
2558 ) -> fidl::Result<()> {
2559 encoder.debug_check_bounds::<ControlGetConfigurationResponse>(offset);
2560 self.0.encode(encoder, offset + 0, depth)?;
2564 Ok(())
2565 }
2566 }
2567
2568 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2569 for ControlGetConfigurationResponse
2570 {
2571 #[inline(always)]
2572 fn new_empty() -> Self {
2573 Self { config: fidl::new_empty!(Configuration, D) }
2574 }
2575
2576 #[inline]
2577 unsafe fn decode(
2578 &mut self,
2579 decoder: &mut fidl::encoding::Decoder<'_, D>,
2580 offset: usize,
2581 _depth: fidl::encoding::Depth,
2582 ) -> fidl::Result<()> {
2583 decoder.debug_check_bounds::<Self>(offset);
2584 fidl::decode!(Configuration, D, &mut self.config, decoder, offset + 0, _depth)?;
2586 Ok(())
2587 }
2588 }
2589
2590 impl fidl::encoding::ValueTypeMarker for ControlRemoveAddressResponse {
2591 type Borrowed<'a> = &'a Self;
2592 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2593 value
2594 }
2595 }
2596
2597 unsafe impl fidl::encoding::TypeMarker for ControlRemoveAddressResponse {
2598 type Owned = Self;
2599
2600 #[inline(always)]
2601 fn inline_align(_context: fidl::encoding::Context) -> usize {
2602 1
2603 }
2604
2605 #[inline(always)]
2606 fn inline_size(_context: fidl::encoding::Context) -> usize {
2607 1
2608 }
2609 }
2610
2611 unsafe impl<D: fidl::encoding::ResourceDialect>
2612 fidl::encoding::Encode<ControlRemoveAddressResponse, D> for &ControlRemoveAddressResponse
2613 {
2614 #[inline]
2615 unsafe fn encode(
2616 self,
2617 encoder: &mut fidl::encoding::Encoder<'_, D>,
2618 offset: usize,
2619 _depth: fidl::encoding::Depth,
2620 ) -> fidl::Result<()> {
2621 encoder.debug_check_bounds::<ControlRemoveAddressResponse>(offset);
2622 fidl::encoding::Encode::<ControlRemoveAddressResponse, D>::encode(
2624 (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.did_remove),),
2625 encoder,
2626 offset,
2627 _depth,
2628 )
2629 }
2630 }
2631 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
2632 fidl::encoding::Encode<ControlRemoveAddressResponse, D> for (T0,)
2633 {
2634 #[inline]
2635 unsafe fn encode(
2636 self,
2637 encoder: &mut fidl::encoding::Encoder<'_, D>,
2638 offset: usize,
2639 depth: fidl::encoding::Depth,
2640 ) -> fidl::Result<()> {
2641 encoder.debug_check_bounds::<ControlRemoveAddressResponse>(offset);
2642 self.0.encode(encoder, offset + 0, depth)?;
2646 Ok(())
2647 }
2648 }
2649
2650 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2651 for ControlRemoveAddressResponse
2652 {
2653 #[inline(always)]
2654 fn new_empty() -> Self {
2655 Self { did_remove: fidl::new_empty!(bool, D) }
2656 }
2657
2658 #[inline]
2659 unsafe fn decode(
2660 &mut self,
2661 decoder: &mut fidl::encoding::Decoder<'_, D>,
2662 offset: usize,
2663 _depth: fidl::encoding::Depth,
2664 ) -> fidl::Result<()> {
2665 decoder.debug_check_bounds::<Self>(offset);
2666 fidl::decode!(bool, D, &mut self.did_remove, decoder, offset + 0, _depth)?;
2668 Ok(())
2669 }
2670 }
2671
2672 impl fidl::encoding::ValueTypeMarker for ControlSetConfigurationResponse {
2673 type Borrowed<'a> = &'a Self;
2674 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2675 value
2676 }
2677 }
2678
2679 unsafe impl fidl::encoding::TypeMarker for ControlSetConfigurationResponse {
2680 type Owned = Self;
2681
2682 #[inline(always)]
2683 fn inline_align(_context: fidl::encoding::Context) -> usize {
2684 8
2685 }
2686
2687 #[inline(always)]
2688 fn inline_size(_context: fidl::encoding::Context) -> usize {
2689 16
2690 }
2691 }
2692
2693 unsafe impl<D: fidl::encoding::ResourceDialect>
2694 fidl::encoding::Encode<ControlSetConfigurationResponse, D>
2695 for &ControlSetConfigurationResponse
2696 {
2697 #[inline]
2698 unsafe fn encode(
2699 self,
2700 encoder: &mut fidl::encoding::Encoder<'_, D>,
2701 offset: usize,
2702 _depth: fidl::encoding::Depth,
2703 ) -> fidl::Result<()> {
2704 encoder.debug_check_bounds::<ControlSetConfigurationResponse>(offset);
2705 fidl::encoding::Encode::<ControlSetConfigurationResponse, D>::encode(
2707 (<Configuration as fidl::encoding::ValueTypeMarker>::borrow(&self.previous_config),),
2708 encoder,
2709 offset,
2710 _depth,
2711 )
2712 }
2713 }
2714 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Configuration, D>>
2715 fidl::encoding::Encode<ControlSetConfigurationResponse, D> for (T0,)
2716 {
2717 #[inline]
2718 unsafe fn encode(
2719 self,
2720 encoder: &mut fidl::encoding::Encoder<'_, D>,
2721 offset: usize,
2722 depth: fidl::encoding::Depth,
2723 ) -> fidl::Result<()> {
2724 encoder.debug_check_bounds::<ControlSetConfigurationResponse>(offset);
2725 self.0.encode(encoder, offset + 0, depth)?;
2729 Ok(())
2730 }
2731 }
2732
2733 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2734 for ControlSetConfigurationResponse
2735 {
2736 #[inline(always)]
2737 fn new_empty() -> Self {
2738 Self { previous_config: fidl::new_empty!(Configuration, D) }
2739 }
2740
2741 #[inline]
2742 unsafe fn decode(
2743 &mut self,
2744 decoder: &mut fidl::encoding::Decoder<'_, D>,
2745 offset: usize,
2746 _depth: fidl::encoding::Depth,
2747 ) -> fidl::Result<()> {
2748 decoder.debug_check_bounds::<Self>(offset);
2749 fidl::decode!(
2751 Configuration,
2752 D,
2753 &mut self.previous_config,
2754 decoder,
2755 offset + 0,
2756 _depth
2757 )?;
2758 Ok(())
2759 }
2760 }
2761
2762 impl fidl::encoding::ValueTypeMarker for Empty {
2763 type Borrowed<'a> = &'a Self;
2764 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2765 value
2766 }
2767 }
2768
2769 unsafe impl fidl::encoding::TypeMarker for Empty {
2770 type Owned = Self;
2771
2772 #[inline(always)]
2773 fn inline_align(_context: fidl::encoding::Context) -> usize {
2774 1
2775 }
2776
2777 #[inline(always)]
2778 fn inline_size(_context: fidl::encoding::Context) -> usize {
2779 1
2780 }
2781 }
2782
2783 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Empty, D> for &Empty {
2784 #[inline]
2785 unsafe fn encode(
2786 self,
2787 encoder: &mut fidl::encoding::Encoder<'_, D>,
2788 offset: usize,
2789 _depth: fidl::encoding::Depth,
2790 ) -> fidl::Result<()> {
2791 encoder.debug_check_bounds::<Empty>(offset);
2792 encoder.write_num(0u8, offset);
2793 Ok(())
2794 }
2795 }
2796
2797 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Empty {
2798 #[inline(always)]
2799 fn new_empty() -> Self {
2800 Self
2801 }
2802
2803 #[inline]
2804 unsafe fn decode(
2805 &mut self,
2806 decoder: &mut fidl::encoding::Decoder<'_, D>,
2807 offset: usize,
2808 _depth: fidl::encoding::Depth,
2809 ) -> fidl::Result<()> {
2810 decoder.debug_check_bounds::<Self>(offset);
2811 match decoder.read_num::<u8>(offset) {
2812 0 => Ok(()),
2813 _ => Err(fidl::Error::Invalid),
2814 }
2815 }
2816 }
2817
2818 impl AddressParameters {
2819 #[inline(always)]
2820 fn max_ordinal_present(&self) -> u64 {
2821 if let Some(_) = self.perform_dad {
2822 return 4;
2823 }
2824 if let Some(_) = self.add_subnet_route {
2825 return 3;
2826 }
2827 if let Some(_) = self.temporary {
2828 return 2;
2829 }
2830 if let Some(_) = self.initial_properties {
2831 return 1;
2832 }
2833 0
2834 }
2835 }
2836
2837 impl fidl::encoding::ValueTypeMarker for AddressParameters {
2838 type Borrowed<'a> = &'a Self;
2839 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2840 value
2841 }
2842 }
2843
2844 unsafe impl fidl::encoding::TypeMarker for AddressParameters {
2845 type Owned = Self;
2846
2847 #[inline(always)]
2848 fn inline_align(_context: fidl::encoding::Context) -> usize {
2849 8
2850 }
2851
2852 #[inline(always)]
2853 fn inline_size(_context: fidl::encoding::Context) -> usize {
2854 16
2855 }
2856 }
2857
2858 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AddressParameters, D>
2859 for &AddressParameters
2860 {
2861 unsafe fn encode(
2862 self,
2863 encoder: &mut fidl::encoding::Encoder<'_, D>,
2864 offset: usize,
2865 mut depth: fidl::encoding::Depth,
2866 ) -> fidl::Result<()> {
2867 encoder.debug_check_bounds::<AddressParameters>(offset);
2868 let max_ordinal: u64 = self.max_ordinal_present();
2870 encoder.write_num(max_ordinal, offset);
2871 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2872 if max_ordinal == 0 {
2874 return Ok(());
2875 }
2876 depth.increment()?;
2877 let envelope_size = 8;
2878 let bytes_len = max_ordinal as usize * envelope_size;
2879 #[allow(unused_variables)]
2880 let offset = encoder.out_of_line_offset(bytes_len);
2881 let mut _prev_end_offset: usize = 0;
2882 if 1 > max_ordinal {
2883 return Ok(());
2884 }
2885
2886 let cur_offset: usize = (1 - 1) * envelope_size;
2889
2890 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2892
2893 fidl::encoding::encode_in_envelope_optional::<AddressProperties, D>(
2898 self.initial_properties
2899 .as_ref()
2900 .map(<AddressProperties as fidl::encoding::ValueTypeMarker>::borrow),
2901 encoder,
2902 offset + cur_offset,
2903 depth,
2904 )?;
2905
2906 _prev_end_offset = cur_offset + envelope_size;
2907 if 2 > max_ordinal {
2908 return Ok(());
2909 }
2910
2911 let cur_offset: usize = (2 - 1) * envelope_size;
2914
2915 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2917
2918 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2923 self.temporary.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2924 encoder,
2925 offset + cur_offset,
2926 depth,
2927 )?;
2928
2929 _prev_end_offset = cur_offset + envelope_size;
2930 if 3 > max_ordinal {
2931 return Ok(());
2932 }
2933
2934 let cur_offset: usize = (3 - 1) * envelope_size;
2937
2938 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2940
2941 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2946 self.add_subnet_route
2947 .as_ref()
2948 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2949 encoder,
2950 offset + cur_offset,
2951 depth,
2952 )?;
2953
2954 _prev_end_offset = cur_offset + envelope_size;
2955 if 4 > max_ordinal {
2956 return Ok(());
2957 }
2958
2959 let cur_offset: usize = (4 - 1) * envelope_size;
2962
2963 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2965
2966 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2971 self.perform_dad.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2972 encoder,
2973 offset + cur_offset,
2974 depth,
2975 )?;
2976
2977 _prev_end_offset = cur_offset + envelope_size;
2978
2979 Ok(())
2980 }
2981 }
2982
2983 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AddressParameters {
2984 #[inline(always)]
2985 fn new_empty() -> Self {
2986 Self::default()
2987 }
2988
2989 unsafe fn decode(
2990 &mut self,
2991 decoder: &mut fidl::encoding::Decoder<'_, D>,
2992 offset: usize,
2993 mut depth: fidl::encoding::Depth,
2994 ) -> fidl::Result<()> {
2995 decoder.debug_check_bounds::<Self>(offset);
2996 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2997 None => return Err(fidl::Error::NotNullable),
2998 Some(len) => len,
2999 };
3000 if len == 0 {
3002 return Ok(());
3003 };
3004 depth.increment()?;
3005 let envelope_size = 8;
3006 let bytes_len = len * envelope_size;
3007 let offset = decoder.out_of_line_offset(bytes_len)?;
3008 let mut _next_ordinal_to_read = 0;
3010 let mut next_offset = offset;
3011 let end_offset = offset + bytes_len;
3012 _next_ordinal_to_read += 1;
3013 if next_offset >= end_offset {
3014 return Ok(());
3015 }
3016
3017 while _next_ordinal_to_read < 1 {
3019 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3020 _next_ordinal_to_read += 1;
3021 next_offset += envelope_size;
3022 }
3023
3024 let next_out_of_line = decoder.next_out_of_line();
3025 let handles_before = decoder.remaining_handles();
3026 if let Some((inlined, num_bytes, num_handles)) =
3027 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3028 {
3029 let member_inline_size =
3030 <AddressProperties as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3031 if inlined != (member_inline_size <= 4) {
3032 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3033 }
3034 let inner_offset;
3035 let mut inner_depth = depth.clone();
3036 if inlined {
3037 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3038 inner_offset = next_offset;
3039 } else {
3040 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3041 inner_depth.increment()?;
3042 }
3043 let val_ref = self
3044 .initial_properties
3045 .get_or_insert_with(|| fidl::new_empty!(AddressProperties, D));
3046 fidl::decode!(AddressProperties, D, val_ref, decoder, inner_offset, inner_depth)?;
3047 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3048 {
3049 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3050 }
3051 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3052 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3053 }
3054 }
3055
3056 next_offset += envelope_size;
3057 _next_ordinal_to_read += 1;
3058 if next_offset >= end_offset {
3059 return Ok(());
3060 }
3061
3062 while _next_ordinal_to_read < 2 {
3064 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3065 _next_ordinal_to_read += 1;
3066 next_offset += envelope_size;
3067 }
3068
3069 let next_out_of_line = decoder.next_out_of_line();
3070 let handles_before = decoder.remaining_handles();
3071 if let Some((inlined, num_bytes, num_handles)) =
3072 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3073 {
3074 let member_inline_size =
3075 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3076 if inlined != (member_inline_size <= 4) {
3077 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3078 }
3079 let inner_offset;
3080 let mut inner_depth = depth.clone();
3081 if inlined {
3082 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3083 inner_offset = next_offset;
3084 } else {
3085 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3086 inner_depth.increment()?;
3087 }
3088 let val_ref = self.temporary.get_or_insert_with(|| fidl::new_empty!(bool, D));
3089 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3090 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3091 {
3092 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3093 }
3094 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3095 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3096 }
3097 }
3098
3099 next_offset += envelope_size;
3100 _next_ordinal_to_read += 1;
3101 if next_offset >= end_offset {
3102 return Ok(());
3103 }
3104
3105 while _next_ordinal_to_read < 3 {
3107 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3108 _next_ordinal_to_read += 1;
3109 next_offset += envelope_size;
3110 }
3111
3112 let next_out_of_line = decoder.next_out_of_line();
3113 let handles_before = decoder.remaining_handles();
3114 if let Some((inlined, num_bytes, num_handles)) =
3115 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3116 {
3117 let member_inline_size =
3118 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3119 if inlined != (member_inline_size <= 4) {
3120 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3121 }
3122 let inner_offset;
3123 let mut inner_depth = depth.clone();
3124 if inlined {
3125 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3126 inner_offset = next_offset;
3127 } else {
3128 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3129 inner_depth.increment()?;
3130 }
3131 let val_ref =
3132 self.add_subnet_route.get_or_insert_with(|| fidl::new_empty!(bool, D));
3133 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3134 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3135 {
3136 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3137 }
3138 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3139 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3140 }
3141 }
3142
3143 next_offset += envelope_size;
3144 _next_ordinal_to_read += 1;
3145 if next_offset >= end_offset {
3146 return Ok(());
3147 }
3148
3149 while _next_ordinal_to_read < 4 {
3151 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3152 _next_ordinal_to_read += 1;
3153 next_offset += envelope_size;
3154 }
3155
3156 let next_out_of_line = decoder.next_out_of_line();
3157 let handles_before = decoder.remaining_handles();
3158 if let Some((inlined, num_bytes, num_handles)) =
3159 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3160 {
3161 let member_inline_size =
3162 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3163 if inlined != (member_inline_size <= 4) {
3164 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3165 }
3166 let inner_offset;
3167 let mut inner_depth = depth.clone();
3168 if inlined {
3169 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3170 inner_offset = next_offset;
3171 } else {
3172 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3173 inner_depth.increment()?;
3174 }
3175 let val_ref = self.perform_dad.get_or_insert_with(|| fidl::new_empty!(bool, D));
3176 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3177 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3178 {
3179 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3180 }
3181 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3182 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3183 }
3184 }
3185
3186 next_offset += envelope_size;
3187
3188 while next_offset < end_offset {
3190 _next_ordinal_to_read += 1;
3191 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3192 next_offset += envelope_size;
3193 }
3194
3195 Ok(())
3196 }
3197 }
3198
3199 impl AddressProperties {
3200 #[inline(always)]
3201 fn max_ordinal_present(&self) -> u64 {
3202 if let Some(_) = self.valid_lifetime_end {
3203 return 2;
3204 }
3205 if let Some(_) = self.preferred_lifetime_info {
3206 return 1;
3207 }
3208 0
3209 }
3210 }
3211
3212 impl fidl::encoding::ValueTypeMarker for AddressProperties {
3213 type Borrowed<'a> = &'a Self;
3214 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3215 value
3216 }
3217 }
3218
3219 unsafe impl fidl::encoding::TypeMarker for AddressProperties {
3220 type Owned = Self;
3221
3222 #[inline(always)]
3223 fn inline_align(_context: fidl::encoding::Context) -> usize {
3224 8
3225 }
3226
3227 #[inline(always)]
3228 fn inline_size(_context: fidl::encoding::Context) -> usize {
3229 16
3230 }
3231 }
3232
3233 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AddressProperties, D>
3234 for &AddressProperties
3235 {
3236 unsafe fn encode(
3237 self,
3238 encoder: &mut fidl::encoding::Encoder<'_, D>,
3239 offset: usize,
3240 mut depth: fidl::encoding::Depth,
3241 ) -> fidl::Result<()> {
3242 encoder.debug_check_bounds::<AddressProperties>(offset);
3243 let max_ordinal: u64 = self.max_ordinal_present();
3245 encoder.write_num(max_ordinal, offset);
3246 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3247 if max_ordinal == 0 {
3249 return Ok(());
3250 }
3251 depth.increment()?;
3252 let envelope_size = 8;
3253 let bytes_len = max_ordinal as usize * envelope_size;
3254 #[allow(unused_variables)]
3255 let offset = encoder.out_of_line_offset(bytes_len);
3256 let mut _prev_end_offset: usize = 0;
3257 if 1 > max_ordinal {
3258 return Ok(());
3259 }
3260
3261 let cur_offset: usize = (1 - 1) * envelope_size;
3264
3265 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3267
3268 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_interfaces__common::PreferredLifetimeInfo, D>(
3273 self.preferred_lifetime_info.as_ref().map(<fidl_fuchsia_net_interfaces__common::PreferredLifetimeInfo as fidl::encoding::ValueTypeMarker>::borrow),
3274 encoder, offset + cur_offset, depth
3275 )?;
3276
3277 _prev_end_offset = cur_offset + envelope_size;
3278 if 2 > max_ordinal {
3279 return Ok(());
3280 }
3281
3282 let cur_offset: usize = (2 - 1) * envelope_size;
3285
3286 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3288
3289 fidl::encoding::encode_in_envelope_optional::<i64, D>(
3294 self.valid_lifetime_end
3295 .as_ref()
3296 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
3297 encoder,
3298 offset + cur_offset,
3299 depth,
3300 )?;
3301
3302 _prev_end_offset = cur_offset + envelope_size;
3303
3304 Ok(())
3305 }
3306 }
3307
3308 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AddressProperties {
3309 #[inline(always)]
3310 fn new_empty() -> Self {
3311 Self::default()
3312 }
3313
3314 unsafe fn decode(
3315 &mut self,
3316 decoder: &mut fidl::encoding::Decoder<'_, D>,
3317 offset: usize,
3318 mut depth: fidl::encoding::Depth,
3319 ) -> fidl::Result<()> {
3320 decoder.debug_check_bounds::<Self>(offset);
3321 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3322 None => return Err(fidl::Error::NotNullable),
3323 Some(len) => len,
3324 };
3325 if len == 0 {
3327 return Ok(());
3328 };
3329 depth.increment()?;
3330 let envelope_size = 8;
3331 let bytes_len = len * envelope_size;
3332 let offset = decoder.out_of_line_offset(bytes_len)?;
3333 let mut _next_ordinal_to_read = 0;
3335 let mut next_offset = offset;
3336 let end_offset = offset + bytes_len;
3337 _next_ordinal_to_read += 1;
3338 if next_offset >= end_offset {
3339 return Ok(());
3340 }
3341
3342 while _next_ordinal_to_read < 1 {
3344 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3345 _next_ordinal_to_read += 1;
3346 next_offset += envelope_size;
3347 }
3348
3349 let next_out_of_line = decoder.next_out_of_line();
3350 let handles_before = decoder.remaining_handles();
3351 if let Some((inlined, num_bytes, num_handles)) =
3352 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3353 {
3354 let member_inline_size = <fidl_fuchsia_net_interfaces__common::PreferredLifetimeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3355 if inlined != (member_inline_size <= 4) {
3356 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3357 }
3358 let inner_offset;
3359 let mut inner_depth = depth.clone();
3360 if inlined {
3361 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3362 inner_offset = next_offset;
3363 } else {
3364 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3365 inner_depth.increment()?;
3366 }
3367 let val_ref = self.preferred_lifetime_info.get_or_insert_with(|| {
3368 fidl::new_empty!(fidl_fuchsia_net_interfaces__common::PreferredLifetimeInfo, D)
3369 });
3370 fidl::decode!(
3371 fidl_fuchsia_net_interfaces__common::PreferredLifetimeInfo,
3372 D,
3373 val_ref,
3374 decoder,
3375 inner_offset,
3376 inner_depth
3377 )?;
3378 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3379 {
3380 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3381 }
3382 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3383 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3384 }
3385 }
3386
3387 next_offset += envelope_size;
3388 _next_ordinal_to_read += 1;
3389 if next_offset >= end_offset {
3390 return Ok(());
3391 }
3392
3393 while _next_ordinal_to_read < 2 {
3395 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3396 _next_ordinal_to_read += 1;
3397 next_offset += envelope_size;
3398 }
3399
3400 let next_out_of_line = decoder.next_out_of_line();
3401 let handles_before = decoder.remaining_handles();
3402 if let Some((inlined, num_bytes, num_handles)) =
3403 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3404 {
3405 let member_inline_size =
3406 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3407 if inlined != (member_inline_size <= 4) {
3408 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3409 }
3410 let inner_offset;
3411 let mut inner_depth = depth.clone();
3412 if inlined {
3413 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3414 inner_offset = next_offset;
3415 } else {
3416 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3417 inner_depth.increment()?;
3418 }
3419 let val_ref =
3420 self.valid_lifetime_end.get_or_insert_with(|| fidl::new_empty!(i64, D));
3421 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
3422 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3423 {
3424 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3425 }
3426 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3427 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3428 }
3429 }
3430
3431 next_offset += envelope_size;
3432
3433 while next_offset < end_offset {
3435 _next_ordinal_to_read += 1;
3436 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3437 next_offset += envelope_size;
3438 }
3439
3440 Ok(())
3441 }
3442 }
3443
3444 impl ArpConfiguration {
3445 #[inline(always)]
3446 fn max_ordinal_present(&self) -> u64 {
3447 if let Some(_) = self.dad {
3448 return 2;
3449 }
3450 if let Some(_) = self.nud {
3451 return 1;
3452 }
3453 0
3454 }
3455 }
3456
3457 impl fidl::encoding::ValueTypeMarker for ArpConfiguration {
3458 type Borrowed<'a> = &'a Self;
3459 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3460 value
3461 }
3462 }
3463
3464 unsafe impl fidl::encoding::TypeMarker for ArpConfiguration {
3465 type Owned = Self;
3466
3467 #[inline(always)]
3468 fn inline_align(_context: fidl::encoding::Context) -> usize {
3469 8
3470 }
3471
3472 #[inline(always)]
3473 fn inline_size(_context: fidl::encoding::Context) -> usize {
3474 16
3475 }
3476 }
3477
3478 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ArpConfiguration, D>
3479 for &ArpConfiguration
3480 {
3481 unsafe fn encode(
3482 self,
3483 encoder: &mut fidl::encoding::Encoder<'_, D>,
3484 offset: usize,
3485 mut depth: fidl::encoding::Depth,
3486 ) -> fidl::Result<()> {
3487 encoder.debug_check_bounds::<ArpConfiguration>(offset);
3488 let max_ordinal: u64 = self.max_ordinal_present();
3490 encoder.write_num(max_ordinal, offset);
3491 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3492 if max_ordinal == 0 {
3494 return Ok(());
3495 }
3496 depth.increment()?;
3497 let envelope_size = 8;
3498 let bytes_len = max_ordinal as usize * envelope_size;
3499 #[allow(unused_variables)]
3500 let offset = encoder.out_of_line_offset(bytes_len);
3501 let mut _prev_end_offset: usize = 0;
3502 if 1 > max_ordinal {
3503 return Ok(());
3504 }
3505
3506 let cur_offset: usize = (1 - 1) * envelope_size;
3509
3510 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3512
3513 fidl::encoding::encode_in_envelope_optional::<NudConfiguration, D>(
3518 self.nud
3519 .as_ref()
3520 .map(<NudConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
3521 encoder,
3522 offset + cur_offset,
3523 depth,
3524 )?;
3525
3526 _prev_end_offset = cur_offset + envelope_size;
3527 if 2 > max_ordinal {
3528 return Ok(());
3529 }
3530
3531 let cur_offset: usize = (2 - 1) * envelope_size;
3534
3535 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3537
3538 fidl::encoding::encode_in_envelope_optional::<DadConfiguration, D>(
3543 self.dad
3544 .as_ref()
3545 .map(<DadConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
3546 encoder,
3547 offset + cur_offset,
3548 depth,
3549 )?;
3550
3551 _prev_end_offset = cur_offset + envelope_size;
3552
3553 Ok(())
3554 }
3555 }
3556
3557 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ArpConfiguration {
3558 #[inline(always)]
3559 fn new_empty() -> Self {
3560 Self::default()
3561 }
3562
3563 unsafe fn decode(
3564 &mut self,
3565 decoder: &mut fidl::encoding::Decoder<'_, D>,
3566 offset: usize,
3567 mut depth: fidl::encoding::Depth,
3568 ) -> fidl::Result<()> {
3569 decoder.debug_check_bounds::<Self>(offset);
3570 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3571 None => return Err(fidl::Error::NotNullable),
3572 Some(len) => len,
3573 };
3574 if len == 0 {
3576 return Ok(());
3577 };
3578 depth.increment()?;
3579 let envelope_size = 8;
3580 let bytes_len = len * envelope_size;
3581 let offset = decoder.out_of_line_offset(bytes_len)?;
3582 let mut _next_ordinal_to_read = 0;
3584 let mut next_offset = offset;
3585 let end_offset = offset + bytes_len;
3586 _next_ordinal_to_read += 1;
3587 if next_offset >= end_offset {
3588 return Ok(());
3589 }
3590
3591 while _next_ordinal_to_read < 1 {
3593 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3594 _next_ordinal_to_read += 1;
3595 next_offset += envelope_size;
3596 }
3597
3598 let next_out_of_line = decoder.next_out_of_line();
3599 let handles_before = decoder.remaining_handles();
3600 if let Some((inlined, num_bytes, num_handles)) =
3601 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3602 {
3603 let member_inline_size =
3604 <NudConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3605 if inlined != (member_inline_size <= 4) {
3606 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3607 }
3608 let inner_offset;
3609 let mut inner_depth = depth.clone();
3610 if inlined {
3611 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3612 inner_offset = next_offset;
3613 } else {
3614 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3615 inner_depth.increment()?;
3616 }
3617 let val_ref = self.nud.get_or_insert_with(|| fidl::new_empty!(NudConfiguration, D));
3618 fidl::decode!(NudConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
3619 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3620 {
3621 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3622 }
3623 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3624 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3625 }
3626 }
3627
3628 next_offset += envelope_size;
3629 _next_ordinal_to_read += 1;
3630 if next_offset >= end_offset {
3631 return Ok(());
3632 }
3633
3634 while _next_ordinal_to_read < 2 {
3636 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3637 _next_ordinal_to_read += 1;
3638 next_offset += envelope_size;
3639 }
3640
3641 let next_out_of_line = decoder.next_out_of_line();
3642 let handles_before = decoder.remaining_handles();
3643 if let Some((inlined, num_bytes, num_handles)) =
3644 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3645 {
3646 let member_inline_size =
3647 <DadConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3648 if inlined != (member_inline_size <= 4) {
3649 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3650 }
3651 let inner_offset;
3652 let mut inner_depth = depth.clone();
3653 if inlined {
3654 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3655 inner_offset = next_offset;
3656 } else {
3657 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3658 inner_depth.increment()?;
3659 }
3660 let val_ref = self.dad.get_or_insert_with(|| fidl::new_empty!(DadConfiguration, D));
3661 fidl::decode!(DadConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
3662 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3663 {
3664 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3665 }
3666 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3667 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3668 }
3669 }
3670
3671 next_offset += envelope_size;
3672
3673 while next_offset < end_offset {
3675 _next_ordinal_to_read += 1;
3676 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3677 next_offset += envelope_size;
3678 }
3679
3680 Ok(())
3681 }
3682 }
3683
3684 impl Configuration {
3685 #[inline(always)]
3686 fn max_ordinal_present(&self) -> u64 {
3687 if let Some(_) = self.ipv6 {
3688 return 2;
3689 }
3690 if let Some(_) = self.ipv4 {
3691 return 1;
3692 }
3693 0
3694 }
3695 }
3696
3697 impl fidl::encoding::ValueTypeMarker for Configuration {
3698 type Borrowed<'a> = &'a Self;
3699 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3700 value
3701 }
3702 }
3703
3704 unsafe impl fidl::encoding::TypeMarker for Configuration {
3705 type Owned = Self;
3706
3707 #[inline(always)]
3708 fn inline_align(_context: fidl::encoding::Context) -> usize {
3709 8
3710 }
3711
3712 #[inline(always)]
3713 fn inline_size(_context: fidl::encoding::Context) -> usize {
3714 16
3715 }
3716 }
3717
3718 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Configuration, D>
3719 for &Configuration
3720 {
3721 unsafe fn encode(
3722 self,
3723 encoder: &mut fidl::encoding::Encoder<'_, D>,
3724 offset: usize,
3725 mut depth: fidl::encoding::Depth,
3726 ) -> fidl::Result<()> {
3727 encoder.debug_check_bounds::<Configuration>(offset);
3728 let max_ordinal: u64 = self.max_ordinal_present();
3730 encoder.write_num(max_ordinal, offset);
3731 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3732 if max_ordinal == 0 {
3734 return Ok(());
3735 }
3736 depth.increment()?;
3737 let envelope_size = 8;
3738 let bytes_len = max_ordinal as usize * envelope_size;
3739 #[allow(unused_variables)]
3740 let offset = encoder.out_of_line_offset(bytes_len);
3741 let mut _prev_end_offset: usize = 0;
3742 if 1 > max_ordinal {
3743 return Ok(());
3744 }
3745
3746 let cur_offset: usize = (1 - 1) * envelope_size;
3749
3750 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3752
3753 fidl::encoding::encode_in_envelope_optional::<Ipv4Configuration, D>(
3758 self.ipv4
3759 .as_ref()
3760 .map(<Ipv4Configuration as fidl::encoding::ValueTypeMarker>::borrow),
3761 encoder,
3762 offset + cur_offset,
3763 depth,
3764 )?;
3765
3766 _prev_end_offset = cur_offset + envelope_size;
3767 if 2 > max_ordinal {
3768 return Ok(());
3769 }
3770
3771 let cur_offset: usize = (2 - 1) * envelope_size;
3774
3775 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3777
3778 fidl::encoding::encode_in_envelope_optional::<Ipv6Configuration, D>(
3783 self.ipv6
3784 .as_ref()
3785 .map(<Ipv6Configuration as fidl::encoding::ValueTypeMarker>::borrow),
3786 encoder,
3787 offset + cur_offset,
3788 depth,
3789 )?;
3790
3791 _prev_end_offset = cur_offset + envelope_size;
3792
3793 Ok(())
3794 }
3795 }
3796
3797 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Configuration {
3798 #[inline(always)]
3799 fn new_empty() -> Self {
3800 Self::default()
3801 }
3802
3803 unsafe fn decode(
3804 &mut self,
3805 decoder: &mut fidl::encoding::Decoder<'_, D>,
3806 offset: usize,
3807 mut depth: fidl::encoding::Depth,
3808 ) -> fidl::Result<()> {
3809 decoder.debug_check_bounds::<Self>(offset);
3810 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3811 None => return Err(fidl::Error::NotNullable),
3812 Some(len) => len,
3813 };
3814 if len == 0 {
3816 return Ok(());
3817 };
3818 depth.increment()?;
3819 let envelope_size = 8;
3820 let bytes_len = len * envelope_size;
3821 let offset = decoder.out_of_line_offset(bytes_len)?;
3822 let mut _next_ordinal_to_read = 0;
3824 let mut next_offset = offset;
3825 let end_offset = offset + bytes_len;
3826 _next_ordinal_to_read += 1;
3827 if next_offset >= end_offset {
3828 return Ok(());
3829 }
3830
3831 while _next_ordinal_to_read < 1 {
3833 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3834 _next_ordinal_to_read += 1;
3835 next_offset += envelope_size;
3836 }
3837
3838 let next_out_of_line = decoder.next_out_of_line();
3839 let handles_before = decoder.remaining_handles();
3840 if let Some((inlined, num_bytes, num_handles)) =
3841 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3842 {
3843 let member_inline_size =
3844 <Ipv4Configuration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3845 if inlined != (member_inline_size <= 4) {
3846 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3847 }
3848 let inner_offset;
3849 let mut inner_depth = depth.clone();
3850 if inlined {
3851 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3852 inner_offset = next_offset;
3853 } else {
3854 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3855 inner_depth.increment()?;
3856 }
3857 let val_ref =
3858 self.ipv4.get_or_insert_with(|| fidl::new_empty!(Ipv4Configuration, D));
3859 fidl::decode!(Ipv4Configuration, D, val_ref, decoder, inner_offset, inner_depth)?;
3860 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3861 {
3862 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3863 }
3864 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3865 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3866 }
3867 }
3868
3869 next_offset += envelope_size;
3870 _next_ordinal_to_read += 1;
3871 if next_offset >= end_offset {
3872 return Ok(());
3873 }
3874
3875 while _next_ordinal_to_read < 2 {
3877 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3878 _next_ordinal_to_read += 1;
3879 next_offset += envelope_size;
3880 }
3881
3882 let next_out_of_line = decoder.next_out_of_line();
3883 let handles_before = decoder.remaining_handles();
3884 if let Some((inlined, num_bytes, num_handles)) =
3885 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3886 {
3887 let member_inline_size =
3888 <Ipv6Configuration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3889 if inlined != (member_inline_size <= 4) {
3890 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3891 }
3892 let inner_offset;
3893 let mut inner_depth = depth.clone();
3894 if inlined {
3895 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3896 inner_offset = next_offset;
3897 } else {
3898 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3899 inner_depth.increment()?;
3900 }
3901 let val_ref =
3902 self.ipv6.get_or_insert_with(|| fidl::new_empty!(Ipv6Configuration, D));
3903 fidl::decode!(Ipv6Configuration, D, val_ref, decoder, inner_offset, inner_depth)?;
3904 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3905 {
3906 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3907 }
3908 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3909 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3910 }
3911 }
3912
3913 next_offset += envelope_size;
3914
3915 while next_offset < end_offset {
3917 _next_ordinal_to_read += 1;
3918 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3919 next_offset += envelope_size;
3920 }
3921
3922 Ok(())
3923 }
3924 }
3925
3926 impl DadConfiguration {
3927 #[inline(always)]
3928 fn max_ordinal_present(&self) -> u64 {
3929 if let Some(_) = self.transmits {
3930 return 1;
3931 }
3932 0
3933 }
3934 }
3935
3936 impl fidl::encoding::ValueTypeMarker for DadConfiguration {
3937 type Borrowed<'a> = &'a Self;
3938 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3939 value
3940 }
3941 }
3942
3943 unsafe impl fidl::encoding::TypeMarker for DadConfiguration {
3944 type Owned = Self;
3945
3946 #[inline(always)]
3947 fn inline_align(_context: fidl::encoding::Context) -> usize {
3948 8
3949 }
3950
3951 #[inline(always)]
3952 fn inline_size(_context: fidl::encoding::Context) -> usize {
3953 16
3954 }
3955 }
3956
3957 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DadConfiguration, D>
3958 for &DadConfiguration
3959 {
3960 unsafe fn encode(
3961 self,
3962 encoder: &mut fidl::encoding::Encoder<'_, D>,
3963 offset: usize,
3964 mut depth: fidl::encoding::Depth,
3965 ) -> fidl::Result<()> {
3966 encoder.debug_check_bounds::<DadConfiguration>(offset);
3967 let max_ordinal: u64 = self.max_ordinal_present();
3969 encoder.write_num(max_ordinal, offset);
3970 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3971 if max_ordinal == 0 {
3973 return Ok(());
3974 }
3975 depth.increment()?;
3976 let envelope_size = 8;
3977 let bytes_len = max_ordinal as usize * envelope_size;
3978 #[allow(unused_variables)]
3979 let offset = encoder.out_of_line_offset(bytes_len);
3980 let mut _prev_end_offset: usize = 0;
3981 if 1 > max_ordinal {
3982 return Ok(());
3983 }
3984
3985 let cur_offset: usize = (1 - 1) * envelope_size;
3988
3989 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3991
3992 fidl::encoding::encode_in_envelope_optional::<u16, D>(
3997 self.transmits.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3998 encoder,
3999 offset + cur_offset,
4000 depth,
4001 )?;
4002
4003 _prev_end_offset = cur_offset + envelope_size;
4004
4005 Ok(())
4006 }
4007 }
4008
4009 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DadConfiguration {
4010 #[inline(always)]
4011 fn new_empty() -> Self {
4012 Self::default()
4013 }
4014
4015 unsafe fn decode(
4016 &mut self,
4017 decoder: &mut fidl::encoding::Decoder<'_, D>,
4018 offset: usize,
4019 mut depth: fidl::encoding::Depth,
4020 ) -> fidl::Result<()> {
4021 decoder.debug_check_bounds::<Self>(offset);
4022 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4023 None => return Err(fidl::Error::NotNullable),
4024 Some(len) => len,
4025 };
4026 if len == 0 {
4028 return Ok(());
4029 };
4030 depth.increment()?;
4031 let envelope_size = 8;
4032 let bytes_len = len * envelope_size;
4033 let offset = decoder.out_of_line_offset(bytes_len)?;
4034 let mut _next_ordinal_to_read = 0;
4036 let mut next_offset = offset;
4037 let end_offset = offset + bytes_len;
4038 _next_ordinal_to_read += 1;
4039 if next_offset >= end_offset {
4040 return Ok(());
4041 }
4042
4043 while _next_ordinal_to_read < 1 {
4045 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4046 _next_ordinal_to_read += 1;
4047 next_offset += envelope_size;
4048 }
4049
4050 let next_out_of_line = decoder.next_out_of_line();
4051 let handles_before = decoder.remaining_handles();
4052 if let Some((inlined, num_bytes, num_handles)) =
4053 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4054 {
4055 let member_inline_size =
4056 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4057 if inlined != (member_inline_size <= 4) {
4058 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4059 }
4060 let inner_offset;
4061 let mut inner_depth = depth.clone();
4062 if inlined {
4063 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4064 inner_offset = next_offset;
4065 } else {
4066 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4067 inner_depth.increment()?;
4068 }
4069 let val_ref = self.transmits.get_or_insert_with(|| fidl::new_empty!(u16, D));
4070 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4071 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4072 {
4073 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4074 }
4075 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4076 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4077 }
4078 }
4079
4080 next_offset += envelope_size;
4081
4082 while next_offset < end_offset {
4084 _next_ordinal_to_read += 1;
4085 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4086 next_offset += envelope_size;
4087 }
4088
4089 Ok(())
4090 }
4091 }
4092
4093 impl IgmpConfiguration {
4094 #[inline(always)]
4095 fn max_ordinal_present(&self) -> u64 {
4096 if let Some(_) = self.version {
4097 return 1;
4098 }
4099 0
4100 }
4101 }
4102
4103 impl fidl::encoding::ValueTypeMarker for IgmpConfiguration {
4104 type Borrowed<'a> = &'a Self;
4105 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4106 value
4107 }
4108 }
4109
4110 unsafe impl fidl::encoding::TypeMarker for IgmpConfiguration {
4111 type Owned = Self;
4112
4113 #[inline(always)]
4114 fn inline_align(_context: fidl::encoding::Context) -> usize {
4115 8
4116 }
4117
4118 #[inline(always)]
4119 fn inline_size(_context: fidl::encoding::Context) -> usize {
4120 16
4121 }
4122 }
4123
4124 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<IgmpConfiguration, D>
4125 for &IgmpConfiguration
4126 {
4127 unsafe fn encode(
4128 self,
4129 encoder: &mut fidl::encoding::Encoder<'_, D>,
4130 offset: usize,
4131 mut depth: fidl::encoding::Depth,
4132 ) -> fidl::Result<()> {
4133 encoder.debug_check_bounds::<IgmpConfiguration>(offset);
4134 let max_ordinal: u64 = self.max_ordinal_present();
4136 encoder.write_num(max_ordinal, offset);
4137 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4138 if max_ordinal == 0 {
4140 return Ok(());
4141 }
4142 depth.increment()?;
4143 let envelope_size = 8;
4144 let bytes_len = max_ordinal as usize * envelope_size;
4145 #[allow(unused_variables)]
4146 let offset = encoder.out_of_line_offset(bytes_len);
4147 let mut _prev_end_offset: usize = 0;
4148 if 1 > max_ordinal {
4149 return Ok(());
4150 }
4151
4152 let cur_offset: usize = (1 - 1) * envelope_size;
4155
4156 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4158
4159 fidl::encoding::encode_in_envelope_optional::<IgmpVersion, D>(
4164 self.version.as_ref().map(<IgmpVersion as fidl::encoding::ValueTypeMarker>::borrow),
4165 encoder,
4166 offset + cur_offset,
4167 depth,
4168 )?;
4169
4170 _prev_end_offset = cur_offset + envelope_size;
4171
4172 Ok(())
4173 }
4174 }
4175
4176 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IgmpConfiguration {
4177 #[inline(always)]
4178 fn new_empty() -> Self {
4179 Self::default()
4180 }
4181
4182 unsafe fn decode(
4183 &mut self,
4184 decoder: &mut fidl::encoding::Decoder<'_, D>,
4185 offset: usize,
4186 mut depth: fidl::encoding::Depth,
4187 ) -> fidl::Result<()> {
4188 decoder.debug_check_bounds::<Self>(offset);
4189 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4190 None => return Err(fidl::Error::NotNullable),
4191 Some(len) => len,
4192 };
4193 if len == 0 {
4195 return Ok(());
4196 };
4197 depth.increment()?;
4198 let envelope_size = 8;
4199 let bytes_len = len * envelope_size;
4200 let offset = decoder.out_of_line_offset(bytes_len)?;
4201 let mut _next_ordinal_to_read = 0;
4203 let mut next_offset = offset;
4204 let end_offset = offset + bytes_len;
4205 _next_ordinal_to_read += 1;
4206 if next_offset >= end_offset {
4207 return Ok(());
4208 }
4209
4210 while _next_ordinal_to_read < 1 {
4212 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4213 _next_ordinal_to_read += 1;
4214 next_offset += envelope_size;
4215 }
4216
4217 let next_out_of_line = decoder.next_out_of_line();
4218 let handles_before = decoder.remaining_handles();
4219 if let Some((inlined, num_bytes, num_handles)) =
4220 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4221 {
4222 let member_inline_size =
4223 <IgmpVersion as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4224 if inlined != (member_inline_size <= 4) {
4225 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4226 }
4227 let inner_offset;
4228 let mut inner_depth = depth.clone();
4229 if inlined {
4230 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4231 inner_offset = next_offset;
4232 } else {
4233 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4234 inner_depth.increment()?;
4235 }
4236 let val_ref = self.version.get_or_insert_with(|| fidl::new_empty!(IgmpVersion, D));
4237 fidl::decode!(IgmpVersion, D, val_ref, decoder, inner_offset, inner_depth)?;
4238 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4239 {
4240 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4241 }
4242 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4243 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4244 }
4245 }
4246
4247 next_offset += envelope_size;
4248
4249 while next_offset < end_offset {
4251 _next_ordinal_to_read += 1;
4252 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4253 next_offset += envelope_size;
4254 }
4255
4256 Ok(())
4257 }
4258 }
4259
4260 impl Ipv4Configuration {
4261 #[inline(always)]
4262 fn max_ordinal_present(&self) -> u64 {
4263 if let Some(_) = self.arp {
4264 return 4;
4265 }
4266 if let Some(_) = self.igmp {
4267 return 3;
4268 }
4269 if let Some(_) = self.multicast_forwarding {
4270 return 2;
4271 }
4272 if let Some(_) = self.unicast_forwarding {
4273 return 1;
4274 }
4275 0
4276 }
4277 }
4278
4279 impl fidl::encoding::ValueTypeMarker for Ipv4Configuration {
4280 type Borrowed<'a> = &'a Self;
4281 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4282 value
4283 }
4284 }
4285
4286 unsafe impl fidl::encoding::TypeMarker for Ipv4Configuration {
4287 type Owned = Self;
4288
4289 #[inline(always)]
4290 fn inline_align(_context: fidl::encoding::Context) -> usize {
4291 8
4292 }
4293
4294 #[inline(always)]
4295 fn inline_size(_context: fidl::encoding::Context) -> usize {
4296 16
4297 }
4298 }
4299
4300 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Ipv4Configuration, D>
4301 for &Ipv4Configuration
4302 {
4303 unsafe fn encode(
4304 self,
4305 encoder: &mut fidl::encoding::Encoder<'_, D>,
4306 offset: usize,
4307 mut depth: fidl::encoding::Depth,
4308 ) -> fidl::Result<()> {
4309 encoder.debug_check_bounds::<Ipv4Configuration>(offset);
4310 let max_ordinal: u64 = self.max_ordinal_present();
4312 encoder.write_num(max_ordinal, offset);
4313 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4314 if max_ordinal == 0 {
4316 return Ok(());
4317 }
4318 depth.increment()?;
4319 let envelope_size = 8;
4320 let bytes_len = max_ordinal as usize * envelope_size;
4321 #[allow(unused_variables)]
4322 let offset = encoder.out_of_line_offset(bytes_len);
4323 let mut _prev_end_offset: usize = 0;
4324 if 1 > max_ordinal {
4325 return Ok(());
4326 }
4327
4328 let cur_offset: usize = (1 - 1) * envelope_size;
4331
4332 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4334
4335 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4340 self.unicast_forwarding
4341 .as_ref()
4342 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4343 encoder,
4344 offset + cur_offset,
4345 depth,
4346 )?;
4347
4348 _prev_end_offset = cur_offset + envelope_size;
4349 if 2 > max_ordinal {
4350 return Ok(());
4351 }
4352
4353 let cur_offset: usize = (2 - 1) * envelope_size;
4356
4357 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4359
4360 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4365 self.multicast_forwarding
4366 .as_ref()
4367 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4368 encoder,
4369 offset + cur_offset,
4370 depth,
4371 )?;
4372
4373 _prev_end_offset = cur_offset + envelope_size;
4374 if 3 > max_ordinal {
4375 return Ok(());
4376 }
4377
4378 let cur_offset: usize = (3 - 1) * envelope_size;
4381
4382 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4384
4385 fidl::encoding::encode_in_envelope_optional::<IgmpConfiguration, D>(
4390 self.igmp
4391 .as_ref()
4392 .map(<IgmpConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
4393 encoder,
4394 offset + cur_offset,
4395 depth,
4396 )?;
4397
4398 _prev_end_offset = cur_offset + envelope_size;
4399 if 4 > max_ordinal {
4400 return Ok(());
4401 }
4402
4403 let cur_offset: usize = (4 - 1) * envelope_size;
4406
4407 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4409
4410 fidl::encoding::encode_in_envelope_optional::<ArpConfiguration, D>(
4415 self.arp
4416 .as_ref()
4417 .map(<ArpConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
4418 encoder,
4419 offset + cur_offset,
4420 depth,
4421 )?;
4422
4423 _prev_end_offset = cur_offset + envelope_size;
4424
4425 Ok(())
4426 }
4427 }
4428
4429 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Ipv4Configuration {
4430 #[inline(always)]
4431 fn new_empty() -> Self {
4432 Self::default()
4433 }
4434
4435 unsafe fn decode(
4436 &mut self,
4437 decoder: &mut fidl::encoding::Decoder<'_, D>,
4438 offset: usize,
4439 mut depth: fidl::encoding::Depth,
4440 ) -> fidl::Result<()> {
4441 decoder.debug_check_bounds::<Self>(offset);
4442 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4443 None => return Err(fidl::Error::NotNullable),
4444 Some(len) => len,
4445 };
4446 if len == 0 {
4448 return Ok(());
4449 };
4450 depth.increment()?;
4451 let envelope_size = 8;
4452 let bytes_len = len * envelope_size;
4453 let offset = decoder.out_of_line_offset(bytes_len)?;
4454 let mut _next_ordinal_to_read = 0;
4456 let mut next_offset = offset;
4457 let end_offset = offset + bytes_len;
4458 _next_ordinal_to_read += 1;
4459 if next_offset >= end_offset {
4460 return Ok(());
4461 }
4462
4463 while _next_ordinal_to_read < 1 {
4465 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4466 _next_ordinal_to_read += 1;
4467 next_offset += envelope_size;
4468 }
4469
4470 let next_out_of_line = decoder.next_out_of_line();
4471 let handles_before = decoder.remaining_handles();
4472 if let Some((inlined, num_bytes, num_handles)) =
4473 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4474 {
4475 let member_inline_size =
4476 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4477 if inlined != (member_inline_size <= 4) {
4478 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4479 }
4480 let inner_offset;
4481 let mut inner_depth = depth.clone();
4482 if inlined {
4483 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4484 inner_offset = next_offset;
4485 } else {
4486 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4487 inner_depth.increment()?;
4488 }
4489 let val_ref =
4490 self.unicast_forwarding.get_or_insert_with(|| fidl::new_empty!(bool, D));
4491 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4492 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4493 {
4494 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4495 }
4496 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4497 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4498 }
4499 }
4500
4501 next_offset += envelope_size;
4502 _next_ordinal_to_read += 1;
4503 if next_offset >= end_offset {
4504 return Ok(());
4505 }
4506
4507 while _next_ordinal_to_read < 2 {
4509 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4510 _next_ordinal_to_read += 1;
4511 next_offset += envelope_size;
4512 }
4513
4514 let next_out_of_line = decoder.next_out_of_line();
4515 let handles_before = decoder.remaining_handles();
4516 if let Some((inlined, num_bytes, num_handles)) =
4517 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4518 {
4519 let member_inline_size =
4520 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4521 if inlined != (member_inline_size <= 4) {
4522 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4523 }
4524 let inner_offset;
4525 let mut inner_depth = depth.clone();
4526 if inlined {
4527 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4528 inner_offset = next_offset;
4529 } else {
4530 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4531 inner_depth.increment()?;
4532 }
4533 let val_ref =
4534 self.multicast_forwarding.get_or_insert_with(|| fidl::new_empty!(bool, D));
4535 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4536 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4537 {
4538 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4539 }
4540 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4541 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4542 }
4543 }
4544
4545 next_offset += envelope_size;
4546 _next_ordinal_to_read += 1;
4547 if next_offset >= end_offset {
4548 return Ok(());
4549 }
4550
4551 while _next_ordinal_to_read < 3 {
4553 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4554 _next_ordinal_to_read += 1;
4555 next_offset += envelope_size;
4556 }
4557
4558 let next_out_of_line = decoder.next_out_of_line();
4559 let handles_before = decoder.remaining_handles();
4560 if let Some((inlined, num_bytes, num_handles)) =
4561 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4562 {
4563 let member_inline_size =
4564 <IgmpConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4565 if inlined != (member_inline_size <= 4) {
4566 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4567 }
4568 let inner_offset;
4569 let mut inner_depth = depth.clone();
4570 if inlined {
4571 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4572 inner_offset = next_offset;
4573 } else {
4574 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4575 inner_depth.increment()?;
4576 }
4577 let val_ref =
4578 self.igmp.get_or_insert_with(|| fidl::new_empty!(IgmpConfiguration, D));
4579 fidl::decode!(IgmpConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
4580 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4581 {
4582 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4583 }
4584 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4585 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4586 }
4587 }
4588
4589 next_offset += envelope_size;
4590 _next_ordinal_to_read += 1;
4591 if next_offset >= end_offset {
4592 return Ok(());
4593 }
4594
4595 while _next_ordinal_to_read < 4 {
4597 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4598 _next_ordinal_to_read += 1;
4599 next_offset += envelope_size;
4600 }
4601
4602 let next_out_of_line = decoder.next_out_of_line();
4603 let handles_before = decoder.remaining_handles();
4604 if let Some((inlined, num_bytes, num_handles)) =
4605 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4606 {
4607 let member_inline_size =
4608 <ArpConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4609 if inlined != (member_inline_size <= 4) {
4610 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4611 }
4612 let inner_offset;
4613 let mut inner_depth = depth.clone();
4614 if inlined {
4615 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4616 inner_offset = next_offset;
4617 } else {
4618 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4619 inner_depth.increment()?;
4620 }
4621 let val_ref = self.arp.get_or_insert_with(|| fidl::new_empty!(ArpConfiguration, D));
4622 fidl::decode!(ArpConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
4623 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4624 {
4625 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4626 }
4627 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4628 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4629 }
4630 }
4631
4632 next_offset += envelope_size;
4633
4634 while next_offset < end_offset {
4636 _next_ordinal_to_read += 1;
4637 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4638 next_offset += envelope_size;
4639 }
4640
4641 Ok(())
4642 }
4643 }
4644
4645 impl Ipv6Configuration {
4646 #[inline(always)]
4647 fn max_ordinal_present(&self) -> u64 {
4648 if let Some(_) = self.ndp {
4649 return 4;
4650 }
4651 if let Some(_) = self.mld {
4652 return 3;
4653 }
4654 if let Some(_) = self.multicast_forwarding {
4655 return 2;
4656 }
4657 if let Some(_) = self.unicast_forwarding {
4658 return 1;
4659 }
4660 0
4661 }
4662 }
4663
4664 impl fidl::encoding::ValueTypeMarker for Ipv6Configuration {
4665 type Borrowed<'a> = &'a Self;
4666 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4667 value
4668 }
4669 }
4670
4671 unsafe impl fidl::encoding::TypeMarker for Ipv6Configuration {
4672 type Owned = Self;
4673
4674 #[inline(always)]
4675 fn inline_align(_context: fidl::encoding::Context) -> usize {
4676 8
4677 }
4678
4679 #[inline(always)]
4680 fn inline_size(_context: fidl::encoding::Context) -> usize {
4681 16
4682 }
4683 }
4684
4685 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Ipv6Configuration, D>
4686 for &Ipv6Configuration
4687 {
4688 unsafe fn encode(
4689 self,
4690 encoder: &mut fidl::encoding::Encoder<'_, D>,
4691 offset: usize,
4692 mut depth: fidl::encoding::Depth,
4693 ) -> fidl::Result<()> {
4694 encoder.debug_check_bounds::<Ipv6Configuration>(offset);
4695 let max_ordinal: u64 = self.max_ordinal_present();
4697 encoder.write_num(max_ordinal, offset);
4698 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4699 if max_ordinal == 0 {
4701 return Ok(());
4702 }
4703 depth.increment()?;
4704 let envelope_size = 8;
4705 let bytes_len = max_ordinal as usize * envelope_size;
4706 #[allow(unused_variables)]
4707 let offset = encoder.out_of_line_offset(bytes_len);
4708 let mut _prev_end_offset: usize = 0;
4709 if 1 > max_ordinal {
4710 return Ok(());
4711 }
4712
4713 let cur_offset: usize = (1 - 1) * envelope_size;
4716
4717 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4719
4720 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4725 self.unicast_forwarding
4726 .as_ref()
4727 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4728 encoder,
4729 offset + cur_offset,
4730 depth,
4731 )?;
4732
4733 _prev_end_offset = cur_offset + envelope_size;
4734 if 2 > max_ordinal {
4735 return Ok(());
4736 }
4737
4738 let cur_offset: usize = (2 - 1) * envelope_size;
4741
4742 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4744
4745 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4750 self.multicast_forwarding
4751 .as_ref()
4752 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4753 encoder,
4754 offset + cur_offset,
4755 depth,
4756 )?;
4757
4758 _prev_end_offset = cur_offset + envelope_size;
4759 if 3 > max_ordinal {
4760 return Ok(());
4761 }
4762
4763 let cur_offset: usize = (3 - 1) * envelope_size;
4766
4767 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4769
4770 fidl::encoding::encode_in_envelope_optional::<MldConfiguration, D>(
4775 self.mld
4776 .as_ref()
4777 .map(<MldConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
4778 encoder,
4779 offset + cur_offset,
4780 depth,
4781 )?;
4782
4783 _prev_end_offset = cur_offset + envelope_size;
4784 if 4 > max_ordinal {
4785 return Ok(());
4786 }
4787
4788 let cur_offset: usize = (4 - 1) * envelope_size;
4791
4792 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4794
4795 fidl::encoding::encode_in_envelope_optional::<NdpConfiguration, D>(
4800 self.ndp
4801 .as_ref()
4802 .map(<NdpConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
4803 encoder,
4804 offset + cur_offset,
4805 depth,
4806 )?;
4807
4808 _prev_end_offset = cur_offset + envelope_size;
4809
4810 Ok(())
4811 }
4812 }
4813
4814 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Ipv6Configuration {
4815 #[inline(always)]
4816 fn new_empty() -> Self {
4817 Self::default()
4818 }
4819
4820 unsafe fn decode(
4821 &mut self,
4822 decoder: &mut fidl::encoding::Decoder<'_, D>,
4823 offset: usize,
4824 mut depth: fidl::encoding::Depth,
4825 ) -> fidl::Result<()> {
4826 decoder.debug_check_bounds::<Self>(offset);
4827 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4828 None => return Err(fidl::Error::NotNullable),
4829 Some(len) => len,
4830 };
4831 if len == 0 {
4833 return Ok(());
4834 };
4835 depth.increment()?;
4836 let envelope_size = 8;
4837 let bytes_len = len * envelope_size;
4838 let offset = decoder.out_of_line_offset(bytes_len)?;
4839 let mut _next_ordinal_to_read = 0;
4841 let mut next_offset = offset;
4842 let end_offset = offset + bytes_len;
4843 _next_ordinal_to_read += 1;
4844 if next_offset >= end_offset {
4845 return Ok(());
4846 }
4847
4848 while _next_ordinal_to_read < 1 {
4850 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4851 _next_ordinal_to_read += 1;
4852 next_offset += envelope_size;
4853 }
4854
4855 let next_out_of_line = decoder.next_out_of_line();
4856 let handles_before = decoder.remaining_handles();
4857 if let Some((inlined, num_bytes, num_handles)) =
4858 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4859 {
4860 let member_inline_size =
4861 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4862 if inlined != (member_inline_size <= 4) {
4863 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4864 }
4865 let inner_offset;
4866 let mut inner_depth = depth.clone();
4867 if inlined {
4868 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4869 inner_offset = next_offset;
4870 } else {
4871 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4872 inner_depth.increment()?;
4873 }
4874 let val_ref =
4875 self.unicast_forwarding.get_or_insert_with(|| fidl::new_empty!(bool, D));
4876 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4877 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4878 {
4879 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4880 }
4881 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4882 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4883 }
4884 }
4885
4886 next_offset += envelope_size;
4887 _next_ordinal_to_read += 1;
4888 if next_offset >= end_offset {
4889 return Ok(());
4890 }
4891
4892 while _next_ordinal_to_read < 2 {
4894 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4895 _next_ordinal_to_read += 1;
4896 next_offset += envelope_size;
4897 }
4898
4899 let next_out_of_line = decoder.next_out_of_line();
4900 let handles_before = decoder.remaining_handles();
4901 if let Some((inlined, num_bytes, num_handles)) =
4902 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4903 {
4904 let member_inline_size =
4905 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4906 if inlined != (member_inline_size <= 4) {
4907 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4908 }
4909 let inner_offset;
4910 let mut inner_depth = depth.clone();
4911 if inlined {
4912 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4913 inner_offset = next_offset;
4914 } else {
4915 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4916 inner_depth.increment()?;
4917 }
4918 let val_ref =
4919 self.multicast_forwarding.get_or_insert_with(|| fidl::new_empty!(bool, D));
4920 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4921 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4922 {
4923 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4924 }
4925 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4926 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4927 }
4928 }
4929
4930 next_offset += envelope_size;
4931 _next_ordinal_to_read += 1;
4932 if next_offset >= end_offset {
4933 return Ok(());
4934 }
4935
4936 while _next_ordinal_to_read < 3 {
4938 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4939 _next_ordinal_to_read += 1;
4940 next_offset += envelope_size;
4941 }
4942
4943 let next_out_of_line = decoder.next_out_of_line();
4944 let handles_before = decoder.remaining_handles();
4945 if let Some((inlined, num_bytes, num_handles)) =
4946 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4947 {
4948 let member_inline_size =
4949 <MldConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4950 if inlined != (member_inline_size <= 4) {
4951 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4952 }
4953 let inner_offset;
4954 let mut inner_depth = depth.clone();
4955 if inlined {
4956 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4957 inner_offset = next_offset;
4958 } else {
4959 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4960 inner_depth.increment()?;
4961 }
4962 let val_ref = self.mld.get_or_insert_with(|| fidl::new_empty!(MldConfiguration, D));
4963 fidl::decode!(MldConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
4964 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4965 {
4966 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4967 }
4968 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4969 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4970 }
4971 }
4972
4973 next_offset += envelope_size;
4974 _next_ordinal_to_read += 1;
4975 if next_offset >= end_offset {
4976 return Ok(());
4977 }
4978
4979 while _next_ordinal_to_read < 4 {
4981 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4982 _next_ordinal_to_read += 1;
4983 next_offset += envelope_size;
4984 }
4985
4986 let next_out_of_line = decoder.next_out_of_line();
4987 let handles_before = decoder.remaining_handles();
4988 if let Some((inlined, num_bytes, num_handles)) =
4989 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4990 {
4991 let member_inline_size =
4992 <NdpConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4993 if inlined != (member_inline_size <= 4) {
4994 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4995 }
4996 let inner_offset;
4997 let mut inner_depth = depth.clone();
4998 if inlined {
4999 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5000 inner_offset = next_offset;
5001 } else {
5002 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5003 inner_depth.increment()?;
5004 }
5005 let val_ref = self.ndp.get_or_insert_with(|| fidl::new_empty!(NdpConfiguration, D));
5006 fidl::decode!(NdpConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
5007 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5008 {
5009 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5010 }
5011 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5012 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5013 }
5014 }
5015
5016 next_offset += envelope_size;
5017
5018 while next_offset < end_offset {
5020 _next_ordinal_to_read += 1;
5021 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5022 next_offset += envelope_size;
5023 }
5024
5025 Ok(())
5026 }
5027 }
5028
5029 impl MldConfiguration {
5030 #[inline(always)]
5031 fn max_ordinal_present(&self) -> u64 {
5032 if let Some(_) = self.version {
5033 return 1;
5034 }
5035 0
5036 }
5037 }
5038
5039 impl fidl::encoding::ValueTypeMarker for MldConfiguration {
5040 type Borrowed<'a> = &'a Self;
5041 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5042 value
5043 }
5044 }
5045
5046 unsafe impl fidl::encoding::TypeMarker for MldConfiguration {
5047 type Owned = Self;
5048
5049 #[inline(always)]
5050 fn inline_align(_context: fidl::encoding::Context) -> usize {
5051 8
5052 }
5053
5054 #[inline(always)]
5055 fn inline_size(_context: fidl::encoding::Context) -> usize {
5056 16
5057 }
5058 }
5059
5060 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MldConfiguration, D>
5061 for &MldConfiguration
5062 {
5063 unsafe fn encode(
5064 self,
5065 encoder: &mut fidl::encoding::Encoder<'_, D>,
5066 offset: usize,
5067 mut depth: fidl::encoding::Depth,
5068 ) -> fidl::Result<()> {
5069 encoder.debug_check_bounds::<MldConfiguration>(offset);
5070 let max_ordinal: u64 = self.max_ordinal_present();
5072 encoder.write_num(max_ordinal, offset);
5073 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5074 if max_ordinal == 0 {
5076 return Ok(());
5077 }
5078 depth.increment()?;
5079 let envelope_size = 8;
5080 let bytes_len = max_ordinal as usize * envelope_size;
5081 #[allow(unused_variables)]
5082 let offset = encoder.out_of_line_offset(bytes_len);
5083 let mut _prev_end_offset: usize = 0;
5084 if 1 > max_ordinal {
5085 return Ok(());
5086 }
5087
5088 let cur_offset: usize = (1 - 1) * envelope_size;
5091
5092 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5094
5095 fidl::encoding::encode_in_envelope_optional::<MldVersion, D>(
5100 self.version.as_ref().map(<MldVersion as fidl::encoding::ValueTypeMarker>::borrow),
5101 encoder,
5102 offset + cur_offset,
5103 depth,
5104 )?;
5105
5106 _prev_end_offset = cur_offset + envelope_size;
5107
5108 Ok(())
5109 }
5110 }
5111
5112 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MldConfiguration {
5113 #[inline(always)]
5114 fn new_empty() -> Self {
5115 Self::default()
5116 }
5117
5118 unsafe fn decode(
5119 &mut self,
5120 decoder: &mut fidl::encoding::Decoder<'_, D>,
5121 offset: usize,
5122 mut depth: fidl::encoding::Depth,
5123 ) -> fidl::Result<()> {
5124 decoder.debug_check_bounds::<Self>(offset);
5125 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5126 None => return Err(fidl::Error::NotNullable),
5127 Some(len) => len,
5128 };
5129 if len == 0 {
5131 return Ok(());
5132 };
5133 depth.increment()?;
5134 let envelope_size = 8;
5135 let bytes_len = len * envelope_size;
5136 let offset = decoder.out_of_line_offset(bytes_len)?;
5137 let mut _next_ordinal_to_read = 0;
5139 let mut next_offset = offset;
5140 let end_offset = offset + bytes_len;
5141 _next_ordinal_to_read += 1;
5142 if next_offset >= end_offset {
5143 return Ok(());
5144 }
5145
5146 while _next_ordinal_to_read < 1 {
5148 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5149 _next_ordinal_to_read += 1;
5150 next_offset += envelope_size;
5151 }
5152
5153 let next_out_of_line = decoder.next_out_of_line();
5154 let handles_before = decoder.remaining_handles();
5155 if let Some((inlined, num_bytes, num_handles)) =
5156 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5157 {
5158 let member_inline_size =
5159 <MldVersion as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5160 if inlined != (member_inline_size <= 4) {
5161 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5162 }
5163 let inner_offset;
5164 let mut inner_depth = depth.clone();
5165 if inlined {
5166 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5167 inner_offset = next_offset;
5168 } else {
5169 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5170 inner_depth.increment()?;
5171 }
5172 let val_ref = self.version.get_or_insert_with(|| fidl::new_empty!(MldVersion, D));
5173 fidl::decode!(MldVersion, D, val_ref, decoder, inner_offset, inner_depth)?;
5174 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5175 {
5176 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5177 }
5178 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5179 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5180 }
5181 }
5182
5183 next_offset += envelope_size;
5184
5185 while next_offset < end_offset {
5187 _next_ordinal_to_read += 1;
5188 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5189 next_offset += envelope_size;
5190 }
5191
5192 Ok(())
5193 }
5194 }
5195
5196 impl NdpConfiguration {
5197 #[inline(always)]
5198 fn max_ordinal_present(&self) -> u64 {
5199 if let Some(_) = self.slaac {
5200 return 3;
5201 }
5202 if let Some(_) = self.dad {
5203 return 2;
5204 }
5205 if let Some(_) = self.nud {
5206 return 1;
5207 }
5208 0
5209 }
5210 }
5211
5212 impl fidl::encoding::ValueTypeMarker for NdpConfiguration {
5213 type Borrowed<'a> = &'a Self;
5214 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5215 value
5216 }
5217 }
5218
5219 unsafe impl fidl::encoding::TypeMarker for NdpConfiguration {
5220 type Owned = Self;
5221
5222 #[inline(always)]
5223 fn inline_align(_context: fidl::encoding::Context) -> usize {
5224 8
5225 }
5226
5227 #[inline(always)]
5228 fn inline_size(_context: fidl::encoding::Context) -> usize {
5229 16
5230 }
5231 }
5232
5233 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NdpConfiguration, D>
5234 for &NdpConfiguration
5235 {
5236 unsafe fn encode(
5237 self,
5238 encoder: &mut fidl::encoding::Encoder<'_, D>,
5239 offset: usize,
5240 mut depth: fidl::encoding::Depth,
5241 ) -> fidl::Result<()> {
5242 encoder.debug_check_bounds::<NdpConfiguration>(offset);
5243 let max_ordinal: u64 = self.max_ordinal_present();
5245 encoder.write_num(max_ordinal, offset);
5246 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5247 if max_ordinal == 0 {
5249 return Ok(());
5250 }
5251 depth.increment()?;
5252 let envelope_size = 8;
5253 let bytes_len = max_ordinal as usize * envelope_size;
5254 #[allow(unused_variables)]
5255 let offset = encoder.out_of_line_offset(bytes_len);
5256 let mut _prev_end_offset: usize = 0;
5257 if 1 > max_ordinal {
5258 return Ok(());
5259 }
5260
5261 let cur_offset: usize = (1 - 1) * envelope_size;
5264
5265 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5267
5268 fidl::encoding::encode_in_envelope_optional::<NudConfiguration, D>(
5273 self.nud
5274 .as_ref()
5275 .map(<NudConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
5276 encoder,
5277 offset + cur_offset,
5278 depth,
5279 )?;
5280
5281 _prev_end_offset = cur_offset + envelope_size;
5282 if 2 > max_ordinal {
5283 return Ok(());
5284 }
5285
5286 let cur_offset: usize = (2 - 1) * envelope_size;
5289
5290 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5292
5293 fidl::encoding::encode_in_envelope_optional::<DadConfiguration, D>(
5298 self.dad
5299 .as_ref()
5300 .map(<DadConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
5301 encoder,
5302 offset + cur_offset,
5303 depth,
5304 )?;
5305
5306 _prev_end_offset = cur_offset + envelope_size;
5307 if 3 > max_ordinal {
5308 return Ok(());
5309 }
5310
5311 let cur_offset: usize = (3 - 1) * envelope_size;
5314
5315 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5317
5318 fidl::encoding::encode_in_envelope_optional::<SlaacConfiguration, D>(
5323 self.slaac
5324 .as_ref()
5325 .map(<SlaacConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
5326 encoder,
5327 offset + cur_offset,
5328 depth,
5329 )?;
5330
5331 _prev_end_offset = cur_offset + envelope_size;
5332
5333 Ok(())
5334 }
5335 }
5336
5337 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NdpConfiguration {
5338 #[inline(always)]
5339 fn new_empty() -> Self {
5340 Self::default()
5341 }
5342
5343 unsafe fn decode(
5344 &mut self,
5345 decoder: &mut fidl::encoding::Decoder<'_, D>,
5346 offset: usize,
5347 mut depth: fidl::encoding::Depth,
5348 ) -> fidl::Result<()> {
5349 decoder.debug_check_bounds::<Self>(offset);
5350 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5351 None => return Err(fidl::Error::NotNullable),
5352 Some(len) => len,
5353 };
5354 if len == 0 {
5356 return Ok(());
5357 };
5358 depth.increment()?;
5359 let envelope_size = 8;
5360 let bytes_len = len * envelope_size;
5361 let offset = decoder.out_of_line_offset(bytes_len)?;
5362 let mut _next_ordinal_to_read = 0;
5364 let mut next_offset = offset;
5365 let end_offset = offset + bytes_len;
5366 _next_ordinal_to_read += 1;
5367 if next_offset >= end_offset {
5368 return Ok(());
5369 }
5370
5371 while _next_ordinal_to_read < 1 {
5373 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5374 _next_ordinal_to_read += 1;
5375 next_offset += envelope_size;
5376 }
5377
5378 let next_out_of_line = decoder.next_out_of_line();
5379 let handles_before = decoder.remaining_handles();
5380 if let Some((inlined, num_bytes, num_handles)) =
5381 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5382 {
5383 let member_inline_size =
5384 <NudConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5385 if inlined != (member_inline_size <= 4) {
5386 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5387 }
5388 let inner_offset;
5389 let mut inner_depth = depth.clone();
5390 if inlined {
5391 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5392 inner_offset = next_offset;
5393 } else {
5394 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5395 inner_depth.increment()?;
5396 }
5397 let val_ref = self.nud.get_or_insert_with(|| fidl::new_empty!(NudConfiguration, D));
5398 fidl::decode!(NudConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
5399 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5400 {
5401 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5402 }
5403 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5404 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5405 }
5406 }
5407
5408 next_offset += envelope_size;
5409 _next_ordinal_to_read += 1;
5410 if next_offset >= end_offset {
5411 return Ok(());
5412 }
5413
5414 while _next_ordinal_to_read < 2 {
5416 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5417 _next_ordinal_to_read += 1;
5418 next_offset += envelope_size;
5419 }
5420
5421 let next_out_of_line = decoder.next_out_of_line();
5422 let handles_before = decoder.remaining_handles();
5423 if let Some((inlined, num_bytes, num_handles)) =
5424 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5425 {
5426 let member_inline_size =
5427 <DadConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5428 if inlined != (member_inline_size <= 4) {
5429 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5430 }
5431 let inner_offset;
5432 let mut inner_depth = depth.clone();
5433 if inlined {
5434 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5435 inner_offset = next_offset;
5436 } else {
5437 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5438 inner_depth.increment()?;
5439 }
5440 let val_ref = self.dad.get_or_insert_with(|| fidl::new_empty!(DadConfiguration, D));
5441 fidl::decode!(DadConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
5442 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5443 {
5444 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5445 }
5446 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5447 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5448 }
5449 }
5450
5451 next_offset += envelope_size;
5452 _next_ordinal_to_read += 1;
5453 if next_offset >= end_offset {
5454 return Ok(());
5455 }
5456
5457 while _next_ordinal_to_read < 3 {
5459 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5460 _next_ordinal_to_read += 1;
5461 next_offset += envelope_size;
5462 }
5463
5464 let next_out_of_line = decoder.next_out_of_line();
5465 let handles_before = decoder.remaining_handles();
5466 if let Some((inlined, num_bytes, num_handles)) =
5467 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5468 {
5469 let member_inline_size =
5470 <SlaacConfiguration as fidl::encoding::TypeMarker>::inline_size(
5471 decoder.context,
5472 );
5473 if inlined != (member_inline_size <= 4) {
5474 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5475 }
5476 let inner_offset;
5477 let mut inner_depth = depth.clone();
5478 if inlined {
5479 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5480 inner_offset = next_offset;
5481 } else {
5482 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5483 inner_depth.increment()?;
5484 }
5485 let val_ref =
5486 self.slaac.get_or_insert_with(|| fidl::new_empty!(SlaacConfiguration, D));
5487 fidl::decode!(SlaacConfiguration, D, val_ref, decoder, inner_offset, inner_depth)?;
5488 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5489 {
5490 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5491 }
5492 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5493 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5494 }
5495 }
5496
5497 next_offset += envelope_size;
5498
5499 while next_offset < end_offset {
5501 _next_ordinal_to_read += 1;
5502 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5503 next_offset += envelope_size;
5504 }
5505
5506 Ok(())
5507 }
5508 }
5509
5510 impl NudConfiguration {
5511 #[inline(always)]
5512 fn max_ordinal_present(&self) -> u64 {
5513 if let Some(_) = self.base_reachable_time {
5514 return 3;
5515 }
5516 if let Some(_) = self.max_unicast_solicitations {
5517 return 2;
5518 }
5519 if let Some(_) = self.max_multicast_solicitations {
5520 return 1;
5521 }
5522 0
5523 }
5524 }
5525
5526 impl fidl::encoding::ValueTypeMarker for NudConfiguration {
5527 type Borrowed<'a> = &'a Self;
5528 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5529 value
5530 }
5531 }
5532
5533 unsafe impl fidl::encoding::TypeMarker for NudConfiguration {
5534 type Owned = Self;
5535
5536 #[inline(always)]
5537 fn inline_align(_context: fidl::encoding::Context) -> usize {
5538 8
5539 }
5540
5541 #[inline(always)]
5542 fn inline_size(_context: fidl::encoding::Context) -> usize {
5543 16
5544 }
5545 }
5546
5547 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NudConfiguration, D>
5548 for &NudConfiguration
5549 {
5550 unsafe fn encode(
5551 self,
5552 encoder: &mut fidl::encoding::Encoder<'_, D>,
5553 offset: usize,
5554 mut depth: fidl::encoding::Depth,
5555 ) -> fidl::Result<()> {
5556 encoder.debug_check_bounds::<NudConfiguration>(offset);
5557 let max_ordinal: u64 = self.max_ordinal_present();
5559 encoder.write_num(max_ordinal, offset);
5560 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5561 if max_ordinal == 0 {
5563 return Ok(());
5564 }
5565 depth.increment()?;
5566 let envelope_size = 8;
5567 let bytes_len = max_ordinal as usize * envelope_size;
5568 #[allow(unused_variables)]
5569 let offset = encoder.out_of_line_offset(bytes_len);
5570 let mut _prev_end_offset: usize = 0;
5571 if 1 > max_ordinal {
5572 return Ok(());
5573 }
5574
5575 let cur_offset: usize = (1 - 1) * envelope_size;
5578
5579 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5581
5582 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5587 self.max_multicast_solicitations
5588 .as_ref()
5589 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5590 encoder,
5591 offset + cur_offset,
5592 depth,
5593 )?;
5594
5595 _prev_end_offset = cur_offset + envelope_size;
5596 if 2 > max_ordinal {
5597 return Ok(());
5598 }
5599
5600 let cur_offset: usize = (2 - 1) * envelope_size;
5603
5604 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5606
5607 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5612 self.max_unicast_solicitations
5613 .as_ref()
5614 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5615 encoder,
5616 offset + cur_offset,
5617 depth,
5618 )?;
5619
5620 _prev_end_offset = cur_offset + envelope_size;
5621 if 3 > max_ordinal {
5622 return Ok(());
5623 }
5624
5625 let cur_offset: usize = (3 - 1) * envelope_size;
5628
5629 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5631
5632 fidl::encoding::encode_in_envelope_optional::<i64, D>(
5637 self.base_reachable_time
5638 .as_ref()
5639 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5640 encoder,
5641 offset + cur_offset,
5642 depth,
5643 )?;
5644
5645 _prev_end_offset = cur_offset + envelope_size;
5646
5647 Ok(())
5648 }
5649 }
5650
5651 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NudConfiguration {
5652 #[inline(always)]
5653 fn new_empty() -> Self {
5654 Self::default()
5655 }
5656
5657 unsafe fn decode(
5658 &mut self,
5659 decoder: &mut fidl::encoding::Decoder<'_, D>,
5660 offset: usize,
5661 mut depth: fidl::encoding::Depth,
5662 ) -> fidl::Result<()> {
5663 decoder.debug_check_bounds::<Self>(offset);
5664 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5665 None => return Err(fidl::Error::NotNullable),
5666 Some(len) => len,
5667 };
5668 if len == 0 {
5670 return Ok(());
5671 };
5672 depth.increment()?;
5673 let envelope_size = 8;
5674 let bytes_len = len * envelope_size;
5675 let offset = decoder.out_of_line_offset(bytes_len)?;
5676 let mut _next_ordinal_to_read = 0;
5678 let mut next_offset = offset;
5679 let end_offset = offset + bytes_len;
5680 _next_ordinal_to_read += 1;
5681 if next_offset >= end_offset {
5682 return Ok(());
5683 }
5684
5685 while _next_ordinal_to_read < 1 {
5687 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5688 _next_ordinal_to_read += 1;
5689 next_offset += envelope_size;
5690 }
5691
5692 let next_out_of_line = decoder.next_out_of_line();
5693 let handles_before = decoder.remaining_handles();
5694 if let Some((inlined, num_bytes, num_handles)) =
5695 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5696 {
5697 let member_inline_size =
5698 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5699 if inlined != (member_inline_size <= 4) {
5700 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5701 }
5702 let inner_offset;
5703 let mut inner_depth = depth.clone();
5704 if inlined {
5705 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5706 inner_offset = next_offset;
5707 } else {
5708 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5709 inner_depth.increment()?;
5710 }
5711 let val_ref = self
5712 .max_multicast_solicitations
5713 .get_or_insert_with(|| fidl::new_empty!(u16, D));
5714 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5715 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5716 {
5717 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5718 }
5719 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5720 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5721 }
5722 }
5723
5724 next_offset += envelope_size;
5725 _next_ordinal_to_read += 1;
5726 if next_offset >= end_offset {
5727 return Ok(());
5728 }
5729
5730 while _next_ordinal_to_read < 2 {
5732 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5733 _next_ordinal_to_read += 1;
5734 next_offset += envelope_size;
5735 }
5736
5737 let next_out_of_line = decoder.next_out_of_line();
5738 let handles_before = decoder.remaining_handles();
5739 if let Some((inlined, num_bytes, num_handles)) =
5740 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5741 {
5742 let member_inline_size =
5743 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5744 if inlined != (member_inline_size <= 4) {
5745 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5746 }
5747 let inner_offset;
5748 let mut inner_depth = depth.clone();
5749 if inlined {
5750 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5751 inner_offset = next_offset;
5752 } else {
5753 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5754 inner_depth.increment()?;
5755 }
5756 let val_ref =
5757 self.max_unicast_solicitations.get_or_insert_with(|| fidl::new_empty!(u16, D));
5758 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5759 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5760 {
5761 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5762 }
5763 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5764 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5765 }
5766 }
5767
5768 next_offset += envelope_size;
5769 _next_ordinal_to_read += 1;
5770 if next_offset >= end_offset {
5771 return Ok(());
5772 }
5773
5774 while _next_ordinal_to_read < 3 {
5776 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5777 _next_ordinal_to_read += 1;
5778 next_offset += envelope_size;
5779 }
5780
5781 let next_out_of_line = decoder.next_out_of_line();
5782 let handles_before = decoder.remaining_handles();
5783 if let Some((inlined, num_bytes, num_handles)) =
5784 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5785 {
5786 let member_inline_size =
5787 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5788 if inlined != (member_inline_size <= 4) {
5789 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5790 }
5791 let inner_offset;
5792 let mut inner_depth = depth.clone();
5793 if inlined {
5794 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5795 inner_offset = next_offset;
5796 } else {
5797 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5798 inner_depth.increment()?;
5799 }
5800 let val_ref =
5801 self.base_reachable_time.get_or_insert_with(|| fidl::new_empty!(i64, D));
5802 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
5803 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5804 {
5805 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5806 }
5807 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5808 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5809 }
5810 }
5811
5812 next_offset += envelope_size;
5813
5814 while next_offset < end_offset {
5816 _next_ordinal_to_read += 1;
5817 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5818 next_offset += envelope_size;
5819 }
5820
5821 Ok(())
5822 }
5823 }
5824
5825 impl SlaacConfiguration {
5826 #[inline(always)]
5827 fn max_ordinal_present(&self) -> u64 {
5828 if let Some(_) = self.temporary_address {
5829 return 1;
5830 }
5831 0
5832 }
5833 }
5834
5835 impl fidl::encoding::ValueTypeMarker for SlaacConfiguration {
5836 type Borrowed<'a> = &'a Self;
5837 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5838 value
5839 }
5840 }
5841
5842 unsafe impl fidl::encoding::TypeMarker for SlaacConfiguration {
5843 type Owned = Self;
5844
5845 #[inline(always)]
5846 fn inline_align(_context: fidl::encoding::Context) -> usize {
5847 8
5848 }
5849
5850 #[inline(always)]
5851 fn inline_size(_context: fidl::encoding::Context) -> usize {
5852 16
5853 }
5854 }
5855
5856 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SlaacConfiguration, D>
5857 for &SlaacConfiguration
5858 {
5859 unsafe fn encode(
5860 self,
5861 encoder: &mut fidl::encoding::Encoder<'_, D>,
5862 offset: usize,
5863 mut depth: fidl::encoding::Depth,
5864 ) -> fidl::Result<()> {
5865 encoder.debug_check_bounds::<SlaacConfiguration>(offset);
5866 let max_ordinal: u64 = self.max_ordinal_present();
5868 encoder.write_num(max_ordinal, offset);
5869 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5870 if max_ordinal == 0 {
5872 return Ok(());
5873 }
5874 depth.increment()?;
5875 let envelope_size = 8;
5876 let bytes_len = max_ordinal as usize * envelope_size;
5877 #[allow(unused_variables)]
5878 let offset = encoder.out_of_line_offset(bytes_len);
5879 let mut _prev_end_offset: usize = 0;
5880 if 1 > max_ordinal {
5881 return Ok(());
5882 }
5883
5884 let cur_offset: usize = (1 - 1) * envelope_size;
5887
5888 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5890
5891 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5896 self.temporary_address
5897 .as_ref()
5898 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5899 encoder,
5900 offset + cur_offset,
5901 depth,
5902 )?;
5903
5904 _prev_end_offset = cur_offset + envelope_size;
5905
5906 Ok(())
5907 }
5908 }
5909
5910 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SlaacConfiguration {
5911 #[inline(always)]
5912 fn new_empty() -> Self {
5913 Self::default()
5914 }
5915
5916 unsafe fn decode(
5917 &mut self,
5918 decoder: &mut fidl::encoding::Decoder<'_, D>,
5919 offset: usize,
5920 mut depth: fidl::encoding::Depth,
5921 ) -> fidl::Result<()> {
5922 decoder.debug_check_bounds::<Self>(offset);
5923 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5924 None => return Err(fidl::Error::NotNullable),
5925 Some(len) => len,
5926 };
5927 if len == 0 {
5929 return Ok(());
5930 };
5931 depth.increment()?;
5932 let envelope_size = 8;
5933 let bytes_len = len * envelope_size;
5934 let offset = decoder.out_of_line_offset(bytes_len)?;
5935 let mut _next_ordinal_to_read = 0;
5937 let mut next_offset = offset;
5938 let end_offset = offset + bytes_len;
5939 _next_ordinal_to_read += 1;
5940 if next_offset >= end_offset {
5941 return Ok(());
5942 }
5943
5944 while _next_ordinal_to_read < 1 {
5946 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5947 _next_ordinal_to_read += 1;
5948 next_offset += envelope_size;
5949 }
5950
5951 let next_out_of_line = decoder.next_out_of_line();
5952 let handles_before = decoder.remaining_handles();
5953 if let Some((inlined, num_bytes, num_handles)) =
5954 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5955 {
5956 let member_inline_size =
5957 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5958 if inlined != (member_inline_size <= 4) {
5959 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5960 }
5961 let inner_offset;
5962 let mut inner_depth = depth.clone();
5963 if inlined {
5964 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5965 inner_offset = next_offset;
5966 } else {
5967 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5968 inner_depth.increment()?;
5969 }
5970 let val_ref =
5971 self.temporary_address.get_or_insert_with(|| fidl::new_empty!(bool, D));
5972 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5973 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5974 {
5975 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5976 }
5977 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5978 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5979 }
5980 }
5981
5982 next_offset += envelope_size;
5983
5984 while next_offset < end_offset {
5986 _next_ordinal_to_read += 1;
5987 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5988 next_offset += envelope_size;
5989 }
5990
5991 Ok(())
5992 }
5993 }
5994}