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
11bitflags! {
12 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
14 pub struct NetworkCapability: u32 {
15 const UNMETERED = 1;
16 const UNCONGESTED = 2;
17 const NOT_BANDWIDTH_CONSTRAINED = 4;
18 }
19}
20
21impl NetworkCapability {
22 #[inline(always)]
23 pub fn from_bits_allow_unknown(bits: u32) -> Self {
24 Self::from_bits_retain(bits)
25 }
26
27 #[inline(always)]
28 pub fn has_unknown_bits(&self) -> bool {
29 self.get_unknown_bits() != 0
30 }
31
32 #[inline(always)]
33 pub fn get_unknown_bits(&self) -> u32 {
34 self.bits() & !Self::all().bits()
35 }
36}
37
38bitflags! {
39 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
42 pub struct ProtoProperties: u8 {
43 const V4 = 1;
44 const V6 = 2;
45 }
46}
47
48impl ProtoProperties {}
49
50#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
52pub enum ConnectivityState {
53 NoConnectivity,
56 LocalConnectivity,
59 PartialConnectivity,
62 FullConnectivity,
65 #[doc(hidden)]
66 __SourceBreaking { unknown_ordinal: u32 },
67}
68
69#[macro_export]
71macro_rules! ConnectivityStateUnknown {
72 () => {
73 _
74 };
75}
76
77impl ConnectivityState {
78 #[inline]
79 pub fn from_primitive(prim: u32) -> Option<Self> {
80 match prim {
81 1 => Some(Self::NoConnectivity),
82 3 => Some(Self::LocalConnectivity),
83 4 => Some(Self::PartialConnectivity),
84 5 => Some(Self::FullConnectivity),
85 _ => None,
86 }
87 }
88
89 #[inline]
90 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
91 match prim {
92 1 => Self::NoConnectivity,
93 3 => Self::LocalConnectivity,
94 4 => Self::PartialConnectivity,
95 5 => Self::FullConnectivity,
96 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
97 }
98 }
99
100 #[inline]
101 pub fn unknown() -> Self {
102 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
103 }
104
105 #[inline]
106 pub const fn into_primitive(self) -> u32 {
107 match self {
108 Self::NoConnectivity => 1,
109 Self::LocalConnectivity => 3,
110 Self::PartialConnectivity => 4,
111 Self::FullConnectivity => 5,
112 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
113 }
114 }
115
116 #[inline]
117 pub fn is_unknown(&self) -> bool {
118 match self {
119 Self::__SourceBreaking { unknown_ordinal: _ } => true,
120 _ => false,
121 }
122 }
123}
124
125#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
126pub enum NetworkRegistryAddError {
127 MissingNetworkId,
129 MissingNetworkInfo,
131 MissingNetworkDnsServers,
133 DuplicateNetworkId,
136 #[doc(hidden)]
137 __SourceBreaking { unknown_ordinal: u32 },
138}
139
140#[macro_export]
142macro_rules! NetworkRegistryAddErrorUnknown {
143 () => {
144 _
145 };
146}
147
148impl NetworkRegistryAddError {
149 #[inline]
150 pub fn from_primitive(prim: u32) -> Option<Self> {
151 match prim {
152 1 => Some(Self::MissingNetworkId),
153 2 => Some(Self::MissingNetworkInfo),
154 3 => Some(Self::MissingNetworkDnsServers),
155 4 => Some(Self::DuplicateNetworkId),
156 _ => None,
157 }
158 }
159
160 #[inline]
161 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
162 match prim {
163 1 => Self::MissingNetworkId,
164 2 => Self::MissingNetworkInfo,
165 3 => Self::MissingNetworkDnsServers,
166 4 => Self::DuplicateNetworkId,
167 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
168 }
169 }
170
171 #[inline]
172 pub fn unknown() -> Self {
173 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
174 }
175
176 #[inline]
177 pub const fn into_primitive(self) -> u32 {
178 match self {
179 Self::MissingNetworkId => 1,
180 Self::MissingNetworkInfo => 2,
181 Self::MissingNetworkDnsServers => 3,
182 Self::DuplicateNetworkId => 4,
183 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
184 }
185 }
186
187 #[inline]
188 pub fn is_unknown(&self) -> bool {
189 match self {
190 Self::__SourceBreaking { unknown_ordinal: _ } => true,
191 _ => false,
192 }
193 }
194}
195
196#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
197pub enum NetworkRegistryRemoveError {
198 NotFound,
200 CannotRemoveDefaultNetwork,
202 #[doc(hidden)]
203 __SourceBreaking { unknown_ordinal: u32 },
204}
205
206#[macro_export]
208macro_rules! NetworkRegistryRemoveErrorUnknown {
209 () => {
210 _
211 };
212}
213
214impl NetworkRegistryRemoveError {
215 #[inline]
216 pub fn from_primitive(prim: u32) -> Option<Self> {
217 match prim {
218 1 => Some(Self::NotFound),
219 2 => Some(Self::CannotRemoveDefaultNetwork),
220 _ => None,
221 }
222 }
223
224 #[inline]
225 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
226 match prim {
227 1 => Self::NotFound,
228 2 => Self::CannotRemoveDefaultNetwork,
229 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
230 }
231 }
232
233 #[inline]
234 pub fn unknown() -> Self {
235 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
236 }
237
238 #[inline]
239 pub const fn into_primitive(self) -> u32 {
240 match self {
241 Self::NotFound => 1,
242 Self::CannotRemoveDefaultNetwork => 2,
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 _ => false,
252 }
253 }
254}
255
256#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
257pub enum NetworkRegistrySetDefaultError {
258 NotFound,
260 #[doc(hidden)]
261 __SourceBreaking { unknown_ordinal: u32 },
262}
263
264#[macro_export]
266macro_rules! NetworkRegistrySetDefaultErrorUnknown {
267 () => {
268 _
269 };
270}
271
272impl NetworkRegistrySetDefaultError {
273 #[inline]
274 pub fn from_primitive(prim: u32) -> Option<Self> {
275 match prim {
276 1 => Some(Self::NotFound),
277 _ => None,
278 }
279 }
280
281 #[inline]
282 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
283 match prim {
284 1 => Self::NotFound,
285 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
286 }
287 }
288
289 #[inline]
290 pub fn unknown() -> Self {
291 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
292 }
293
294 #[inline]
295 pub const fn into_primitive(self) -> u32 {
296 match self {
297 Self::NotFound => 1,
298 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
299 }
300 }
301
302 #[inline]
303 pub fn is_unknown(&self) -> bool {
304 match self {
305 Self::__SourceBreaking { unknown_ordinal: _ } => true,
306 _ => false,
307 }
308 }
309}
310
311#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
312pub enum NetworkRegistryUpdateError {
313 MissingNetworkId,
315 MissingNetworkInfo,
317 MissingNetworkDnsServers,
319 NotFound,
321 #[doc(hidden)]
322 __SourceBreaking { unknown_ordinal: u32 },
323}
324
325#[macro_export]
327macro_rules! NetworkRegistryUpdateErrorUnknown {
328 () => {
329 _
330 };
331}
332
333impl NetworkRegistryUpdateError {
334 #[inline]
335 pub fn from_primitive(prim: u32) -> Option<Self> {
336 match prim {
337 1 => Some(Self::MissingNetworkId),
338 2 => Some(Self::MissingNetworkInfo),
339 3 => Some(Self::MissingNetworkDnsServers),
340 4 => Some(Self::NotFound),
341 _ => None,
342 }
343 }
344
345 #[inline]
346 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
347 match prim {
348 1 => Self::MissingNetworkId,
349 2 => Self::MissingNetworkInfo,
350 3 => Self::MissingNetworkDnsServers,
351 4 => Self::NotFound,
352 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
353 }
354 }
355
356 #[inline]
357 pub fn unknown() -> Self {
358 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
359 }
360
361 #[inline]
362 pub const fn into_primitive(self) -> u32 {
363 match self {
364 Self::MissingNetworkId => 1,
365 Self::MissingNetworkInfo => 2,
366 Self::MissingNetworkDnsServers => 3,
367 Self::NotFound => 4,
368 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
369 }
370 }
371
372 #[inline]
373 pub fn is_unknown(&self) -> bool {
374 match self {
375 Self::__SourceBreaking { unknown_ordinal: _ } => true,
376 _ => false,
377 }
378 }
379}
380
381#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
383pub enum NetworkType {
384 Unknown,
385 Ethernet,
386 Wifi,
387 Bluetooth,
388 Cellular,
389 #[doc(hidden)]
390 __SourceBreaking {
391 unknown_ordinal: u32,
392 },
393}
394
395#[macro_export]
397macro_rules! NetworkTypeUnknown {
398 () => {
399 _
400 };
401}
402
403impl NetworkType {
404 #[inline]
405 pub fn from_primitive(prim: u32) -> Option<Self> {
406 match prim {
407 1 => Some(Self::Unknown),
408 2 => Some(Self::Ethernet),
409 3 => Some(Self::Wifi),
410 4 => Some(Self::Bluetooth),
411 5 => Some(Self::Cellular),
412 _ => None,
413 }
414 }
415
416 #[inline]
417 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
418 match prim {
419 1 => Self::Unknown,
420 2 => Self::Ethernet,
421 3 => Self::Wifi,
422 4 => Self::Bluetooth,
423 5 => Self::Cellular,
424 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
425 }
426 }
427
428 #[inline]
429 pub fn unknown() -> Self {
430 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
431 }
432
433 #[inline]
434 pub const fn into_primitive(self) -> u32 {
435 match self {
436 Self::Unknown => 1,
437 Self::Ethernet => 2,
438 Self::Wifi => 3,
439 Self::Bluetooth => 4,
440 Self::Cellular => 5,
441 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
442 }
443 }
444
445 #[inline]
446 pub fn is_unknown(&self) -> bool {
447 match self {
448 Self::__SourceBreaking { unknown_ordinal: _ } => true,
449 _ => false,
450 }
451 }
452}
453
454#[derive(Clone, Debug, PartialEq)]
455pub struct DnsServerWatcherWatchServersResponse {
456 pub servers: Vec<DnsServerList>,
457}
458
459impl fidl::Persistable for DnsServerWatcherWatchServersResponse {}
460
461#[derive(Clone, Debug, PartialEq)]
462pub struct NetworkRegistryAddRequest {
463 pub network: Network,
464}
465
466impl fidl::Persistable for NetworkRegistryAddRequest {}
467
468#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
469#[repr(C)]
470pub struct NetworkRegistryRemoveRequest {
471 pub network_id: u32,
472}
473
474impl fidl::Persistable for NetworkRegistryRemoveRequest {}
475
476#[derive(Clone, Debug, PartialEq)]
477pub struct NetworkRegistrySetDefaultRequest {
478 pub network_id: fidl_fuchsia_posix_socket__common::OptionalUint32,
479}
480
481impl fidl::Persistable for NetworkRegistrySetDefaultRequest {}
482
483#[derive(Clone, Debug, PartialEq)]
484pub struct NetworkRegistryUpdateRequest {
485 pub network: Network,
486}
487
488impl fidl::Persistable for NetworkRegistryUpdateRequest {}
489
490#[derive(Clone, Debug, Default, PartialEq)]
494pub struct DnsServerList {
495 pub addresses: Option<Vec<fidl_fuchsia_net__common::SocketAddress>>,
497 pub source_network_id: Option<u32>,
499 #[doc(hidden)]
500 pub __source_breaking: fidl::marker::SourceBreaking,
501}
502
503impl fidl::Persistable for DnsServerList {}
504
505#[derive(Clone, Debug, Default, PartialEq)]
506pub struct FuchsiaNetworkInfo {
507 #[doc(hidden)]
508 pub __source_breaking: fidl::marker::SourceBreaking,
509}
510
511impl fidl::Persistable for FuchsiaNetworkInfo {}
512
513#[derive(Clone, Debug, Default, PartialEq)]
515pub struct Network {
516 pub network_id: Option<u32>,
520 pub info: Option<NetworkInfo>,
524 pub dns_servers: Option<NetworkDnsServers>,
526 pub network_type: Option<NetworkType>,
531 pub capabilities: Option<Vec<NetworkCapability>>,
536 pub connectivity: Option<ConnectivityState>,
541 pub name: Option<String>,
546 pub has_address: Option<ProtoProperties>,
551 pub has_default_route: Option<ProtoProperties>,
556 #[doc(hidden)]
557 pub __source_breaking: fidl::marker::SourceBreaking,
558}
559
560impl fidl::Persistable for Network {}
561
562#[derive(Clone, Debug, Default, PartialEq)]
563pub struct NetworkDnsServers {
564 pub v4: Option<Vec<fidl_fuchsia_net__common::Ipv4Address>>,
565 pub v6: Option<Vec<fidl_fuchsia_net__common::Ipv6Address>>,
566 #[doc(hidden)]
567 pub __source_breaking: fidl::marker::SourceBreaking,
568}
569
570impl fidl::Persistable for NetworkDnsServers {}
571
572#[derive(Clone, Debug, Default, PartialEq)]
573pub struct StarnixNetworkInfo {
574 pub mark: Option<u32>,
575 pub handle: Option<u64>,
576 #[doc(hidden)]
577 pub __source_breaking: fidl::marker::SourceBreaking,
578}
579
580impl fidl::Persistable for StarnixNetworkInfo {}
581
582#[derive(Clone, Debug)]
583pub enum NetworkInfo {
584 Starnix(StarnixNetworkInfo),
586 Fuchsia(FuchsiaNetworkInfo),
588 #[doc(hidden)]
589 __SourceBreaking { unknown_ordinal: u64 },
590}
591
592#[macro_export]
594macro_rules! NetworkInfoUnknown {
595 () => {
596 _
597 };
598}
599
600impl PartialEq for NetworkInfo {
602 fn eq(&self, other: &Self) -> bool {
603 match (self, other) {
604 (Self::Starnix(x), Self::Starnix(y)) => *x == *y,
605 (Self::Fuchsia(x), Self::Fuchsia(y)) => *x == *y,
606 _ => false,
607 }
608 }
609}
610
611impl NetworkInfo {
612 #[inline]
613 pub fn ordinal(&self) -> u64 {
614 match *self {
615 Self::Starnix(_) => 1,
616 Self::Fuchsia(_) => 2,
617 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
618 }
619 }
620
621 #[inline]
622 pub fn unknown_variant_for_testing() -> Self {
623 Self::__SourceBreaking { unknown_ordinal: 0 }
624 }
625
626 #[inline]
627 pub fn is_unknown(&self) -> bool {
628 match self {
629 Self::__SourceBreaking { .. } => true,
630 _ => false,
631 }
632 }
633}
634
635impl fidl::Persistable for NetworkInfo {}
636
637pub mod dns_server_watcher_ordinals {
638 pub const WATCH_SERVERS: u64 = 0x767ad6d8df671383;
639}
640
641pub mod fuchsia_networks_ordinals {
642 pub const SET_DEFAULT: u64 = 0x787930c67b8cf82c;
643 pub const ADD: u64 = 0x197e70a1cbeab3ad;
644 pub const UPDATE: u64 = 0x3bc790ae5418ff0e;
645 pub const REMOVE: u64 = 0x1302df41dca6379e;
646}
647
648pub mod network_registry_ordinals {
649 pub const SET_DEFAULT: u64 = 0x787930c67b8cf82c;
650 pub const ADD: u64 = 0x197e70a1cbeab3ad;
651 pub const UPDATE: u64 = 0x3bc790ae5418ff0e;
652 pub const REMOVE: u64 = 0x1302df41dca6379e;
653}
654
655pub mod starnix_networks_ordinals {
656 pub const SET_DEFAULT: u64 = 0x787930c67b8cf82c;
657 pub const ADD: u64 = 0x197e70a1cbeab3ad;
658 pub const UPDATE: u64 = 0x3bc790ae5418ff0e;
659 pub const REMOVE: u64 = 0x1302df41dca6379e;
660}
661
662mod internal {
663 use super::*;
664 unsafe impl fidl::encoding::TypeMarker for NetworkCapability {
665 type Owned = Self;
666
667 #[inline(always)]
668 fn inline_align(_context: fidl::encoding::Context) -> usize {
669 4
670 }
671
672 #[inline(always)]
673 fn inline_size(_context: fidl::encoding::Context) -> usize {
674 4
675 }
676 }
677
678 impl fidl::encoding::ValueTypeMarker for NetworkCapability {
679 type Borrowed<'a> = Self;
680 #[inline(always)]
681 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
682 *value
683 }
684 }
685
686 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
687 for NetworkCapability
688 {
689 #[inline]
690 unsafe fn encode(
691 self,
692 encoder: &mut fidl::encoding::Encoder<'_, D>,
693 offset: usize,
694 _depth: fidl::encoding::Depth,
695 ) -> fidl::Result<()> {
696 encoder.debug_check_bounds::<Self>(offset);
697 encoder.write_num(self.bits(), offset);
698 Ok(())
699 }
700 }
701
702 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkCapability {
703 #[inline(always)]
704 fn new_empty() -> Self {
705 Self::empty()
706 }
707
708 #[inline]
709 unsafe fn decode(
710 &mut self,
711 decoder: &mut fidl::encoding::Decoder<'_, D>,
712 offset: usize,
713 _depth: fidl::encoding::Depth,
714 ) -> fidl::Result<()> {
715 decoder.debug_check_bounds::<Self>(offset);
716 let prim = decoder.read_num::<u32>(offset);
717 *self = Self::from_bits_allow_unknown(prim);
718 Ok(())
719 }
720 }
721 unsafe impl fidl::encoding::TypeMarker for ProtoProperties {
722 type Owned = Self;
723
724 #[inline(always)]
725 fn inline_align(_context: fidl::encoding::Context) -> usize {
726 1
727 }
728
729 #[inline(always)]
730 fn inline_size(_context: fidl::encoding::Context) -> usize {
731 1
732 }
733 }
734
735 impl fidl::encoding::ValueTypeMarker for ProtoProperties {
736 type Borrowed<'a> = Self;
737 #[inline(always)]
738 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
739 *value
740 }
741 }
742
743 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
744 for ProtoProperties
745 {
746 #[inline]
747 unsafe fn encode(
748 self,
749 encoder: &mut fidl::encoding::Encoder<'_, D>,
750 offset: usize,
751 _depth: fidl::encoding::Depth,
752 ) -> fidl::Result<()> {
753 encoder.debug_check_bounds::<Self>(offset);
754 if self.bits() & Self::all().bits() != self.bits() {
755 return Err(fidl::Error::InvalidBitsValue);
756 }
757 encoder.write_num(self.bits(), offset);
758 Ok(())
759 }
760 }
761
762 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProtoProperties {
763 #[inline(always)]
764 fn new_empty() -> Self {
765 Self::empty()
766 }
767
768 #[inline]
769 unsafe fn decode(
770 &mut self,
771 decoder: &mut fidl::encoding::Decoder<'_, D>,
772 offset: usize,
773 _depth: fidl::encoding::Depth,
774 ) -> fidl::Result<()> {
775 decoder.debug_check_bounds::<Self>(offset);
776 let prim = decoder.read_num::<u8>(offset);
777 *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
778 Ok(())
779 }
780 }
781 unsafe impl fidl::encoding::TypeMarker for ConnectivityState {
782 type Owned = Self;
783
784 #[inline(always)]
785 fn inline_align(_context: fidl::encoding::Context) -> usize {
786 std::mem::align_of::<u32>()
787 }
788
789 #[inline(always)]
790 fn inline_size(_context: fidl::encoding::Context) -> usize {
791 std::mem::size_of::<u32>()
792 }
793
794 #[inline(always)]
795 fn encode_is_copy() -> bool {
796 false
797 }
798
799 #[inline(always)]
800 fn decode_is_copy() -> bool {
801 false
802 }
803 }
804
805 impl fidl::encoding::ValueTypeMarker for ConnectivityState {
806 type Borrowed<'a> = Self;
807 #[inline(always)]
808 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
809 *value
810 }
811 }
812
813 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
814 for ConnectivityState
815 {
816 #[inline]
817 unsafe fn encode(
818 self,
819 encoder: &mut fidl::encoding::Encoder<'_, D>,
820 offset: usize,
821 _depth: fidl::encoding::Depth,
822 ) -> fidl::Result<()> {
823 encoder.debug_check_bounds::<Self>(offset);
824 encoder.write_num(self.into_primitive(), offset);
825 Ok(())
826 }
827 }
828
829 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectivityState {
830 #[inline(always)]
831 fn new_empty() -> Self {
832 Self::unknown()
833 }
834
835 #[inline]
836 unsafe fn decode(
837 &mut self,
838 decoder: &mut fidl::encoding::Decoder<'_, D>,
839 offset: usize,
840 _depth: fidl::encoding::Depth,
841 ) -> fidl::Result<()> {
842 decoder.debug_check_bounds::<Self>(offset);
843 let prim = decoder.read_num::<u32>(offset);
844
845 *self = Self::from_primitive_allow_unknown(prim);
846 Ok(())
847 }
848 }
849 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryAddError {
850 type Owned = Self;
851
852 #[inline(always)]
853 fn inline_align(_context: fidl::encoding::Context) -> usize {
854 std::mem::align_of::<u32>()
855 }
856
857 #[inline(always)]
858 fn inline_size(_context: fidl::encoding::Context) -> usize {
859 std::mem::size_of::<u32>()
860 }
861
862 #[inline(always)]
863 fn encode_is_copy() -> bool {
864 false
865 }
866
867 #[inline(always)]
868 fn decode_is_copy() -> bool {
869 false
870 }
871 }
872
873 impl fidl::encoding::ValueTypeMarker for NetworkRegistryAddError {
874 type Borrowed<'a> = Self;
875 #[inline(always)]
876 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
877 *value
878 }
879 }
880
881 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
882 for NetworkRegistryAddError
883 {
884 #[inline]
885 unsafe fn encode(
886 self,
887 encoder: &mut fidl::encoding::Encoder<'_, D>,
888 offset: usize,
889 _depth: fidl::encoding::Depth,
890 ) -> fidl::Result<()> {
891 encoder.debug_check_bounds::<Self>(offset);
892 encoder.write_num(self.into_primitive(), offset);
893 Ok(())
894 }
895 }
896
897 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
898 for NetworkRegistryAddError
899 {
900 #[inline(always)]
901 fn new_empty() -> Self {
902 Self::unknown()
903 }
904
905 #[inline]
906 unsafe fn decode(
907 &mut self,
908 decoder: &mut fidl::encoding::Decoder<'_, D>,
909 offset: usize,
910 _depth: fidl::encoding::Depth,
911 ) -> fidl::Result<()> {
912 decoder.debug_check_bounds::<Self>(offset);
913 let prim = decoder.read_num::<u32>(offset);
914
915 *self = Self::from_primitive_allow_unknown(prim);
916 Ok(())
917 }
918 }
919 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryRemoveError {
920 type Owned = Self;
921
922 #[inline(always)]
923 fn inline_align(_context: fidl::encoding::Context) -> usize {
924 std::mem::align_of::<u32>()
925 }
926
927 #[inline(always)]
928 fn inline_size(_context: fidl::encoding::Context) -> usize {
929 std::mem::size_of::<u32>()
930 }
931
932 #[inline(always)]
933 fn encode_is_copy() -> bool {
934 false
935 }
936
937 #[inline(always)]
938 fn decode_is_copy() -> bool {
939 false
940 }
941 }
942
943 impl fidl::encoding::ValueTypeMarker for NetworkRegistryRemoveError {
944 type Borrowed<'a> = Self;
945 #[inline(always)]
946 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
947 *value
948 }
949 }
950
951 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
952 for NetworkRegistryRemoveError
953 {
954 #[inline]
955 unsafe fn encode(
956 self,
957 encoder: &mut fidl::encoding::Encoder<'_, D>,
958 offset: usize,
959 _depth: fidl::encoding::Depth,
960 ) -> fidl::Result<()> {
961 encoder.debug_check_bounds::<Self>(offset);
962 encoder.write_num(self.into_primitive(), offset);
963 Ok(())
964 }
965 }
966
967 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
968 for NetworkRegistryRemoveError
969 {
970 #[inline(always)]
971 fn new_empty() -> Self {
972 Self::unknown()
973 }
974
975 #[inline]
976 unsafe fn decode(
977 &mut self,
978 decoder: &mut fidl::encoding::Decoder<'_, D>,
979 offset: usize,
980 _depth: fidl::encoding::Depth,
981 ) -> fidl::Result<()> {
982 decoder.debug_check_bounds::<Self>(offset);
983 let prim = decoder.read_num::<u32>(offset);
984
985 *self = Self::from_primitive_allow_unknown(prim);
986 Ok(())
987 }
988 }
989 unsafe impl fidl::encoding::TypeMarker for NetworkRegistrySetDefaultError {
990 type Owned = Self;
991
992 #[inline(always)]
993 fn inline_align(_context: fidl::encoding::Context) -> usize {
994 std::mem::align_of::<u32>()
995 }
996
997 #[inline(always)]
998 fn inline_size(_context: fidl::encoding::Context) -> usize {
999 std::mem::size_of::<u32>()
1000 }
1001
1002 #[inline(always)]
1003 fn encode_is_copy() -> bool {
1004 false
1005 }
1006
1007 #[inline(always)]
1008 fn decode_is_copy() -> bool {
1009 false
1010 }
1011 }
1012
1013 impl fidl::encoding::ValueTypeMarker for NetworkRegistrySetDefaultError {
1014 type Borrowed<'a> = Self;
1015 #[inline(always)]
1016 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1017 *value
1018 }
1019 }
1020
1021 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1022 for NetworkRegistrySetDefaultError
1023 {
1024 #[inline]
1025 unsafe fn encode(
1026 self,
1027 encoder: &mut fidl::encoding::Encoder<'_, D>,
1028 offset: usize,
1029 _depth: fidl::encoding::Depth,
1030 ) -> fidl::Result<()> {
1031 encoder.debug_check_bounds::<Self>(offset);
1032 encoder.write_num(self.into_primitive(), offset);
1033 Ok(())
1034 }
1035 }
1036
1037 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1038 for NetworkRegistrySetDefaultError
1039 {
1040 #[inline(always)]
1041 fn new_empty() -> Self {
1042 Self::unknown()
1043 }
1044
1045 #[inline]
1046 unsafe fn decode(
1047 &mut self,
1048 decoder: &mut fidl::encoding::Decoder<'_, D>,
1049 offset: usize,
1050 _depth: fidl::encoding::Depth,
1051 ) -> fidl::Result<()> {
1052 decoder.debug_check_bounds::<Self>(offset);
1053 let prim = decoder.read_num::<u32>(offset);
1054
1055 *self = Self::from_primitive_allow_unknown(prim);
1056 Ok(())
1057 }
1058 }
1059 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryUpdateError {
1060 type Owned = Self;
1061
1062 #[inline(always)]
1063 fn inline_align(_context: fidl::encoding::Context) -> usize {
1064 std::mem::align_of::<u32>()
1065 }
1066
1067 #[inline(always)]
1068 fn inline_size(_context: fidl::encoding::Context) -> usize {
1069 std::mem::size_of::<u32>()
1070 }
1071
1072 #[inline(always)]
1073 fn encode_is_copy() -> bool {
1074 false
1075 }
1076
1077 #[inline(always)]
1078 fn decode_is_copy() -> bool {
1079 false
1080 }
1081 }
1082
1083 impl fidl::encoding::ValueTypeMarker for NetworkRegistryUpdateError {
1084 type Borrowed<'a> = Self;
1085 #[inline(always)]
1086 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1087 *value
1088 }
1089 }
1090
1091 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1092 for NetworkRegistryUpdateError
1093 {
1094 #[inline]
1095 unsafe fn encode(
1096 self,
1097 encoder: &mut fidl::encoding::Encoder<'_, D>,
1098 offset: usize,
1099 _depth: fidl::encoding::Depth,
1100 ) -> fidl::Result<()> {
1101 encoder.debug_check_bounds::<Self>(offset);
1102 encoder.write_num(self.into_primitive(), offset);
1103 Ok(())
1104 }
1105 }
1106
1107 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1108 for NetworkRegistryUpdateError
1109 {
1110 #[inline(always)]
1111 fn new_empty() -> Self {
1112 Self::unknown()
1113 }
1114
1115 #[inline]
1116 unsafe fn decode(
1117 &mut self,
1118 decoder: &mut fidl::encoding::Decoder<'_, D>,
1119 offset: usize,
1120 _depth: fidl::encoding::Depth,
1121 ) -> fidl::Result<()> {
1122 decoder.debug_check_bounds::<Self>(offset);
1123 let prim = decoder.read_num::<u32>(offset);
1124
1125 *self = Self::from_primitive_allow_unknown(prim);
1126 Ok(())
1127 }
1128 }
1129 unsafe impl fidl::encoding::TypeMarker for NetworkType {
1130 type Owned = Self;
1131
1132 #[inline(always)]
1133 fn inline_align(_context: fidl::encoding::Context) -> usize {
1134 std::mem::align_of::<u32>()
1135 }
1136
1137 #[inline(always)]
1138 fn inline_size(_context: fidl::encoding::Context) -> usize {
1139 std::mem::size_of::<u32>()
1140 }
1141
1142 #[inline(always)]
1143 fn encode_is_copy() -> bool {
1144 false
1145 }
1146
1147 #[inline(always)]
1148 fn decode_is_copy() -> bool {
1149 false
1150 }
1151 }
1152
1153 impl fidl::encoding::ValueTypeMarker for NetworkType {
1154 type Borrowed<'a> = Self;
1155 #[inline(always)]
1156 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1157 *value
1158 }
1159 }
1160
1161 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for NetworkType {
1162 #[inline]
1163 unsafe fn encode(
1164 self,
1165 encoder: &mut fidl::encoding::Encoder<'_, D>,
1166 offset: usize,
1167 _depth: fidl::encoding::Depth,
1168 ) -> fidl::Result<()> {
1169 encoder.debug_check_bounds::<Self>(offset);
1170 encoder.write_num(self.into_primitive(), offset);
1171 Ok(())
1172 }
1173 }
1174
1175 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkType {
1176 #[inline(always)]
1177 fn new_empty() -> Self {
1178 Self::unknown()
1179 }
1180
1181 #[inline]
1182 unsafe fn decode(
1183 &mut self,
1184 decoder: &mut fidl::encoding::Decoder<'_, D>,
1185 offset: usize,
1186 _depth: fidl::encoding::Depth,
1187 ) -> fidl::Result<()> {
1188 decoder.debug_check_bounds::<Self>(offset);
1189 let prim = decoder.read_num::<u32>(offset);
1190
1191 *self = Self::from_primitive_allow_unknown(prim);
1192 Ok(())
1193 }
1194 }
1195
1196 impl fidl::encoding::ValueTypeMarker for DnsServerWatcherWatchServersResponse {
1197 type Borrowed<'a> = &'a Self;
1198 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1199 value
1200 }
1201 }
1202
1203 unsafe impl fidl::encoding::TypeMarker for DnsServerWatcherWatchServersResponse {
1204 type Owned = Self;
1205
1206 #[inline(always)]
1207 fn inline_align(_context: fidl::encoding::Context) -> usize {
1208 8
1209 }
1210
1211 #[inline(always)]
1212 fn inline_size(_context: fidl::encoding::Context) -> usize {
1213 16
1214 }
1215 }
1216
1217 unsafe impl<D: fidl::encoding::ResourceDialect>
1218 fidl::encoding::Encode<DnsServerWatcherWatchServersResponse, D>
1219 for &DnsServerWatcherWatchServersResponse
1220 {
1221 #[inline]
1222 unsafe fn encode(
1223 self,
1224 encoder: &mut fidl::encoding::Encoder<'_, D>,
1225 offset: usize,
1226 _depth: fidl::encoding::Depth,
1227 ) -> fidl::Result<()> {
1228 encoder.debug_check_bounds::<DnsServerWatcherWatchServersResponse>(offset);
1229 fidl::encoding::Encode::<DnsServerWatcherWatchServersResponse, D>::encode(
1231 (
1232 <fidl::encoding::UnboundedVector<DnsServerList> as fidl::encoding::ValueTypeMarker>::borrow(&self.servers),
1233 ),
1234 encoder, offset, _depth
1235 )
1236 }
1237 }
1238 unsafe impl<
1239 D: fidl::encoding::ResourceDialect,
1240 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<DnsServerList>, D>,
1241 > fidl::encoding::Encode<DnsServerWatcherWatchServersResponse, D> for (T0,)
1242 {
1243 #[inline]
1244 unsafe fn encode(
1245 self,
1246 encoder: &mut fidl::encoding::Encoder<'_, D>,
1247 offset: usize,
1248 depth: fidl::encoding::Depth,
1249 ) -> fidl::Result<()> {
1250 encoder.debug_check_bounds::<DnsServerWatcherWatchServersResponse>(offset);
1251 self.0.encode(encoder, offset + 0, depth)?;
1255 Ok(())
1256 }
1257 }
1258
1259 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1260 for DnsServerWatcherWatchServersResponse
1261 {
1262 #[inline(always)]
1263 fn new_empty() -> Self {
1264 Self { servers: fidl::new_empty!(fidl::encoding::UnboundedVector<DnsServerList>, D) }
1265 }
1266
1267 #[inline]
1268 unsafe fn decode(
1269 &mut self,
1270 decoder: &mut fidl::encoding::Decoder<'_, D>,
1271 offset: usize,
1272 _depth: fidl::encoding::Depth,
1273 ) -> fidl::Result<()> {
1274 decoder.debug_check_bounds::<Self>(offset);
1275 fidl::decode!(
1277 fidl::encoding::UnboundedVector<DnsServerList>,
1278 D,
1279 &mut self.servers,
1280 decoder,
1281 offset + 0,
1282 _depth
1283 )?;
1284 Ok(())
1285 }
1286 }
1287
1288 impl fidl::encoding::ValueTypeMarker for NetworkRegistryAddRequest {
1289 type Borrowed<'a> = &'a Self;
1290 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1291 value
1292 }
1293 }
1294
1295 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryAddRequest {
1296 type Owned = Self;
1297
1298 #[inline(always)]
1299 fn inline_align(_context: fidl::encoding::Context) -> usize {
1300 8
1301 }
1302
1303 #[inline(always)]
1304 fn inline_size(_context: fidl::encoding::Context) -> usize {
1305 16
1306 }
1307 }
1308
1309 unsafe impl<D: fidl::encoding::ResourceDialect>
1310 fidl::encoding::Encode<NetworkRegistryAddRequest, D> for &NetworkRegistryAddRequest
1311 {
1312 #[inline]
1313 unsafe fn encode(
1314 self,
1315 encoder: &mut fidl::encoding::Encoder<'_, D>,
1316 offset: usize,
1317 _depth: fidl::encoding::Depth,
1318 ) -> fidl::Result<()> {
1319 encoder.debug_check_bounds::<NetworkRegistryAddRequest>(offset);
1320 fidl::encoding::Encode::<NetworkRegistryAddRequest, D>::encode(
1322 (<Network as fidl::encoding::ValueTypeMarker>::borrow(&self.network),),
1323 encoder,
1324 offset,
1325 _depth,
1326 )
1327 }
1328 }
1329 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Network, D>>
1330 fidl::encoding::Encode<NetworkRegistryAddRequest, D> for (T0,)
1331 {
1332 #[inline]
1333 unsafe fn encode(
1334 self,
1335 encoder: &mut fidl::encoding::Encoder<'_, D>,
1336 offset: usize,
1337 depth: fidl::encoding::Depth,
1338 ) -> fidl::Result<()> {
1339 encoder.debug_check_bounds::<NetworkRegistryAddRequest>(offset);
1340 self.0.encode(encoder, offset + 0, depth)?;
1344 Ok(())
1345 }
1346 }
1347
1348 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1349 for NetworkRegistryAddRequest
1350 {
1351 #[inline(always)]
1352 fn new_empty() -> Self {
1353 Self { network: fidl::new_empty!(Network, D) }
1354 }
1355
1356 #[inline]
1357 unsafe fn decode(
1358 &mut self,
1359 decoder: &mut fidl::encoding::Decoder<'_, D>,
1360 offset: usize,
1361 _depth: fidl::encoding::Depth,
1362 ) -> fidl::Result<()> {
1363 decoder.debug_check_bounds::<Self>(offset);
1364 fidl::decode!(Network, D, &mut self.network, decoder, offset + 0, _depth)?;
1366 Ok(())
1367 }
1368 }
1369
1370 impl fidl::encoding::ValueTypeMarker for NetworkRegistryRemoveRequest {
1371 type Borrowed<'a> = &'a Self;
1372 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1373 value
1374 }
1375 }
1376
1377 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryRemoveRequest {
1378 type Owned = Self;
1379
1380 #[inline(always)]
1381 fn inline_align(_context: fidl::encoding::Context) -> usize {
1382 4
1383 }
1384
1385 #[inline(always)]
1386 fn inline_size(_context: fidl::encoding::Context) -> usize {
1387 4
1388 }
1389 #[inline(always)]
1390 fn encode_is_copy() -> bool {
1391 true
1392 }
1393
1394 #[inline(always)]
1395 fn decode_is_copy() -> bool {
1396 true
1397 }
1398 }
1399
1400 unsafe impl<D: fidl::encoding::ResourceDialect>
1401 fidl::encoding::Encode<NetworkRegistryRemoveRequest, D> for &NetworkRegistryRemoveRequest
1402 {
1403 #[inline]
1404 unsafe fn encode(
1405 self,
1406 encoder: &mut fidl::encoding::Encoder<'_, D>,
1407 offset: usize,
1408 _depth: fidl::encoding::Depth,
1409 ) -> fidl::Result<()> {
1410 encoder.debug_check_bounds::<NetworkRegistryRemoveRequest>(offset);
1411 unsafe {
1412 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1414 (buf_ptr as *mut NetworkRegistryRemoveRequest)
1415 .write_unaligned((self as *const NetworkRegistryRemoveRequest).read());
1416 }
1419 Ok(())
1420 }
1421 }
1422 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1423 fidl::encoding::Encode<NetworkRegistryRemoveRequest, D> for (T0,)
1424 {
1425 #[inline]
1426 unsafe fn encode(
1427 self,
1428 encoder: &mut fidl::encoding::Encoder<'_, D>,
1429 offset: usize,
1430 depth: fidl::encoding::Depth,
1431 ) -> fidl::Result<()> {
1432 encoder.debug_check_bounds::<NetworkRegistryRemoveRequest>(offset);
1433 self.0.encode(encoder, offset + 0, depth)?;
1437 Ok(())
1438 }
1439 }
1440
1441 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1442 for NetworkRegistryRemoveRequest
1443 {
1444 #[inline(always)]
1445 fn new_empty() -> Self {
1446 Self { network_id: fidl::new_empty!(u32, D) }
1447 }
1448
1449 #[inline]
1450 unsafe fn decode(
1451 &mut self,
1452 decoder: &mut fidl::encoding::Decoder<'_, D>,
1453 offset: usize,
1454 _depth: fidl::encoding::Depth,
1455 ) -> fidl::Result<()> {
1456 decoder.debug_check_bounds::<Self>(offset);
1457 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1458 unsafe {
1461 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1462 }
1463 Ok(())
1464 }
1465 }
1466
1467 impl fidl::encoding::ValueTypeMarker for NetworkRegistrySetDefaultRequest {
1468 type Borrowed<'a> = &'a Self;
1469 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1470 value
1471 }
1472 }
1473
1474 unsafe impl fidl::encoding::TypeMarker for NetworkRegistrySetDefaultRequest {
1475 type Owned = Self;
1476
1477 #[inline(always)]
1478 fn inline_align(_context: fidl::encoding::Context) -> usize {
1479 8
1480 }
1481
1482 #[inline(always)]
1483 fn inline_size(_context: fidl::encoding::Context) -> usize {
1484 16
1485 }
1486 }
1487
1488 unsafe impl<D: fidl::encoding::ResourceDialect>
1489 fidl::encoding::Encode<NetworkRegistrySetDefaultRequest, D>
1490 for &NetworkRegistrySetDefaultRequest
1491 {
1492 #[inline]
1493 unsafe fn encode(
1494 self,
1495 encoder: &mut fidl::encoding::Encoder<'_, D>,
1496 offset: usize,
1497 _depth: fidl::encoding::Depth,
1498 ) -> fidl::Result<()> {
1499 encoder.debug_check_bounds::<NetworkRegistrySetDefaultRequest>(offset);
1500 fidl::encoding::Encode::<NetworkRegistrySetDefaultRequest, D>::encode(
1502 (
1503 <fidl_fuchsia_posix_socket__common::OptionalUint32 as fidl::encoding::ValueTypeMarker>::borrow(&self.network_id),
1504 ),
1505 encoder, offset, _depth
1506 )
1507 }
1508 }
1509 unsafe impl<
1510 D: fidl::encoding::ResourceDialect,
1511 T0: fidl::encoding::Encode<fidl_fuchsia_posix_socket__common::OptionalUint32, D>,
1512 > fidl::encoding::Encode<NetworkRegistrySetDefaultRequest, D> for (T0,)
1513 {
1514 #[inline]
1515 unsafe fn encode(
1516 self,
1517 encoder: &mut fidl::encoding::Encoder<'_, D>,
1518 offset: usize,
1519 depth: fidl::encoding::Depth,
1520 ) -> fidl::Result<()> {
1521 encoder.debug_check_bounds::<NetworkRegistrySetDefaultRequest>(offset);
1522 self.0.encode(encoder, offset + 0, depth)?;
1526 Ok(())
1527 }
1528 }
1529
1530 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1531 for NetworkRegistrySetDefaultRequest
1532 {
1533 #[inline(always)]
1534 fn new_empty() -> Self {
1535 Self {
1536 network_id: fidl::new_empty!(fidl_fuchsia_posix_socket__common::OptionalUint32, D),
1537 }
1538 }
1539
1540 #[inline]
1541 unsafe fn decode(
1542 &mut self,
1543 decoder: &mut fidl::encoding::Decoder<'_, D>,
1544 offset: usize,
1545 _depth: fidl::encoding::Depth,
1546 ) -> fidl::Result<()> {
1547 decoder.debug_check_bounds::<Self>(offset);
1548 fidl::decode!(
1550 fidl_fuchsia_posix_socket__common::OptionalUint32,
1551 D,
1552 &mut self.network_id,
1553 decoder,
1554 offset + 0,
1555 _depth
1556 )?;
1557 Ok(())
1558 }
1559 }
1560
1561 impl fidl::encoding::ValueTypeMarker for NetworkRegistryUpdateRequest {
1562 type Borrowed<'a> = &'a Self;
1563 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1564 value
1565 }
1566 }
1567
1568 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryUpdateRequest {
1569 type Owned = Self;
1570
1571 #[inline(always)]
1572 fn inline_align(_context: fidl::encoding::Context) -> usize {
1573 8
1574 }
1575
1576 #[inline(always)]
1577 fn inline_size(_context: fidl::encoding::Context) -> usize {
1578 16
1579 }
1580 }
1581
1582 unsafe impl<D: fidl::encoding::ResourceDialect>
1583 fidl::encoding::Encode<NetworkRegistryUpdateRequest, D> for &NetworkRegistryUpdateRequest
1584 {
1585 #[inline]
1586 unsafe fn encode(
1587 self,
1588 encoder: &mut fidl::encoding::Encoder<'_, D>,
1589 offset: usize,
1590 _depth: fidl::encoding::Depth,
1591 ) -> fidl::Result<()> {
1592 encoder.debug_check_bounds::<NetworkRegistryUpdateRequest>(offset);
1593 fidl::encoding::Encode::<NetworkRegistryUpdateRequest, D>::encode(
1595 (<Network as fidl::encoding::ValueTypeMarker>::borrow(&self.network),),
1596 encoder,
1597 offset,
1598 _depth,
1599 )
1600 }
1601 }
1602 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Network, D>>
1603 fidl::encoding::Encode<NetworkRegistryUpdateRequest, D> for (T0,)
1604 {
1605 #[inline]
1606 unsafe fn encode(
1607 self,
1608 encoder: &mut fidl::encoding::Encoder<'_, D>,
1609 offset: usize,
1610 depth: fidl::encoding::Depth,
1611 ) -> fidl::Result<()> {
1612 encoder.debug_check_bounds::<NetworkRegistryUpdateRequest>(offset);
1613 self.0.encode(encoder, offset + 0, depth)?;
1617 Ok(())
1618 }
1619 }
1620
1621 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1622 for NetworkRegistryUpdateRequest
1623 {
1624 #[inline(always)]
1625 fn new_empty() -> Self {
1626 Self { network: fidl::new_empty!(Network, D) }
1627 }
1628
1629 #[inline]
1630 unsafe fn decode(
1631 &mut self,
1632 decoder: &mut fidl::encoding::Decoder<'_, D>,
1633 offset: usize,
1634 _depth: fidl::encoding::Depth,
1635 ) -> fidl::Result<()> {
1636 decoder.debug_check_bounds::<Self>(offset);
1637 fidl::decode!(Network, D, &mut self.network, decoder, offset + 0, _depth)?;
1639 Ok(())
1640 }
1641 }
1642
1643 impl DnsServerList {
1644 #[inline(always)]
1645 fn max_ordinal_present(&self) -> u64 {
1646 if let Some(_) = self.source_network_id {
1647 return 2;
1648 }
1649 if let Some(_) = self.addresses {
1650 return 1;
1651 }
1652 0
1653 }
1654 }
1655
1656 impl fidl::encoding::ValueTypeMarker for DnsServerList {
1657 type Borrowed<'a> = &'a Self;
1658 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1659 value
1660 }
1661 }
1662
1663 unsafe impl fidl::encoding::TypeMarker for DnsServerList {
1664 type Owned = Self;
1665
1666 #[inline(always)]
1667 fn inline_align(_context: fidl::encoding::Context) -> usize {
1668 8
1669 }
1670
1671 #[inline(always)]
1672 fn inline_size(_context: fidl::encoding::Context) -> usize {
1673 16
1674 }
1675 }
1676
1677 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DnsServerList, D>
1678 for &DnsServerList
1679 {
1680 unsafe fn encode(
1681 self,
1682 encoder: &mut fidl::encoding::Encoder<'_, D>,
1683 offset: usize,
1684 mut depth: fidl::encoding::Depth,
1685 ) -> fidl::Result<()> {
1686 encoder.debug_check_bounds::<DnsServerList>(offset);
1687 let max_ordinal: u64 = self.max_ordinal_present();
1689 encoder.write_num(max_ordinal, offset);
1690 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1691 if max_ordinal == 0 {
1693 return Ok(());
1694 }
1695 depth.increment()?;
1696 let envelope_size = 8;
1697 let bytes_len = max_ordinal as usize * envelope_size;
1698 #[allow(unused_variables)]
1699 let offset = encoder.out_of_line_offset(bytes_len);
1700 let mut _prev_end_offset: usize = 0;
1701 if 1 > max_ordinal {
1702 return Ok(());
1703 }
1704
1705 let cur_offset: usize = (1 - 1) * envelope_size;
1708
1709 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1711
1712 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_net__common::SocketAddress>, D>(
1717 self.addresses.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_net__common::SocketAddress> as fidl::encoding::ValueTypeMarker>::borrow),
1718 encoder, offset + cur_offset, depth
1719 )?;
1720
1721 _prev_end_offset = cur_offset + envelope_size;
1722 if 2 > max_ordinal {
1723 return Ok(());
1724 }
1725
1726 let cur_offset: usize = (2 - 1) * envelope_size;
1729
1730 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1732
1733 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1738 self.source_network_id
1739 .as_ref()
1740 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1741 encoder,
1742 offset + cur_offset,
1743 depth,
1744 )?;
1745
1746 _prev_end_offset = cur_offset + envelope_size;
1747
1748 Ok(())
1749 }
1750 }
1751
1752 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DnsServerList {
1753 #[inline(always)]
1754 fn new_empty() -> Self {
1755 Self::default()
1756 }
1757
1758 unsafe fn decode(
1759 &mut self,
1760 decoder: &mut fidl::encoding::Decoder<'_, D>,
1761 offset: usize,
1762 mut depth: fidl::encoding::Depth,
1763 ) -> fidl::Result<()> {
1764 decoder.debug_check_bounds::<Self>(offset);
1765 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1766 None => return Err(fidl::Error::NotNullable),
1767 Some(len) => len,
1768 };
1769 if len == 0 {
1771 return Ok(());
1772 };
1773 depth.increment()?;
1774 let envelope_size = 8;
1775 let bytes_len = len * envelope_size;
1776 let offset = decoder.out_of_line_offset(bytes_len)?;
1777 let mut _next_ordinal_to_read = 0;
1779 let mut next_offset = offset;
1780 let end_offset = offset + bytes_len;
1781 _next_ordinal_to_read += 1;
1782 if next_offset >= end_offset {
1783 return Ok(());
1784 }
1785
1786 while _next_ordinal_to_read < 1 {
1788 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1789 _next_ordinal_to_read += 1;
1790 next_offset += envelope_size;
1791 }
1792
1793 let next_out_of_line = decoder.next_out_of_line();
1794 let handles_before = decoder.remaining_handles();
1795 if let Some((inlined, num_bytes, num_handles)) =
1796 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1797 {
1798 let member_inline_size = <fidl::encoding::UnboundedVector<
1799 fidl_fuchsia_net__common::SocketAddress,
1800 > as fidl::encoding::TypeMarker>::inline_size(
1801 decoder.context
1802 );
1803 if inlined != (member_inline_size <= 4) {
1804 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1805 }
1806 let inner_offset;
1807 let mut inner_depth = depth.clone();
1808 if inlined {
1809 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1810 inner_offset = next_offset;
1811 } else {
1812 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1813 inner_depth.increment()?;
1814 }
1815 let val_ref = self.addresses.get_or_insert_with(|| {
1816 fidl::new_empty!(
1817 fidl::encoding::UnboundedVector<fidl_fuchsia_net__common::SocketAddress>,
1818 D
1819 )
1820 });
1821 fidl::decode!(
1822 fidl::encoding::UnboundedVector<fidl_fuchsia_net__common::SocketAddress>,
1823 D,
1824 val_ref,
1825 decoder,
1826 inner_offset,
1827 inner_depth
1828 )?;
1829 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1830 {
1831 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1832 }
1833 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1834 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1835 }
1836 }
1837
1838 next_offset += envelope_size;
1839 _next_ordinal_to_read += 1;
1840 if next_offset >= end_offset {
1841 return Ok(());
1842 }
1843
1844 while _next_ordinal_to_read < 2 {
1846 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1847 _next_ordinal_to_read += 1;
1848 next_offset += envelope_size;
1849 }
1850
1851 let next_out_of_line = decoder.next_out_of_line();
1852 let handles_before = decoder.remaining_handles();
1853 if let Some((inlined, num_bytes, num_handles)) =
1854 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1855 {
1856 let member_inline_size =
1857 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1858 if inlined != (member_inline_size <= 4) {
1859 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1860 }
1861 let inner_offset;
1862 let mut inner_depth = depth.clone();
1863 if inlined {
1864 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1865 inner_offset = next_offset;
1866 } else {
1867 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1868 inner_depth.increment()?;
1869 }
1870 let val_ref =
1871 self.source_network_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1872 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1873 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1874 {
1875 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1876 }
1877 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1878 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1879 }
1880 }
1881
1882 next_offset += envelope_size;
1883
1884 while next_offset < end_offset {
1886 _next_ordinal_to_read += 1;
1887 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1888 next_offset += envelope_size;
1889 }
1890
1891 Ok(())
1892 }
1893 }
1894
1895 impl FuchsiaNetworkInfo {
1896 #[inline(always)]
1897 fn max_ordinal_present(&self) -> u64 {
1898 0
1899 }
1900 }
1901
1902 impl fidl::encoding::ValueTypeMarker for FuchsiaNetworkInfo {
1903 type Borrowed<'a> = &'a Self;
1904 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1905 value
1906 }
1907 }
1908
1909 unsafe impl fidl::encoding::TypeMarker for FuchsiaNetworkInfo {
1910 type Owned = Self;
1911
1912 #[inline(always)]
1913 fn inline_align(_context: fidl::encoding::Context) -> usize {
1914 8
1915 }
1916
1917 #[inline(always)]
1918 fn inline_size(_context: fidl::encoding::Context) -> usize {
1919 16
1920 }
1921 }
1922
1923 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FuchsiaNetworkInfo, D>
1924 for &FuchsiaNetworkInfo
1925 {
1926 unsafe fn encode(
1927 self,
1928 encoder: &mut fidl::encoding::Encoder<'_, D>,
1929 offset: usize,
1930 mut depth: fidl::encoding::Depth,
1931 ) -> fidl::Result<()> {
1932 encoder.debug_check_bounds::<FuchsiaNetworkInfo>(offset);
1933 let max_ordinal: u64 = self.max_ordinal_present();
1935 encoder.write_num(max_ordinal, offset);
1936 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1937 if max_ordinal == 0 {
1939 return Ok(());
1940 }
1941 depth.increment()?;
1942 let envelope_size = 8;
1943 let bytes_len = max_ordinal as usize * envelope_size;
1944 #[allow(unused_variables)]
1945 let offset = encoder.out_of_line_offset(bytes_len);
1946 let mut _prev_end_offset: usize = 0;
1947
1948 Ok(())
1949 }
1950 }
1951
1952 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FuchsiaNetworkInfo {
1953 #[inline(always)]
1954 fn new_empty() -> Self {
1955 Self::default()
1956 }
1957
1958 unsafe fn decode(
1959 &mut self,
1960 decoder: &mut fidl::encoding::Decoder<'_, D>,
1961 offset: usize,
1962 mut depth: fidl::encoding::Depth,
1963 ) -> fidl::Result<()> {
1964 decoder.debug_check_bounds::<Self>(offset);
1965 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1966 None => return Err(fidl::Error::NotNullable),
1967 Some(len) => len,
1968 };
1969 if len == 0 {
1971 return Ok(());
1972 };
1973 depth.increment()?;
1974 let envelope_size = 8;
1975 let bytes_len = len * envelope_size;
1976 let offset = decoder.out_of_line_offset(bytes_len)?;
1977 let mut _next_ordinal_to_read = 0;
1979 let mut next_offset = offset;
1980 let end_offset = offset + bytes_len;
1981
1982 while next_offset < end_offset {
1984 _next_ordinal_to_read += 1;
1985 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1986 next_offset += envelope_size;
1987 }
1988
1989 Ok(())
1990 }
1991 }
1992
1993 impl Network {
1994 #[inline(always)]
1995 fn max_ordinal_present(&self) -> u64 {
1996 if let Some(_) = self.has_default_route {
1997 return 9;
1998 }
1999 if let Some(_) = self.has_address {
2000 return 8;
2001 }
2002 if let Some(_) = self.name {
2003 return 7;
2004 }
2005 if let Some(_) = self.connectivity {
2006 return 6;
2007 }
2008 if let Some(_) = self.capabilities {
2009 return 5;
2010 }
2011 if let Some(_) = self.network_type {
2012 return 4;
2013 }
2014 if let Some(_) = self.dns_servers {
2015 return 3;
2016 }
2017 if let Some(_) = self.info {
2018 return 2;
2019 }
2020 if let Some(_) = self.network_id {
2021 return 1;
2022 }
2023 0
2024 }
2025 }
2026
2027 impl fidl::encoding::ValueTypeMarker for Network {
2028 type Borrowed<'a> = &'a Self;
2029 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2030 value
2031 }
2032 }
2033
2034 unsafe impl fidl::encoding::TypeMarker for Network {
2035 type Owned = Self;
2036
2037 #[inline(always)]
2038 fn inline_align(_context: fidl::encoding::Context) -> usize {
2039 8
2040 }
2041
2042 #[inline(always)]
2043 fn inline_size(_context: fidl::encoding::Context) -> usize {
2044 16
2045 }
2046 }
2047
2048 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Network, D> for &Network {
2049 unsafe fn encode(
2050 self,
2051 encoder: &mut fidl::encoding::Encoder<'_, D>,
2052 offset: usize,
2053 mut depth: fidl::encoding::Depth,
2054 ) -> fidl::Result<()> {
2055 encoder.debug_check_bounds::<Network>(offset);
2056 let max_ordinal: u64 = self.max_ordinal_present();
2058 encoder.write_num(max_ordinal, offset);
2059 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2060 if max_ordinal == 0 {
2062 return Ok(());
2063 }
2064 depth.increment()?;
2065 let envelope_size = 8;
2066 let bytes_len = max_ordinal as usize * envelope_size;
2067 #[allow(unused_variables)]
2068 let offset = encoder.out_of_line_offset(bytes_len);
2069 let mut _prev_end_offset: usize = 0;
2070 if 1 > max_ordinal {
2071 return Ok(());
2072 }
2073
2074 let cur_offset: usize = (1 - 1) * envelope_size;
2077
2078 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2080
2081 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2086 self.network_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2087 encoder,
2088 offset + cur_offset,
2089 depth,
2090 )?;
2091
2092 _prev_end_offset = cur_offset + envelope_size;
2093 if 2 > max_ordinal {
2094 return Ok(());
2095 }
2096
2097 let cur_offset: usize = (2 - 1) * envelope_size;
2100
2101 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2103
2104 fidl::encoding::encode_in_envelope_optional::<NetworkInfo, D>(
2109 self.info.as_ref().map(<NetworkInfo as fidl::encoding::ValueTypeMarker>::borrow),
2110 encoder,
2111 offset + cur_offset,
2112 depth,
2113 )?;
2114
2115 _prev_end_offset = cur_offset + envelope_size;
2116 if 3 > max_ordinal {
2117 return Ok(());
2118 }
2119
2120 let cur_offset: usize = (3 - 1) * envelope_size;
2123
2124 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2126
2127 fidl::encoding::encode_in_envelope_optional::<NetworkDnsServers, D>(
2132 self.dns_servers
2133 .as_ref()
2134 .map(<NetworkDnsServers as fidl::encoding::ValueTypeMarker>::borrow),
2135 encoder,
2136 offset + cur_offset,
2137 depth,
2138 )?;
2139
2140 _prev_end_offset = cur_offset + envelope_size;
2141 if 4 > max_ordinal {
2142 return Ok(());
2143 }
2144
2145 let cur_offset: usize = (4 - 1) * envelope_size;
2148
2149 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2151
2152 fidl::encoding::encode_in_envelope_optional::<NetworkType, D>(
2157 self.network_type
2158 .as_ref()
2159 .map(<NetworkType as fidl::encoding::ValueTypeMarker>::borrow),
2160 encoder,
2161 offset + cur_offset,
2162 depth,
2163 )?;
2164
2165 _prev_end_offset = cur_offset + envelope_size;
2166 if 5 > max_ordinal {
2167 return Ok(());
2168 }
2169
2170 let cur_offset: usize = (5 - 1) * envelope_size;
2173
2174 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2176
2177 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<NetworkCapability>, D>(
2182 self.capabilities.as_ref().map(<fidl::encoding::UnboundedVector<NetworkCapability> as fidl::encoding::ValueTypeMarker>::borrow),
2183 encoder, offset + cur_offset, depth
2184 )?;
2185
2186 _prev_end_offset = cur_offset + envelope_size;
2187 if 6 > max_ordinal {
2188 return Ok(());
2189 }
2190
2191 let cur_offset: usize = (6 - 1) * envelope_size;
2194
2195 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2197
2198 fidl::encoding::encode_in_envelope_optional::<ConnectivityState, D>(
2203 self.connectivity
2204 .as_ref()
2205 .map(<ConnectivityState as fidl::encoding::ValueTypeMarker>::borrow),
2206 encoder,
2207 offset + cur_offset,
2208 depth,
2209 )?;
2210
2211 _prev_end_offset = cur_offset + envelope_size;
2212 if 7 > max_ordinal {
2213 return Ok(());
2214 }
2215
2216 let cur_offset: usize = (7 - 1) * envelope_size;
2219
2220 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2222
2223 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<15>, D>(
2228 self.name.as_ref().map(
2229 <fidl::encoding::BoundedString<15> as fidl::encoding::ValueTypeMarker>::borrow,
2230 ),
2231 encoder,
2232 offset + cur_offset,
2233 depth,
2234 )?;
2235
2236 _prev_end_offset = cur_offset + envelope_size;
2237 if 8 > max_ordinal {
2238 return Ok(());
2239 }
2240
2241 let cur_offset: usize = (8 - 1) * envelope_size;
2244
2245 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2247
2248 fidl::encoding::encode_in_envelope_optional::<ProtoProperties, D>(
2253 self.has_address
2254 .as_ref()
2255 .map(<ProtoProperties as fidl::encoding::ValueTypeMarker>::borrow),
2256 encoder,
2257 offset + cur_offset,
2258 depth,
2259 )?;
2260
2261 _prev_end_offset = cur_offset + envelope_size;
2262 if 9 > max_ordinal {
2263 return Ok(());
2264 }
2265
2266 let cur_offset: usize = (9 - 1) * envelope_size;
2269
2270 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2272
2273 fidl::encoding::encode_in_envelope_optional::<ProtoProperties, D>(
2278 self.has_default_route
2279 .as_ref()
2280 .map(<ProtoProperties as fidl::encoding::ValueTypeMarker>::borrow),
2281 encoder,
2282 offset + cur_offset,
2283 depth,
2284 )?;
2285
2286 _prev_end_offset = cur_offset + envelope_size;
2287
2288 Ok(())
2289 }
2290 }
2291
2292 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Network {
2293 #[inline(always)]
2294 fn new_empty() -> Self {
2295 Self::default()
2296 }
2297
2298 unsafe fn decode(
2299 &mut self,
2300 decoder: &mut fidl::encoding::Decoder<'_, D>,
2301 offset: usize,
2302 mut depth: fidl::encoding::Depth,
2303 ) -> fidl::Result<()> {
2304 decoder.debug_check_bounds::<Self>(offset);
2305 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2306 None => return Err(fidl::Error::NotNullable),
2307 Some(len) => len,
2308 };
2309 if len == 0 {
2311 return Ok(());
2312 };
2313 depth.increment()?;
2314 let envelope_size = 8;
2315 let bytes_len = len * envelope_size;
2316 let offset = decoder.out_of_line_offset(bytes_len)?;
2317 let mut _next_ordinal_to_read = 0;
2319 let mut next_offset = offset;
2320 let end_offset = offset + bytes_len;
2321 _next_ordinal_to_read += 1;
2322 if next_offset >= end_offset {
2323 return Ok(());
2324 }
2325
2326 while _next_ordinal_to_read < 1 {
2328 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2329 _next_ordinal_to_read += 1;
2330 next_offset += envelope_size;
2331 }
2332
2333 let next_out_of_line = decoder.next_out_of_line();
2334 let handles_before = decoder.remaining_handles();
2335 if let Some((inlined, num_bytes, num_handles)) =
2336 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2337 {
2338 let member_inline_size =
2339 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2340 if inlined != (member_inline_size <= 4) {
2341 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2342 }
2343 let inner_offset;
2344 let mut inner_depth = depth.clone();
2345 if inlined {
2346 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2347 inner_offset = next_offset;
2348 } else {
2349 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2350 inner_depth.increment()?;
2351 }
2352 let val_ref = self.network_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2353 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2354 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2355 {
2356 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2357 }
2358 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2359 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2360 }
2361 }
2362
2363 next_offset += envelope_size;
2364 _next_ordinal_to_read += 1;
2365 if next_offset >= end_offset {
2366 return Ok(());
2367 }
2368
2369 while _next_ordinal_to_read < 2 {
2371 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2372 _next_ordinal_to_read += 1;
2373 next_offset += envelope_size;
2374 }
2375
2376 let next_out_of_line = decoder.next_out_of_line();
2377 let handles_before = decoder.remaining_handles();
2378 if let Some((inlined, num_bytes, num_handles)) =
2379 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2380 {
2381 let member_inline_size =
2382 <NetworkInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2383 if inlined != (member_inline_size <= 4) {
2384 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2385 }
2386 let inner_offset;
2387 let mut inner_depth = depth.clone();
2388 if inlined {
2389 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2390 inner_offset = next_offset;
2391 } else {
2392 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2393 inner_depth.increment()?;
2394 }
2395 let val_ref = self.info.get_or_insert_with(|| fidl::new_empty!(NetworkInfo, D));
2396 fidl::decode!(NetworkInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
2397 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2398 {
2399 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2400 }
2401 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2402 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2403 }
2404 }
2405
2406 next_offset += envelope_size;
2407 _next_ordinal_to_read += 1;
2408 if next_offset >= end_offset {
2409 return Ok(());
2410 }
2411
2412 while _next_ordinal_to_read < 3 {
2414 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2415 _next_ordinal_to_read += 1;
2416 next_offset += envelope_size;
2417 }
2418
2419 let next_out_of_line = decoder.next_out_of_line();
2420 let handles_before = decoder.remaining_handles();
2421 if let Some((inlined, num_bytes, num_handles)) =
2422 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2423 {
2424 let member_inline_size =
2425 <NetworkDnsServers as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2426 if inlined != (member_inline_size <= 4) {
2427 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2428 }
2429 let inner_offset;
2430 let mut inner_depth = depth.clone();
2431 if inlined {
2432 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2433 inner_offset = next_offset;
2434 } else {
2435 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2436 inner_depth.increment()?;
2437 }
2438 let val_ref =
2439 self.dns_servers.get_or_insert_with(|| fidl::new_empty!(NetworkDnsServers, D));
2440 fidl::decode!(NetworkDnsServers, D, val_ref, decoder, inner_offset, inner_depth)?;
2441 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2442 {
2443 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2444 }
2445 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2446 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2447 }
2448 }
2449
2450 next_offset += envelope_size;
2451 _next_ordinal_to_read += 1;
2452 if next_offset >= end_offset {
2453 return Ok(());
2454 }
2455
2456 while _next_ordinal_to_read < 4 {
2458 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2459 _next_ordinal_to_read += 1;
2460 next_offset += envelope_size;
2461 }
2462
2463 let next_out_of_line = decoder.next_out_of_line();
2464 let handles_before = decoder.remaining_handles();
2465 if let Some((inlined, num_bytes, num_handles)) =
2466 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2467 {
2468 let member_inline_size =
2469 <NetworkType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2470 if inlined != (member_inline_size <= 4) {
2471 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2472 }
2473 let inner_offset;
2474 let mut inner_depth = depth.clone();
2475 if inlined {
2476 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2477 inner_offset = next_offset;
2478 } else {
2479 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2480 inner_depth.increment()?;
2481 }
2482 let val_ref =
2483 self.network_type.get_or_insert_with(|| fidl::new_empty!(NetworkType, D));
2484 fidl::decode!(NetworkType, D, val_ref, decoder, inner_offset, inner_depth)?;
2485 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2486 {
2487 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2488 }
2489 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2490 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2491 }
2492 }
2493
2494 next_offset += envelope_size;
2495 _next_ordinal_to_read += 1;
2496 if next_offset >= end_offset {
2497 return Ok(());
2498 }
2499
2500 while _next_ordinal_to_read < 5 {
2502 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2503 _next_ordinal_to_read += 1;
2504 next_offset += envelope_size;
2505 }
2506
2507 let next_out_of_line = decoder.next_out_of_line();
2508 let handles_before = decoder.remaining_handles();
2509 if let Some((inlined, num_bytes, num_handles)) =
2510 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2511 {
2512 let member_inline_size = <fidl::encoding::UnboundedVector<NetworkCapability> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2513 if inlined != (member_inline_size <= 4) {
2514 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2515 }
2516 let inner_offset;
2517 let mut inner_depth = depth.clone();
2518 if inlined {
2519 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2520 inner_offset = next_offset;
2521 } else {
2522 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2523 inner_depth.increment()?;
2524 }
2525 let val_ref = self.capabilities.get_or_insert_with(|| {
2526 fidl::new_empty!(fidl::encoding::UnboundedVector<NetworkCapability>, D)
2527 });
2528 fidl::decode!(
2529 fidl::encoding::UnboundedVector<NetworkCapability>,
2530 D,
2531 val_ref,
2532 decoder,
2533 inner_offset,
2534 inner_depth
2535 )?;
2536 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2537 {
2538 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2539 }
2540 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2541 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2542 }
2543 }
2544
2545 next_offset += envelope_size;
2546 _next_ordinal_to_read += 1;
2547 if next_offset >= end_offset {
2548 return Ok(());
2549 }
2550
2551 while _next_ordinal_to_read < 6 {
2553 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2554 _next_ordinal_to_read += 1;
2555 next_offset += envelope_size;
2556 }
2557
2558 let next_out_of_line = decoder.next_out_of_line();
2559 let handles_before = decoder.remaining_handles();
2560 if let Some((inlined, num_bytes, num_handles)) =
2561 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2562 {
2563 let member_inline_size =
2564 <ConnectivityState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2565 if inlined != (member_inline_size <= 4) {
2566 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2567 }
2568 let inner_offset;
2569 let mut inner_depth = depth.clone();
2570 if inlined {
2571 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2572 inner_offset = next_offset;
2573 } else {
2574 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2575 inner_depth.increment()?;
2576 }
2577 let val_ref =
2578 self.connectivity.get_or_insert_with(|| fidl::new_empty!(ConnectivityState, D));
2579 fidl::decode!(ConnectivityState, D, val_ref, decoder, inner_offset, inner_depth)?;
2580 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2581 {
2582 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2583 }
2584 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2585 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2586 }
2587 }
2588
2589 next_offset += envelope_size;
2590 _next_ordinal_to_read += 1;
2591 if next_offset >= end_offset {
2592 return Ok(());
2593 }
2594
2595 while _next_ordinal_to_read < 7 {
2597 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2598 _next_ordinal_to_read += 1;
2599 next_offset += envelope_size;
2600 }
2601
2602 let next_out_of_line = decoder.next_out_of_line();
2603 let handles_before = decoder.remaining_handles();
2604 if let Some((inlined, num_bytes, num_handles)) =
2605 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2606 {
2607 let member_inline_size =
2608 <fidl::encoding::BoundedString<15> as fidl::encoding::TypeMarker>::inline_size(
2609 decoder.context,
2610 );
2611 if inlined != (member_inline_size <= 4) {
2612 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2613 }
2614 let inner_offset;
2615 let mut inner_depth = depth.clone();
2616 if inlined {
2617 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2618 inner_offset = next_offset;
2619 } else {
2620 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2621 inner_depth.increment()?;
2622 }
2623 let val_ref = self
2624 .name
2625 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<15>, D));
2626 fidl::decode!(
2627 fidl::encoding::BoundedString<15>,
2628 D,
2629 val_ref,
2630 decoder,
2631 inner_offset,
2632 inner_depth
2633 )?;
2634 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2635 {
2636 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2637 }
2638 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2639 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2640 }
2641 }
2642
2643 next_offset += envelope_size;
2644 _next_ordinal_to_read += 1;
2645 if next_offset >= end_offset {
2646 return Ok(());
2647 }
2648
2649 while _next_ordinal_to_read < 8 {
2651 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2652 _next_ordinal_to_read += 1;
2653 next_offset += envelope_size;
2654 }
2655
2656 let next_out_of_line = decoder.next_out_of_line();
2657 let handles_before = decoder.remaining_handles();
2658 if let Some((inlined, num_bytes, num_handles)) =
2659 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2660 {
2661 let member_inline_size =
2662 <ProtoProperties as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2663 if inlined != (member_inline_size <= 4) {
2664 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2665 }
2666 let inner_offset;
2667 let mut inner_depth = depth.clone();
2668 if inlined {
2669 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2670 inner_offset = next_offset;
2671 } else {
2672 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2673 inner_depth.increment()?;
2674 }
2675 let val_ref =
2676 self.has_address.get_or_insert_with(|| fidl::new_empty!(ProtoProperties, D));
2677 fidl::decode!(ProtoProperties, D, val_ref, decoder, inner_offset, inner_depth)?;
2678 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2679 {
2680 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2681 }
2682 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2683 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2684 }
2685 }
2686
2687 next_offset += envelope_size;
2688 _next_ordinal_to_read += 1;
2689 if next_offset >= end_offset {
2690 return Ok(());
2691 }
2692
2693 while _next_ordinal_to_read < 9 {
2695 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2696 _next_ordinal_to_read += 1;
2697 next_offset += envelope_size;
2698 }
2699
2700 let next_out_of_line = decoder.next_out_of_line();
2701 let handles_before = decoder.remaining_handles();
2702 if let Some((inlined, num_bytes, num_handles)) =
2703 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2704 {
2705 let member_inline_size =
2706 <ProtoProperties as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2707 if inlined != (member_inline_size <= 4) {
2708 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2709 }
2710 let inner_offset;
2711 let mut inner_depth = depth.clone();
2712 if inlined {
2713 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2714 inner_offset = next_offset;
2715 } else {
2716 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2717 inner_depth.increment()?;
2718 }
2719 let val_ref = self
2720 .has_default_route
2721 .get_or_insert_with(|| fidl::new_empty!(ProtoProperties, D));
2722 fidl::decode!(ProtoProperties, D, val_ref, decoder, inner_offset, inner_depth)?;
2723 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2724 {
2725 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2726 }
2727 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2728 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2729 }
2730 }
2731
2732 next_offset += envelope_size;
2733
2734 while next_offset < end_offset {
2736 _next_ordinal_to_read += 1;
2737 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2738 next_offset += envelope_size;
2739 }
2740
2741 Ok(())
2742 }
2743 }
2744
2745 impl NetworkDnsServers {
2746 #[inline(always)]
2747 fn max_ordinal_present(&self) -> u64 {
2748 if let Some(_) = self.v6 {
2749 return 2;
2750 }
2751 if let Some(_) = self.v4 {
2752 return 1;
2753 }
2754 0
2755 }
2756 }
2757
2758 impl fidl::encoding::ValueTypeMarker for NetworkDnsServers {
2759 type Borrowed<'a> = &'a Self;
2760 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2761 value
2762 }
2763 }
2764
2765 unsafe impl fidl::encoding::TypeMarker for NetworkDnsServers {
2766 type Owned = Self;
2767
2768 #[inline(always)]
2769 fn inline_align(_context: fidl::encoding::Context) -> usize {
2770 8
2771 }
2772
2773 #[inline(always)]
2774 fn inline_size(_context: fidl::encoding::Context) -> usize {
2775 16
2776 }
2777 }
2778
2779 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkDnsServers, D>
2780 for &NetworkDnsServers
2781 {
2782 unsafe fn encode(
2783 self,
2784 encoder: &mut fidl::encoding::Encoder<'_, D>,
2785 offset: usize,
2786 mut depth: fidl::encoding::Depth,
2787 ) -> fidl::Result<()> {
2788 encoder.debug_check_bounds::<NetworkDnsServers>(offset);
2789 let max_ordinal: u64 = self.max_ordinal_present();
2791 encoder.write_num(max_ordinal, offset);
2792 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2793 if max_ordinal == 0 {
2795 return Ok(());
2796 }
2797 depth.increment()?;
2798 let envelope_size = 8;
2799 let bytes_len = max_ordinal as usize * envelope_size;
2800 #[allow(unused_variables)]
2801 let offset = encoder.out_of_line_offset(bytes_len);
2802 let mut _prev_end_offset: usize = 0;
2803 if 1 > max_ordinal {
2804 return Ok(());
2805 }
2806
2807 let cur_offset: usize = (1 - 1) * envelope_size;
2810
2811 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2813
2814 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_net__common::Ipv4Address>, D>(
2819 self.v4.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_net__common::Ipv4Address> as fidl::encoding::ValueTypeMarker>::borrow),
2820 encoder, offset + cur_offset, depth
2821 )?;
2822
2823 _prev_end_offset = cur_offset + envelope_size;
2824 if 2 > max_ordinal {
2825 return Ok(());
2826 }
2827
2828 let cur_offset: usize = (2 - 1) * envelope_size;
2831
2832 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2834
2835 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_net__common::Ipv6Address>, D>(
2840 self.v6.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_net__common::Ipv6Address> as fidl::encoding::ValueTypeMarker>::borrow),
2841 encoder, offset + cur_offset, depth
2842 )?;
2843
2844 _prev_end_offset = cur_offset + envelope_size;
2845
2846 Ok(())
2847 }
2848 }
2849
2850 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkDnsServers {
2851 #[inline(always)]
2852 fn new_empty() -> Self {
2853 Self::default()
2854 }
2855
2856 unsafe fn decode(
2857 &mut self,
2858 decoder: &mut fidl::encoding::Decoder<'_, D>,
2859 offset: usize,
2860 mut depth: fidl::encoding::Depth,
2861 ) -> fidl::Result<()> {
2862 decoder.debug_check_bounds::<Self>(offset);
2863 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2864 None => return Err(fidl::Error::NotNullable),
2865 Some(len) => len,
2866 };
2867 if len == 0 {
2869 return Ok(());
2870 };
2871 depth.increment()?;
2872 let envelope_size = 8;
2873 let bytes_len = len * envelope_size;
2874 let offset = decoder.out_of_line_offset(bytes_len)?;
2875 let mut _next_ordinal_to_read = 0;
2877 let mut next_offset = offset;
2878 let end_offset = offset + bytes_len;
2879 _next_ordinal_to_read += 1;
2880 if next_offset >= end_offset {
2881 return Ok(());
2882 }
2883
2884 while _next_ordinal_to_read < 1 {
2886 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2887 _next_ordinal_to_read += 1;
2888 next_offset += envelope_size;
2889 }
2890
2891 let next_out_of_line = decoder.next_out_of_line();
2892 let handles_before = decoder.remaining_handles();
2893 if let Some((inlined, num_bytes, num_handles)) =
2894 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2895 {
2896 let member_inline_size = <fidl::encoding::UnboundedVector<
2897 fidl_fuchsia_net__common::Ipv4Address,
2898 > as fidl::encoding::TypeMarker>::inline_size(
2899 decoder.context
2900 );
2901 if inlined != (member_inline_size <= 4) {
2902 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2903 }
2904 let inner_offset;
2905 let mut inner_depth = depth.clone();
2906 if inlined {
2907 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2908 inner_offset = next_offset;
2909 } else {
2910 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2911 inner_depth.increment()?;
2912 }
2913 let val_ref = self.v4.get_or_insert_with(|| {
2914 fidl::new_empty!(
2915 fidl::encoding::UnboundedVector<fidl_fuchsia_net__common::Ipv4Address>,
2916 D
2917 )
2918 });
2919 fidl::decode!(
2920 fidl::encoding::UnboundedVector<fidl_fuchsia_net__common::Ipv4Address>,
2921 D,
2922 val_ref,
2923 decoder,
2924 inner_offset,
2925 inner_depth
2926 )?;
2927 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2928 {
2929 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2930 }
2931 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2932 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2933 }
2934 }
2935
2936 next_offset += envelope_size;
2937 _next_ordinal_to_read += 1;
2938 if next_offset >= end_offset {
2939 return Ok(());
2940 }
2941
2942 while _next_ordinal_to_read < 2 {
2944 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2945 _next_ordinal_to_read += 1;
2946 next_offset += envelope_size;
2947 }
2948
2949 let next_out_of_line = decoder.next_out_of_line();
2950 let handles_before = decoder.remaining_handles();
2951 if let Some((inlined, num_bytes, num_handles)) =
2952 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2953 {
2954 let member_inline_size = <fidl::encoding::UnboundedVector<
2955 fidl_fuchsia_net__common::Ipv6Address,
2956 > as fidl::encoding::TypeMarker>::inline_size(
2957 decoder.context
2958 );
2959 if inlined != (member_inline_size <= 4) {
2960 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2961 }
2962 let inner_offset;
2963 let mut inner_depth = depth.clone();
2964 if inlined {
2965 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2966 inner_offset = next_offset;
2967 } else {
2968 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2969 inner_depth.increment()?;
2970 }
2971 let val_ref = self.v6.get_or_insert_with(|| {
2972 fidl::new_empty!(
2973 fidl::encoding::UnboundedVector<fidl_fuchsia_net__common::Ipv6Address>,
2974 D
2975 )
2976 });
2977 fidl::decode!(
2978 fidl::encoding::UnboundedVector<fidl_fuchsia_net__common::Ipv6Address>,
2979 D,
2980 val_ref,
2981 decoder,
2982 inner_offset,
2983 inner_depth
2984 )?;
2985 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2986 {
2987 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2988 }
2989 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2990 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2991 }
2992 }
2993
2994 next_offset += envelope_size;
2995
2996 while next_offset < end_offset {
2998 _next_ordinal_to_read += 1;
2999 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3000 next_offset += envelope_size;
3001 }
3002
3003 Ok(())
3004 }
3005 }
3006
3007 impl StarnixNetworkInfo {
3008 #[inline(always)]
3009 fn max_ordinal_present(&self) -> u64 {
3010 if let Some(_) = self.handle {
3011 return 2;
3012 }
3013 if let Some(_) = self.mark {
3014 return 1;
3015 }
3016 0
3017 }
3018 }
3019
3020 impl fidl::encoding::ValueTypeMarker for StarnixNetworkInfo {
3021 type Borrowed<'a> = &'a Self;
3022 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3023 value
3024 }
3025 }
3026
3027 unsafe impl fidl::encoding::TypeMarker for StarnixNetworkInfo {
3028 type Owned = Self;
3029
3030 #[inline(always)]
3031 fn inline_align(_context: fidl::encoding::Context) -> usize {
3032 8
3033 }
3034
3035 #[inline(always)]
3036 fn inline_size(_context: fidl::encoding::Context) -> usize {
3037 16
3038 }
3039 }
3040
3041 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StarnixNetworkInfo, D>
3042 for &StarnixNetworkInfo
3043 {
3044 unsafe fn encode(
3045 self,
3046 encoder: &mut fidl::encoding::Encoder<'_, D>,
3047 offset: usize,
3048 mut depth: fidl::encoding::Depth,
3049 ) -> fidl::Result<()> {
3050 encoder.debug_check_bounds::<StarnixNetworkInfo>(offset);
3051 let max_ordinal: u64 = self.max_ordinal_present();
3053 encoder.write_num(max_ordinal, offset);
3054 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3055 if max_ordinal == 0 {
3057 return Ok(());
3058 }
3059 depth.increment()?;
3060 let envelope_size = 8;
3061 let bytes_len = max_ordinal as usize * envelope_size;
3062 #[allow(unused_variables)]
3063 let offset = encoder.out_of_line_offset(bytes_len);
3064 let mut _prev_end_offset: usize = 0;
3065 if 1 > max_ordinal {
3066 return Ok(());
3067 }
3068
3069 let cur_offset: usize = (1 - 1) * envelope_size;
3072
3073 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3075
3076 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3081 self.mark.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3082 encoder,
3083 offset + cur_offset,
3084 depth,
3085 )?;
3086
3087 _prev_end_offset = cur_offset + envelope_size;
3088 if 2 > max_ordinal {
3089 return Ok(());
3090 }
3091
3092 let cur_offset: usize = (2 - 1) * envelope_size;
3095
3096 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3098
3099 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3104 self.handle.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3105 encoder,
3106 offset + cur_offset,
3107 depth,
3108 )?;
3109
3110 _prev_end_offset = cur_offset + envelope_size;
3111
3112 Ok(())
3113 }
3114 }
3115
3116 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StarnixNetworkInfo {
3117 #[inline(always)]
3118 fn new_empty() -> Self {
3119 Self::default()
3120 }
3121
3122 unsafe fn decode(
3123 &mut self,
3124 decoder: &mut fidl::encoding::Decoder<'_, D>,
3125 offset: usize,
3126 mut depth: fidl::encoding::Depth,
3127 ) -> fidl::Result<()> {
3128 decoder.debug_check_bounds::<Self>(offset);
3129 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3130 None => return Err(fidl::Error::NotNullable),
3131 Some(len) => len,
3132 };
3133 if len == 0 {
3135 return Ok(());
3136 };
3137 depth.increment()?;
3138 let envelope_size = 8;
3139 let bytes_len = len * envelope_size;
3140 let offset = decoder.out_of_line_offset(bytes_len)?;
3141 let mut _next_ordinal_to_read = 0;
3143 let mut next_offset = offset;
3144 let end_offset = offset + bytes_len;
3145 _next_ordinal_to_read += 1;
3146 if next_offset >= end_offset {
3147 return Ok(());
3148 }
3149
3150 while _next_ordinal_to_read < 1 {
3152 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3153 _next_ordinal_to_read += 1;
3154 next_offset += envelope_size;
3155 }
3156
3157 let next_out_of_line = decoder.next_out_of_line();
3158 let handles_before = decoder.remaining_handles();
3159 if let Some((inlined, num_bytes, num_handles)) =
3160 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3161 {
3162 let member_inline_size =
3163 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3164 if inlined != (member_inline_size <= 4) {
3165 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3166 }
3167 let inner_offset;
3168 let mut inner_depth = depth.clone();
3169 if inlined {
3170 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3171 inner_offset = next_offset;
3172 } else {
3173 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3174 inner_depth.increment()?;
3175 }
3176 let val_ref = self.mark.get_or_insert_with(|| fidl::new_empty!(u32, D));
3177 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3178 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3179 {
3180 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3181 }
3182 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3183 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3184 }
3185 }
3186
3187 next_offset += envelope_size;
3188 _next_ordinal_to_read += 1;
3189 if next_offset >= end_offset {
3190 return Ok(());
3191 }
3192
3193 while _next_ordinal_to_read < 2 {
3195 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3196 _next_ordinal_to_read += 1;
3197 next_offset += envelope_size;
3198 }
3199
3200 let next_out_of_line = decoder.next_out_of_line();
3201 let handles_before = decoder.remaining_handles();
3202 if let Some((inlined, num_bytes, num_handles)) =
3203 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3204 {
3205 let member_inline_size =
3206 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3207 if inlined != (member_inline_size <= 4) {
3208 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3209 }
3210 let inner_offset;
3211 let mut inner_depth = depth.clone();
3212 if inlined {
3213 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3214 inner_offset = next_offset;
3215 } else {
3216 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3217 inner_depth.increment()?;
3218 }
3219 let val_ref = self.handle.get_or_insert_with(|| fidl::new_empty!(u64, D));
3220 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3221 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3222 {
3223 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3224 }
3225 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3226 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3227 }
3228 }
3229
3230 next_offset += envelope_size;
3231
3232 while next_offset < end_offset {
3234 _next_ordinal_to_read += 1;
3235 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3236 next_offset += envelope_size;
3237 }
3238
3239 Ok(())
3240 }
3241 }
3242
3243 impl fidl::encoding::ValueTypeMarker for NetworkInfo {
3244 type Borrowed<'a> = &'a Self;
3245 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3246 value
3247 }
3248 }
3249
3250 unsafe impl fidl::encoding::TypeMarker for NetworkInfo {
3251 type Owned = Self;
3252
3253 #[inline(always)]
3254 fn inline_align(_context: fidl::encoding::Context) -> usize {
3255 8
3256 }
3257
3258 #[inline(always)]
3259 fn inline_size(_context: fidl::encoding::Context) -> usize {
3260 16
3261 }
3262 }
3263
3264 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkInfo, D>
3265 for &NetworkInfo
3266 {
3267 #[inline]
3268 unsafe fn encode(
3269 self,
3270 encoder: &mut fidl::encoding::Encoder<'_, D>,
3271 offset: usize,
3272 _depth: fidl::encoding::Depth,
3273 ) -> fidl::Result<()> {
3274 encoder.debug_check_bounds::<NetworkInfo>(offset);
3275 encoder.write_num::<u64>(self.ordinal(), offset);
3276 match self {
3277 NetworkInfo::Starnix(ref val) => {
3278 fidl::encoding::encode_in_envelope::<StarnixNetworkInfo, D>(
3279 <StarnixNetworkInfo as fidl::encoding::ValueTypeMarker>::borrow(val),
3280 encoder,
3281 offset + 8,
3282 _depth,
3283 )
3284 }
3285 NetworkInfo::Fuchsia(ref val) => {
3286 fidl::encoding::encode_in_envelope::<FuchsiaNetworkInfo, D>(
3287 <FuchsiaNetworkInfo as fidl::encoding::ValueTypeMarker>::borrow(val),
3288 encoder,
3289 offset + 8,
3290 _depth,
3291 )
3292 }
3293 NetworkInfo::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
3294 }
3295 }
3296 }
3297
3298 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkInfo {
3299 #[inline(always)]
3300 fn new_empty() -> Self {
3301 Self::__SourceBreaking { unknown_ordinal: 0 }
3302 }
3303
3304 #[inline]
3305 unsafe fn decode(
3306 &mut self,
3307 decoder: &mut fidl::encoding::Decoder<'_, D>,
3308 offset: usize,
3309 mut depth: fidl::encoding::Depth,
3310 ) -> fidl::Result<()> {
3311 decoder.debug_check_bounds::<Self>(offset);
3312 #[allow(unused_variables)]
3313 let next_out_of_line = decoder.next_out_of_line();
3314 let handles_before = decoder.remaining_handles();
3315 let (ordinal, inlined, num_bytes, num_handles) =
3316 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
3317
3318 let member_inline_size = match ordinal {
3319 1 => {
3320 <StarnixNetworkInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context)
3321 }
3322 2 => {
3323 <FuchsiaNetworkInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context)
3324 }
3325 0 => return Err(fidl::Error::UnknownUnionTag),
3326 _ => num_bytes as usize,
3327 };
3328
3329 if inlined != (member_inline_size <= 4) {
3330 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3331 }
3332 let _inner_offset;
3333 if inlined {
3334 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
3335 _inner_offset = offset + 8;
3336 } else {
3337 depth.increment()?;
3338 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3339 }
3340 match ordinal {
3341 1 => {
3342 #[allow(irrefutable_let_patterns)]
3343 if let NetworkInfo::Starnix(_) = self {
3344 } else {
3346 *self = NetworkInfo::Starnix(fidl::new_empty!(StarnixNetworkInfo, D));
3348 }
3349 #[allow(irrefutable_let_patterns)]
3350 if let NetworkInfo::Starnix(ref mut val) = self {
3351 fidl::decode!(StarnixNetworkInfo, D, val, decoder, _inner_offset, depth)?;
3352 } else {
3353 unreachable!()
3354 }
3355 }
3356 2 => {
3357 #[allow(irrefutable_let_patterns)]
3358 if let NetworkInfo::Fuchsia(_) = self {
3359 } else {
3361 *self = NetworkInfo::Fuchsia(fidl::new_empty!(FuchsiaNetworkInfo, D));
3363 }
3364 #[allow(irrefutable_let_patterns)]
3365 if let NetworkInfo::Fuchsia(ref mut val) = self {
3366 fidl::decode!(FuchsiaNetworkInfo, D, val, decoder, _inner_offset, depth)?;
3367 } else {
3368 unreachable!()
3369 }
3370 }
3371 #[allow(deprecated)]
3372 ordinal => {
3373 for _ in 0..num_handles {
3374 decoder.drop_next_handle()?;
3375 }
3376 *self = NetworkInfo::__SourceBreaking { unknown_ordinal: ordinal };
3377 }
3378 }
3379 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
3380 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3381 }
3382 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3383 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3384 }
3385 Ok(())
3386 }
3387 }
3388}