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