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