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