Skip to main content

fidl_fuchsia_net_dhcp_common/
fidl_fuchsia_net_dhcp_common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![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/// A DHCP option field of IP addresses.
12///
13/// Per https://tools.ietf.org/html/rfc2132#section-2:
14///
15///   All other options are variable-length with a length octet following the tag octet.
16///
17/// The maximum length is given by 0xFF/sizeof([`fuchsia.net.Ipv4Address`]).
18pub type Addresses = Vec<fidl_fuchsia_net_common::Ipv4Address>;
19
20/// A DHCP option field of ASCII characters.
21///
22/// Per https://tools.ietf.org/html/rfc2132#section-2:
23///
24///   All other options are variable-length with a length octet following the tag octet.
25///
26/// Valid iff it consists of characters from the ASCII character set.
27pub type AsciiString = String;
28
29/// A DHCP duration value, in seconds. As specified in
30/// https://tools.ietf.org/html/rfc2131#section-3.3, DHCP duration values are
31/// relative times.
32pub type Duration = u32;
33
34/// The maximum possible number of DNS servers that can be included in an
35/// acquired DHCP configuration.
36///
37/// According to [RFC 2132 section
38/// 3.8](https://www.rfc-editor.org/rfc/rfc2132#section-3.8), the length of the
39/// DNS server list in bytes is represented in the protocol by an 8-bit unsigned
40/// integer:
41/// "[variable-length options have] a length octet following the tag octet. The
42/// value of the length octet does not include the two octets specifying the tag
43/// and length."
44/// 2^8 = 256, which divided by 4 bytes gives us 64 as an upper bound on the
45/// maximum possible number of DNS servers that can be included in an acquired
46/// DHCP configuration.
47pub const MAX_DNS_SERVERS: u8 = 64;
48
49/// The maximum possible number of routers that can be included in an acquired
50/// DHCP configuration.
51///
52/// According to [RFC 2132 section
53/// 3.5](https://www.rfc-editor.org/rfc/rfc2132#section-3.5), the length of the
54/// routers list in bytes is represented in the protocol by an 8-bit unsigned
55/// integer:
56/// "[variable-length options have] a length octet following the tag octet. The
57/// value of the length octet does not include the two octets specifying the
58/// tag and length."
59/// 2^8 = 256, which divided by 4 bytes gives us 64 as an upper bound on the
60/// maximum possible number of routers that can be included in an acquired
61/// DHCP configuration.
62pub const MAX_ROUTERS: u8 = 64;
63
64bitflags! {
65    /// A NetBIOS over TCP/IP node type as defined in RFC 1001/1002. This bitflag is for use with the
66    /// NetBiosOverTcpipNodeType option.
67    #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
68    pub struct NodeTypes: u8 {
69        /// A B node type.
70        const B_NODE = 1;
71        /// A P node type.
72        const P_NODE = 2;
73        /// A M node type.
74        const M_NODE = 4;
75        /// A H node type.
76        const H_NODE = 8;
77    }
78}
79
80impl NodeTypes {}
81
82#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
83#[repr(u32)]
84pub enum ClientExitReason {
85    /// A client already exists on the interface.
86    ClientAlreadyExistsOnInterface = 1,
87    /// More than one concurrent call to `WatchConfiguration` was made.
88    WatchConfigurationAlreadyPending = 2,
89    /// The interface identified is invalid for acquiring configuration.
90    InvalidInterface = 3,
91    /// Invalid `NewClientParams` were provided.
92    InvalidParams = 4,
93    /// The network was, or became, unreachable over the interface
94    /// provided to the DHCP client.
95    NetworkUnreachable = 5,
96    /// The client was unable to open a socket.
97    UnableToOpenSocket = 6,
98    /// Graceful shutdown was performed.
99    GracefulShutdown = 7,
100    /// An address acquired by this client was removed by a user.
101    AddressRemovedByUser = 8,
102    /// The `AddressStateProvider` for an address acquired by this
103    /// client exited with an error (or without providing a reason for
104    /// the address removal).
105    AddressStateProviderError = 9,
106}
107
108impl ClientExitReason {
109    #[inline]
110    pub fn from_primitive(prim: u32) -> Option<Self> {
111        match prim {
112            1 => Some(Self::ClientAlreadyExistsOnInterface),
113            2 => Some(Self::WatchConfigurationAlreadyPending),
114            3 => Some(Self::InvalidInterface),
115            4 => Some(Self::InvalidParams),
116            5 => Some(Self::NetworkUnreachable),
117            6 => Some(Self::UnableToOpenSocket),
118            7 => Some(Self::GracefulShutdown),
119            8 => Some(Self::AddressRemovedByUser),
120            9 => Some(Self::AddressStateProviderError),
121            _ => None,
122        }
123    }
124
125    #[inline]
126    pub const fn into_primitive(self) -> u32 {
127        self as u32
128    }
129}
130
131/// The type of DHCP message. The DHCP protocol requires that all messages identify
132/// their type by including the MessageType option. These values are specified
133/// in https://tools.ietf.org/html/rfc2132#section-9.6.
134#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
135#[repr(u8)]
136pub enum MessageType {
137    /// A DHCP Discover message.
138    Dhcpdiscover = 1,
139    /// A DHCP Offer message.
140    Dhcpoffer = 2,
141    /// A DHCP Request message.
142    Dhcprequest = 3,
143    /// A DHCP Decline message.
144    Dhcpdecline = 4,
145    /// A DHCP Ack message.
146    Dhcpack = 5,
147    /// A DHCP Nak message;
148    Dhcpnak = 6,
149    /// A DHCP Release message;
150    Dhcprelease = 7,
151    /// A DHCP Inform message.
152    Dhcpinform = 8,
153}
154
155impl MessageType {
156    #[inline]
157    pub fn from_primitive(prim: u8) -> Option<Self> {
158        match prim {
159            1 => Some(Self::Dhcpdiscover),
160            2 => Some(Self::Dhcpoffer),
161            3 => Some(Self::Dhcprequest),
162            4 => Some(Self::Dhcpdecline),
163            5 => Some(Self::Dhcpack),
164            6 => Some(Self::Dhcpnak),
165            7 => Some(Self::Dhcprelease),
166            8 => Some(Self::Dhcpinform),
167            _ => None,
168        }
169    }
170
171    #[inline]
172    pub const fn into_primitive(self) -> u8 {
173        self as u8
174    }
175}
176
177/// The code of a DHCP option to be retrieved by Server.GetOption(). The code
178/// values are from https://tools.ietf.org/html/rfc2132 and the enum variants
179/// have been listed in the order they are presented in the RFC.
180#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
181#[repr(u32)]
182pub enum OptionCode {
183    SubnetMask = 1,
184    TimeOffset = 2,
185    Router = 3,
186    TimeServer = 4,
187    NameServer = 5,
188    DomainNameServer = 6,
189    LogServer = 7,
190    CookieServer = 8,
191    LprServer = 9,
192    ImpressServer = 10,
193    ResourceLocationServer = 11,
194    HostName = 12,
195    BootFileSize = 13,
196    MeritDumpFile = 14,
197    DomainName = 15,
198    SwapServer = 16,
199    RootPath = 17,
200    ExtensionsPath = 18,
201    IpForwarding = 19,
202    NonLocalSourceRouting = 20,
203    PolicyFilter = 21,
204    MaxDatagramReassemblySize = 22,
205    DefaultIpTtl = 23,
206    PathMtuAgingTimeout = 24,
207    PathMtuPlateauTable = 25,
208    InterfaceMtu = 26,
209    AllSubnetsLocal = 27,
210    BroadcastAddress = 28,
211    PerformMaskDiscovery = 29,
212    MaskSupplier = 30,
213    PerformRouterDiscovery = 31,
214    RouterSolicitationAddress = 32,
215    StaticRoute = 33,
216    TrailerEncapsulation = 34,
217    ArpCacheTimeout = 35,
218    EthernetEncapsulation = 36,
219    TcpDefaultTtl = 37,
220    TcpKeepaliveInterval = 38,
221    TcpKeepaliveGarbage = 39,
222    NetworkInformationServiceDomain = 40,
223    NetworkInformationServers = 41,
224    NetworkTimeProtocolServers = 42,
225    VendorSpecificInformation = 43,
226    NetbiosOverTcpipNameServer = 44,
227    NetbiosOverTcpipDatagramDistributionServer = 45,
228    NetbiosOverTcpipNodeType = 46,
229    NetbiosOverTcpipScope = 47,
230    XWindowSystemFontServer = 48,
231    XWindowSystemDisplayManager = 49,
232    NetworkInformationServicePlusDomain = 64,
233    NetworkInformationServicePlusServers = 65,
234    MobileIpHomeAgent = 68,
235    SmtpServer = 69,
236    Pop3Server = 70,
237    NntpServer = 71,
238    DefaultWwwServer = 72,
239    DefaultFingerServer = 73,
240    DefaultIrcServer = 74,
241    StreettalkServer = 75,
242    StreettalkDirectoryAssistanceServer = 76,
243    OptionOverload = 52,
244    TftpServerName = 66,
245    BootfileName = 67,
246    MaxDhcpMessageSize = 57,
247    RenewalTimeValue = 58,
248    RebindingTimeValue = 59,
249}
250
251impl OptionCode {
252    #[inline]
253    pub fn from_primitive(prim: u32) -> Option<Self> {
254        match prim {
255            1 => Some(Self::SubnetMask),
256            2 => Some(Self::TimeOffset),
257            3 => Some(Self::Router),
258            4 => Some(Self::TimeServer),
259            5 => Some(Self::NameServer),
260            6 => Some(Self::DomainNameServer),
261            7 => Some(Self::LogServer),
262            8 => Some(Self::CookieServer),
263            9 => Some(Self::LprServer),
264            10 => Some(Self::ImpressServer),
265            11 => Some(Self::ResourceLocationServer),
266            12 => Some(Self::HostName),
267            13 => Some(Self::BootFileSize),
268            14 => Some(Self::MeritDumpFile),
269            15 => Some(Self::DomainName),
270            16 => Some(Self::SwapServer),
271            17 => Some(Self::RootPath),
272            18 => Some(Self::ExtensionsPath),
273            19 => Some(Self::IpForwarding),
274            20 => Some(Self::NonLocalSourceRouting),
275            21 => Some(Self::PolicyFilter),
276            22 => Some(Self::MaxDatagramReassemblySize),
277            23 => Some(Self::DefaultIpTtl),
278            24 => Some(Self::PathMtuAgingTimeout),
279            25 => Some(Self::PathMtuPlateauTable),
280            26 => Some(Self::InterfaceMtu),
281            27 => Some(Self::AllSubnetsLocal),
282            28 => Some(Self::BroadcastAddress),
283            29 => Some(Self::PerformMaskDiscovery),
284            30 => Some(Self::MaskSupplier),
285            31 => Some(Self::PerformRouterDiscovery),
286            32 => Some(Self::RouterSolicitationAddress),
287            33 => Some(Self::StaticRoute),
288            34 => Some(Self::TrailerEncapsulation),
289            35 => Some(Self::ArpCacheTimeout),
290            36 => Some(Self::EthernetEncapsulation),
291            37 => Some(Self::TcpDefaultTtl),
292            38 => Some(Self::TcpKeepaliveInterval),
293            39 => Some(Self::TcpKeepaliveGarbage),
294            40 => Some(Self::NetworkInformationServiceDomain),
295            41 => Some(Self::NetworkInformationServers),
296            42 => Some(Self::NetworkTimeProtocolServers),
297            43 => Some(Self::VendorSpecificInformation),
298            44 => Some(Self::NetbiosOverTcpipNameServer),
299            45 => Some(Self::NetbiosOverTcpipDatagramDistributionServer),
300            46 => Some(Self::NetbiosOverTcpipNodeType),
301            47 => Some(Self::NetbiosOverTcpipScope),
302            48 => Some(Self::XWindowSystemFontServer),
303            49 => Some(Self::XWindowSystemDisplayManager),
304            64 => Some(Self::NetworkInformationServicePlusDomain),
305            65 => Some(Self::NetworkInformationServicePlusServers),
306            68 => Some(Self::MobileIpHomeAgent),
307            69 => Some(Self::SmtpServer),
308            70 => Some(Self::Pop3Server),
309            71 => Some(Self::NntpServer),
310            72 => Some(Self::DefaultWwwServer),
311            73 => Some(Self::DefaultFingerServer),
312            74 => Some(Self::DefaultIrcServer),
313            75 => Some(Self::StreettalkServer),
314            76 => Some(Self::StreettalkDirectoryAssistanceServer),
315            52 => Some(Self::OptionOverload),
316            66 => Some(Self::TftpServerName),
317            67 => Some(Self::BootfileName),
318            57 => Some(Self::MaxDhcpMessageSize),
319            58 => Some(Self::RenewalTimeValue),
320            59 => Some(Self::RebindingTimeValue),
321            _ => None,
322        }
323    }
324
325    #[inline]
326    pub const fn into_primitive(self) -> u32 {
327        self as u32
328    }
329}
330
331/// A indication of which DHCP message field should be used to store additional options.
332#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
333#[repr(u8)]
334pub enum OptionOverloadValue {
335    /// The file DHCP field.
336    File = 1,
337    /// The sname DHCP field.
338    Sname = 2,
339    /// Both file and sname DHCP fields.
340    Both = 3,
341}
342
343impl OptionOverloadValue {
344    #[inline]
345    pub fn from_primitive(prim: u8) -> Option<Self> {
346        match prim {
347            1 => Some(Self::File),
348            2 => Some(Self::Sname),
349            3 => Some(Self::Both),
350            _ => None,
351        }
352    }
353
354    #[inline]
355    pub const fn into_primitive(self) -> u8 {
356        self as u8
357    }
358}
359
360/// The name of the Parameter to be retrieved by Server.GetParameter().
361#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
362#[repr(u32)]
363pub enum ParameterName {
364    IpAddrs = 0,
365    AddressPool = 1,
366    LeaseLength = 2,
367    PermittedMacs = 3,
368    StaticallyAssignedAddrs = 4,
369    ArpProbe = 5,
370    BoundDeviceNames = 6,
371}
372
373impl ParameterName {
374    #[inline]
375    pub fn from_primitive(prim: u32) -> Option<Self> {
376        match prim {
377            0 => Some(Self::IpAddrs),
378            1 => Some(Self::AddressPool),
379            2 => Some(Self::LeaseLength),
380            3 => Some(Self::PermittedMacs),
381            4 => Some(Self::StaticallyAssignedAddrs),
382            5 => Some(Self::ArpProbe),
383            6 => Some(Self::BoundDeviceNames),
384            _ => None,
385        }
386    }
387
388    #[inline]
389    pub const fn into_primitive(self) -> u32 {
390        self as u32
391    }
392}
393
394#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
395pub struct ClientOnExitRequest {
396    pub reason: ClientExitReason,
397}
398
399impl fidl::Persistable for ClientOnExitRequest {}
400
401#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
402pub struct ServerGetOptionRequest {
403    pub code: OptionCode,
404}
405
406impl fidl::Persistable for ServerGetOptionRequest {}
407
408#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
409pub struct ServerGetParameterRequest {
410    pub name: ParameterName,
411}
412
413impl fidl::Persistable for ServerGetParameterRequest {}
414
415#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
416pub struct ServerIsServingResponse {
417    pub enabled: bool,
418}
419
420impl fidl::Persistable for ServerIsServingResponse {}
421
422#[derive(Clone, Debug, PartialEq)]
423pub struct ServerSetOptionRequest {
424    pub value: Option_,
425}
426
427impl fidl::Persistable for ServerSetOptionRequest {}
428
429#[derive(Clone, Debug, PartialEq)]
430pub struct ServerSetParameterRequest {
431    pub value: Parameter,
432}
433
434impl fidl::Persistable for ServerSetParameterRequest {}
435
436#[derive(Clone, Debug, PartialEq)]
437pub struct ServerGetOptionResponse {
438    pub value: Option_,
439}
440
441impl fidl::Persistable for ServerGetOptionResponse {}
442
443#[derive(Clone, Debug, PartialEq)]
444pub struct ServerGetParameterResponse {
445    pub value: Parameter,
446}
447
448impl fidl::Persistable for ServerGetParameterResponse {}
449
450#[derive(Clone, Debug, PartialEq)]
451pub struct ServerListOptionsResponse {
452    pub options: Vec<Option_>,
453}
454
455impl fidl::Persistable for ServerListOptionsResponse {}
456
457#[derive(Clone, Debug, PartialEq)]
458pub struct ServerListParametersResponse {
459    pub parameters: Vec<Parameter>,
460}
461
462impl fidl::Persistable for ServerListParametersResponse {}
463
464#[derive(Clone, Debug, Default, PartialEq)]
465pub struct AddressPool {
466    /// The prefix length (in bits) of the address pool's subnet mask.
467    pub prefix_length: Option<u8>,
468    /// The starting address, inclusive, of the range of addresses which the
469    /// DHCP server will lease to clients.
470    pub range_start: Option<fidl_fuchsia_net_common::Ipv4Address>,
471    /// The ending address, exclusive, of the range of addresses which the
472    /// server will lease to clients.
473    pub range_stop: Option<fidl_fuchsia_net_common::Ipv4Address>,
474    #[doc(hidden)]
475    pub __source_breaking: fidl::marker::SourceBreaking,
476}
477
478impl fidl::Persistable for AddressPool {}
479
480/// Describes the configuration information the DHCP client requests from DHCP
481/// servers.
482#[derive(Clone, Debug, Default, PartialEq)]
483pub struct ConfigurationToRequest {
484    /// Request a list of IP addresses for routers on the client's subnet,
485    /// in order of preference.
486    /// See [RFC 2132 section 3.5](https://www.rfc-editor.org/rfc/rfc2132#section-3.5).
487    ///
488    /// If not set, interpreted as false.
489    pub routers: Option<bool>,
490    /// Request a list of available DNS servers.
491    /// See [RFC 2132 section 3.8](https://www.rfc-editor.org/rfc/rfc2132#section-3.8).
492    ///
493    /// If not set, interpreted as false.
494    pub dns_servers: Option<bool>,
495    #[doc(hidden)]
496    pub __source_breaking: fidl::marker::SourceBreaking,
497}
498
499impl fidl::Persistable for ConfigurationToRequest {}
500
501#[derive(Clone, Debug, Default, PartialEq)]
502pub struct LeaseLength {
503    /// The default lease length to be issued to clients. This field must
504    /// have a value.
505    pub default: Option<u32>,
506    /// The maximum lease length value which the server will issue to
507    /// clients who have requested a specific lease length. If omitted, the
508    /// max lease length is equivalent to the default lease length.
509    pub max: Option<u32>,
510    #[doc(hidden)]
511    pub __source_breaking: fidl::marker::SourceBreaking,
512}
513
514impl fidl::Persistable for LeaseLength {}
515
516#[derive(Clone, Debug, Default, PartialEq)]
517pub struct NewClientParams {
518    /// Parameters for describing the configuration information the DHCP
519    /// client requests from DHCP servers.
520    ///
521    /// If not set, interpreted as empty (no configuration information
522    /// is requested).
523    pub configuration_to_request: Option<ConfigurationToRequest>,
524    /// Whether the client negotiates an IP address.
525    ///
526    /// If false or not set, the client asks only for local
527    /// configuration parameters.
528    /// See [RFC 2131 section 3.4](https://www.rfc-editor.org/rfc/rfc2131#section-3.4).
529    pub request_ip_address: Option<bool>,
530    #[doc(hidden)]
531    pub __source_breaking: fidl::marker::SourceBreaking,
532}
533
534impl fidl::Persistable for NewClientParams {}
535
536#[derive(Clone, Debug, Default, PartialEq)]
537pub struct StaticAssignment {
538    /// The MAC address of the host or device which will have the static IP
539    /// address assignment.
540    pub host: Option<fidl_fuchsia_net_common::MacAddress>,
541    /// The IP address which the host or device will always be assigned the
542    /// server.
543    pub assigned_addr: Option<fidl_fuchsia_net_common::Ipv4Address>,
544    #[doc(hidden)]
545    pub __source_breaking: fidl::marker::SourceBreaking,
546}
547
548impl fidl::Persistable for StaticAssignment {}
549
550/// A generic representation of client configuration parameters and DHCP settings. Options are the
551/// mechanism by which the DHCP protocol communicates configuration parameters from a repository on
552/// a DHCP server to DHCP clients, or by which DHCP clients and servers communicate data relevant to
553/// a DHCP transaction.
554/// All DHCP option values must have a length which can fit within a single byte, i.e. less than 256.
555/// Options for which there is no reasonable administrator-configurable value have been omitted
556/// from this xunion. The omitted options are:
557/// * Pad - never has a value
558/// * End - never has a value
559/// * RequestedIpAddress - value always selected by the DHCP client.
560/// * DhcpMessageType - value always determined by state of transaction between DHCP client and server.
561/// * ServerIdentifier - value always determined by address to which the server is bound.
562/// * ParameterRequestList - value always selected by the DHCP client.
563/// * Message - value determined in response to runtime error.
564/// * VendorClassIdentifer - value always selected by the DHCP client.
565/// * ClientIdentifier - value always selected by the DHCP client.
566#[derive(Clone, Debug)]
567pub enum Option_ {
568    /// A 32-bit IPv4 subnet mask.
569    SubnetMask(fidl_fuchsia_net_common::Ipv4Address),
570    /// The client's offset from UTC in seconds. A positive offset is east of the zero meridian, and
571    /// a negative offset is west of the zero meridian.
572    TimeOffset(i32),
573    /// A list of the routers in a client's subnet, listed in order of preference.
574    Router(Vec<fidl_fuchsia_net_common::Ipv4Address>),
575    /// A list of time servers available to the client, in order of preference.
576    TimeServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
577    /// A list of IEN 116 Name servers available to the client, in order of preference.
578    NameServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
579    /// A list of Domain Name System servers available to the client, in order of preference;
580    DomainNameServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
581    /// A list of MIT-LCS UDP Log servers available to the client, in order of preference.
582    LogServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
583    /// A list of RFC 865 Cookie servers available to the client, in order of preference.
584    CookieServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
585    /// A list of RFC 1179 Line Printer servers available to the client, in order of preference.
586    LprServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
587    /// A list of Imagen Impress servers available to the client, in order of preference.
588    ImpressServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
589    /// A list of RFC 887 Resource Location servers available to the client, in order of preference.
590    ResourceLocationServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
591    /// The host name of the client, which may or may not be qualified with the local domain name.
592    HostName(String),
593    /// The size of the client's default boot image in 512-octet blocks.
594    BootFileSize(u16),
595    /// The path name to the client's core dump in the event the client crashes.
596    MeritDumpFile(String),
597    /// The client's domain name for use in resolving hostnames in the DNS.
598    DomainName(String),
599    /// The address of the client's swap server.
600    SwapServer(fidl_fuchsia_net_common::Ipv4Address),
601    /// The path name to the client's root disk.
602    RootPath(String),
603    /// The path name to a TFTP-retrievable file. This file contains data which can be interpreted
604    /// as the BOOTP vendor-extension field. Unlike the BOOTP vendor-extension field, this file has
605    /// an unconstrained length and any references to Tag 18 are ignored.
606    ExtensionsPath(String),
607    /// A flag which will enabled IP layer packet forwarding when true.
608    IpForwarding(bool),
609    /// A flag which will enable forwarding of IP packets with non-local source routes.
610    NonLocalSourceRouting(bool),
611    /// Policy filters for non-local source routing.
612    /// A list of IP Address and Subnet Mask pairs. If an incoming source-routed packet has a
613    /// next-hop that does not match one of these pairs, then the packet will be dropped.
614    PolicyFilter(Vec<fidl_fuchsia_net_common::Ipv4Address>),
615    /// The maximum sized datagram that the client should be able to reassemble, in octets. The
616    /// minimum legal value is 576.
617    MaxDatagramReassemblySize(u16),
618    /// The default time-to-live to use on outgoing IP datagrams. The value must be between 1 and
619    /// 255.
620    DefaultIpTtl(u8),
621    /// The timeout to be used when aging Path MTU values by the mechanism in RFC 1191.
622    PathMtuAgingTimeout(u32),
623    /// Table of MTU sizes for Path MTU Discovery.
624    /// A list of MTU sizes, ordered from smallest to largest. The smallest value cannot be smaller
625    /// than 68.
626    PathMtuPlateauTable(Vec<u16>),
627    /// The MTU for the client's interface. Minimum value of 68.
628    InterfaceMtu(u16),
629    /// A flag indicating if all subents of the IP network to which the client is connected have the
630    /// same MTU.
631    AllSubnetsLocal(bool),
632    /// The broadcast address of the client's subnet. Legal values are defined in RFC 1122.
633    BroadcastAddress(fidl_fuchsia_net_common::Ipv4Address),
634    /// A flag indicating whether the client should perform subnet mask discovery via ICMP.
635    PerformMaskDiscovery(bool),
636    /// A flag indicating whether the client should respond to subnet mask discovery requests via
637    /// ICMP.
638    MaskSupplier(bool),
639    /// A flag indicating whether the client should solicit routers using Router Discovery as
640    /// defined in RFC 1256.
641    PerformRouterDiscovery(bool),
642    /// The address to which the client should transmit Router Solicitation requests.
643    RouterSolicitationAddress(fidl_fuchsia_net_common::Ipv4Address),
644    /// Static Routes which the host should put in its routing cache.
645    /// A list of Destination address/Next-hop address pairs defining static routes for the client's
646    /// routing table. The routes should be listed in descending order of priority. It is illegal
647    /// to use 0.0.0.0 as the destination in a static route.
648    StaticRoute(Vec<fidl_fuchsia_net_common::Ipv4Address>),
649    /// A flag specifying whether the client negotiate the use of trailers when using ARP, per RFC
650    /// 893.
651    TrailerEncapsulation(bool),
652    /// The timeout for ARP cache entries.
653    ArpCacheTimeout(u32),
654    /// A flag specifying that the client should use Ethernet v2 encapsulation when false, and IEEE
655    /// 802.3 encapsulation when true.
656    EthernetEncapsulation(bool),
657    /// The default time-to-live that the client should use for outgoing TCP segments. The minimum
658    /// value is 1.
659    TcpDefaultTtl(u8),
660    /// The interval the client should wait before sending a TCP keepalive message. A
661    /// value of 0 indicates that the client should not send keepalive messages unless specifically
662    /// requested by an application.
663    TcpKeepaliveInterval(u32),
664    /// A flag specifying whether the client should send TCP keepalive messages with an octet of
665    /// garbage for compatibility with older implementations.
666    TcpKeepaliveGarbage(bool),
667    /// The name of the client's Network Information Service domain.
668    NetworkInformationServiceDomain(String),
669    /// A list of Network Information Service server addresses available to the client, listed in
670    /// order of preference.
671    NetworkInformationServers(Vec<fidl_fuchsia_net_common::Ipv4Address>),
672    /// A list of Network Time Protocol (NTP) server addresses available to the client, listed in
673    /// order of preference.
674    NetworkTimeProtocolServers(Vec<fidl_fuchsia_net_common::Ipv4Address>),
675    /// An opaque object of octets for exchanging vendor-specific information.
676    VendorSpecificInformation(Vec<u8>),
677    /// A list of NetBIOS name server addresses available to the client, listed in order of
678    /// preference.
679    NetbiosOverTcpipNameServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
680    /// A list of NetBIOS datagram distribution servers available to the client, listed in order of
681    /// preference.
682    NetbiosOverTcpipDatagramDistributionServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
683    /// The NetBIOS node type which should be used by the client.
684    NetbiosOverTcpipNodeType(NodeTypes),
685    /// The NetBIOS over TCP/IP scope parameter, as defined in RFC 1001, for the client.
686    NetbiosOverTcpipScope(String),
687    /// A list of X Window System Font server addresses available to the client, listed in order of
688    /// preference.
689    XWindowSystemFontServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
690    /// A list of X Window System Display Manager system addresses available to the client, listed
691    /// in order of preference.
692    XWindowSystemDisplayManager(Vec<fidl_fuchsia_net_common::Ipv4Address>),
693    /// The name of the client's Network Information System+ domain.
694    NetworkInformationServicePlusDomain(String),
695    /// A list of Network Information System+ server addresses available to the client, listed in
696    /// order of preference.
697    NetworkInformationServicePlusServers(Vec<fidl_fuchsia_net_common::Ipv4Address>),
698    /// A list of mobile IP home agent addresses available to the client, listed in order of
699    /// preference.
700    MobileIpHomeAgent(Vec<fidl_fuchsia_net_common::Ipv4Address>),
701    /// A list of Simple Mail Transport Protocol (SMTP) server address available to the client,
702    /// listed in order of preference.
703    SmtpServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
704    /// A list of Post Office Protocol (POP3) server addresses available to the client, listed in
705    /// order of preference.
706    Pop3Server(Vec<fidl_fuchsia_net_common::Ipv4Address>),
707    /// A list Network News Transport Protocol (NNTP) server addresses available to the client,
708    /// listed in order of preference.
709    NntpServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
710    /// A list of default World Wide Web (WWW) server addresses available to the client, listed in
711    /// order of preference.
712    DefaultWwwServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
713    /// A list of default Finger server addresses available to the client, listed in order of
714    /// preference.
715    DefaultFingerServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
716    /// A list of Internet Relay Chat server addresses available to the client, listed in order of
717    /// preference.
718    DefaultIrcServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
719    /// A list of StreetTalk server addresses available to the client, listed in order of
720    /// preference.
721    StreettalkServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
722    /// A list of StreetTalk Directory Assistance server addresses available to the client, listed
723    /// in order of preference.
724    StreettalkDirectoryAssistanceServer(Vec<fidl_fuchsia_net_common::Ipv4Address>),
725    /// An option specifying whether the `sname`, `file`, or both fields have been overloaded to
726    /// carry DHCP options. If this option is present, the client interprets the additional fields
727    /// after it concludes interpreting standard option fields.
728    OptionOverload(OptionOverloadValue),
729    /// The TFTP server name available to the client. This option should be used when the `sname`
730    /// field has been overloaded to carry options.
731    TftpServerName(String),
732    /// The bootfile name for the client. This option should be used when the `file` field has been
733    /// overloaded to carry options.
734    BootfileName(String),
735    /// The maximum length in octets of a DHCP message that the participant is willing to accept.
736    /// The minimum value is 576.
737    MaxDhcpMessageSize(u16),
738    /// The time interval after address assignment at which the client will transition
739    /// to the Renewing state.
740    RenewalTimeValue(u32),
741    /// The time interval after address assignment at which the client will transition
742    /// to the Rebinding state.
743    RebindingTimeValue(u32),
744    #[doc(hidden)]
745    __SourceBreaking { unknown_ordinal: u64 },
746}
747
748/// Pattern that matches an unknown `Option_` member.
749#[macro_export]
750macro_rules! Option_Unknown {
751    () => {
752        _
753    };
754}
755
756// Custom PartialEq so that unknown variants are not equal to themselves.
757impl PartialEq for Option_ {
758    fn eq(&self, other: &Self) -> bool {
759        match (self, other) {
760            (Self::SubnetMask(x), Self::SubnetMask(y)) => *x == *y,
761            (Self::TimeOffset(x), Self::TimeOffset(y)) => *x == *y,
762            (Self::Router(x), Self::Router(y)) => *x == *y,
763            (Self::TimeServer(x), Self::TimeServer(y)) => *x == *y,
764            (Self::NameServer(x), Self::NameServer(y)) => *x == *y,
765            (Self::DomainNameServer(x), Self::DomainNameServer(y)) => *x == *y,
766            (Self::LogServer(x), Self::LogServer(y)) => *x == *y,
767            (Self::CookieServer(x), Self::CookieServer(y)) => *x == *y,
768            (Self::LprServer(x), Self::LprServer(y)) => *x == *y,
769            (Self::ImpressServer(x), Self::ImpressServer(y)) => *x == *y,
770            (Self::ResourceLocationServer(x), Self::ResourceLocationServer(y)) => *x == *y,
771            (Self::HostName(x), Self::HostName(y)) => *x == *y,
772            (Self::BootFileSize(x), Self::BootFileSize(y)) => *x == *y,
773            (Self::MeritDumpFile(x), Self::MeritDumpFile(y)) => *x == *y,
774            (Self::DomainName(x), Self::DomainName(y)) => *x == *y,
775            (Self::SwapServer(x), Self::SwapServer(y)) => *x == *y,
776            (Self::RootPath(x), Self::RootPath(y)) => *x == *y,
777            (Self::ExtensionsPath(x), Self::ExtensionsPath(y)) => *x == *y,
778            (Self::IpForwarding(x), Self::IpForwarding(y)) => *x == *y,
779            (Self::NonLocalSourceRouting(x), Self::NonLocalSourceRouting(y)) => *x == *y,
780            (Self::PolicyFilter(x), Self::PolicyFilter(y)) => *x == *y,
781            (Self::MaxDatagramReassemblySize(x), Self::MaxDatagramReassemblySize(y)) => *x == *y,
782            (Self::DefaultIpTtl(x), Self::DefaultIpTtl(y)) => *x == *y,
783            (Self::PathMtuAgingTimeout(x), Self::PathMtuAgingTimeout(y)) => *x == *y,
784            (Self::PathMtuPlateauTable(x), Self::PathMtuPlateauTable(y)) => *x == *y,
785            (Self::InterfaceMtu(x), Self::InterfaceMtu(y)) => *x == *y,
786            (Self::AllSubnetsLocal(x), Self::AllSubnetsLocal(y)) => *x == *y,
787            (Self::BroadcastAddress(x), Self::BroadcastAddress(y)) => *x == *y,
788            (Self::PerformMaskDiscovery(x), Self::PerformMaskDiscovery(y)) => *x == *y,
789            (Self::MaskSupplier(x), Self::MaskSupplier(y)) => *x == *y,
790            (Self::PerformRouterDiscovery(x), Self::PerformRouterDiscovery(y)) => *x == *y,
791            (Self::RouterSolicitationAddress(x), Self::RouterSolicitationAddress(y)) => *x == *y,
792            (Self::StaticRoute(x), Self::StaticRoute(y)) => *x == *y,
793            (Self::TrailerEncapsulation(x), Self::TrailerEncapsulation(y)) => *x == *y,
794            (Self::ArpCacheTimeout(x), Self::ArpCacheTimeout(y)) => *x == *y,
795            (Self::EthernetEncapsulation(x), Self::EthernetEncapsulation(y)) => *x == *y,
796            (Self::TcpDefaultTtl(x), Self::TcpDefaultTtl(y)) => *x == *y,
797            (Self::TcpKeepaliveInterval(x), Self::TcpKeepaliveInterval(y)) => *x == *y,
798            (Self::TcpKeepaliveGarbage(x), Self::TcpKeepaliveGarbage(y)) => *x == *y,
799            (
800                Self::NetworkInformationServiceDomain(x),
801                Self::NetworkInformationServiceDomain(y),
802            ) => *x == *y,
803            (Self::NetworkInformationServers(x), Self::NetworkInformationServers(y)) => *x == *y,
804            (Self::NetworkTimeProtocolServers(x), Self::NetworkTimeProtocolServers(y)) => *x == *y,
805            (Self::VendorSpecificInformation(x), Self::VendorSpecificInformation(y)) => *x == *y,
806            (Self::NetbiosOverTcpipNameServer(x), Self::NetbiosOverTcpipNameServer(y)) => *x == *y,
807            (
808                Self::NetbiosOverTcpipDatagramDistributionServer(x),
809                Self::NetbiosOverTcpipDatagramDistributionServer(y),
810            ) => *x == *y,
811            (Self::NetbiosOverTcpipNodeType(x), Self::NetbiosOverTcpipNodeType(y)) => *x == *y,
812            (Self::NetbiosOverTcpipScope(x), Self::NetbiosOverTcpipScope(y)) => *x == *y,
813            (Self::XWindowSystemFontServer(x), Self::XWindowSystemFontServer(y)) => *x == *y,
814            (Self::XWindowSystemDisplayManager(x), Self::XWindowSystemDisplayManager(y)) => {
815                *x == *y
816            }
817            (
818                Self::NetworkInformationServicePlusDomain(x),
819                Self::NetworkInformationServicePlusDomain(y),
820            ) => *x == *y,
821            (
822                Self::NetworkInformationServicePlusServers(x),
823                Self::NetworkInformationServicePlusServers(y),
824            ) => *x == *y,
825            (Self::MobileIpHomeAgent(x), Self::MobileIpHomeAgent(y)) => *x == *y,
826            (Self::SmtpServer(x), Self::SmtpServer(y)) => *x == *y,
827            (Self::Pop3Server(x), Self::Pop3Server(y)) => *x == *y,
828            (Self::NntpServer(x), Self::NntpServer(y)) => *x == *y,
829            (Self::DefaultWwwServer(x), Self::DefaultWwwServer(y)) => *x == *y,
830            (Self::DefaultFingerServer(x), Self::DefaultFingerServer(y)) => *x == *y,
831            (Self::DefaultIrcServer(x), Self::DefaultIrcServer(y)) => *x == *y,
832            (Self::StreettalkServer(x), Self::StreettalkServer(y)) => *x == *y,
833            (
834                Self::StreettalkDirectoryAssistanceServer(x),
835                Self::StreettalkDirectoryAssistanceServer(y),
836            ) => *x == *y,
837            (Self::OptionOverload(x), Self::OptionOverload(y)) => *x == *y,
838            (Self::TftpServerName(x), Self::TftpServerName(y)) => *x == *y,
839            (Self::BootfileName(x), Self::BootfileName(y)) => *x == *y,
840            (Self::MaxDhcpMessageSize(x), Self::MaxDhcpMessageSize(y)) => *x == *y,
841            (Self::RenewalTimeValue(x), Self::RenewalTimeValue(y)) => *x == *y,
842            (Self::RebindingTimeValue(x), Self::RebindingTimeValue(y)) => *x == *y,
843            _ => false,
844        }
845    }
846}
847
848impl Option_ {
849    #[inline]
850    pub fn ordinal(&self) -> u64 {
851        match *self {
852            Self::SubnetMask(_) => 1,
853            Self::TimeOffset(_) => 2,
854            Self::Router(_) => 3,
855            Self::TimeServer(_) => 4,
856            Self::NameServer(_) => 5,
857            Self::DomainNameServer(_) => 6,
858            Self::LogServer(_) => 7,
859            Self::CookieServer(_) => 8,
860            Self::LprServer(_) => 9,
861            Self::ImpressServer(_) => 10,
862            Self::ResourceLocationServer(_) => 11,
863            Self::HostName(_) => 12,
864            Self::BootFileSize(_) => 13,
865            Self::MeritDumpFile(_) => 14,
866            Self::DomainName(_) => 15,
867            Self::SwapServer(_) => 16,
868            Self::RootPath(_) => 17,
869            Self::ExtensionsPath(_) => 18,
870            Self::IpForwarding(_) => 19,
871            Self::NonLocalSourceRouting(_) => 20,
872            Self::PolicyFilter(_) => 21,
873            Self::MaxDatagramReassemblySize(_) => 22,
874            Self::DefaultIpTtl(_) => 23,
875            Self::PathMtuAgingTimeout(_) => 24,
876            Self::PathMtuPlateauTable(_) => 25,
877            Self::InterfaceMtu(_) => 26,
878            Self::AllSubnetsLocal(_) => 27,
879            Self::BroadcastAddress(_) => 28,
880            Self::PerformMaskDiscovery(_) => 29,
881            Self::MaskSupplier(_) => 30,
882            Self::PerformRouterDiscovery(_) => 31,
883            Self::RouterSolicitationAddress(_) => 32,
884            Self::StaticRoute(_) => 33,
885            Self::TrailerEncapsulation(_) => 34,
886            Self::ArpCacheTimeout(_) => 35,
887            Self::EthernetEncapsulation(_) => 36,
888            Self::TcpDefaultTtl(_) => 37,
889            Self::TcpKeepaliveInterval(_) => 38,
890            Self::TcpKeepaliveGarbage(_) => 39,
891            Self::NetworkInformationServiceDomain(_) => 40,
892            Self::NetworkInformationServers(_) => 41,
893            Self::NetworkTimeProtocolServers(_) => 42,
894            Self::VendorSpecificInformation(_) => 43,
895            Self::NetbiosOverTcpipNameServer(_) => 44,
896            Self::NetbiosOverTcpipDatagramDistributionServer(_) => 45,
897            Self::NetbiosOverTcpipNodeType(_) => 46,
898            Self::NetbiosOverTcpipScope(_) => 47,
899            Self::XWindowSystemFontServer(_) => 48,
900            Self::XWindowSystemDisplayManager(_) => 49,
901            Self::NetworkInformationServicePlusDomain(_) => 50,
902            Self::NetworkInformationServicePlusServers(_) => 51,
903            Self::MobileIpHomeAgent(_) => 52,
904            Self::SmtpServer(_) => 53,
905            Self::Pop3Server(_) => 54,
906            Self::NntpServer(_) => 55,
907            Self::DefaultWwwServer(_) => 56,
908            Self::DefaultFingerServer(_) => 57,
909            Self::DefaultIrcServer(_) => 58,
910            Self::StreettalkServer(_) => 59,
911            Self::StreettalkDirectoryAssistanceServer(_) => 60,
912            Self::OptionOverload(_) => 61,
913            Self::TftpServerName(_) => 62,
914            Self::BootfileName(_) => 63,
915            Self::MaxDhcpMessageSize(_) => 64,
916            Self::RenewalTimeValue(_) => 65,
917            Self::RebindingTimeValue(_) => 66,
918            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
919        }
920    }
921
922    #[inline]
923    pub fn unknown_variant_for_testing() -> Self {
924        Self::__SourceBreaking { unknown_ordinal: 0 }
925    }
926
927    #[inline]
928    pub fn is_unknown(&self) -> bool {
929        match self {
930            Self::__SourceBreaking { .. } => true,
931            _ => false,
932        }
933    }
934}
935
936impl fidl::Persistable for Option_ {}
937
938/// The configurable server parameters.
939#[derive(Clone, Debug)]
940pub enum Parameter {
941    /// The IP addresses to which the server is bound. The vector bound has been
942    /// arbitrarily selected as a generous upper limit.
943    IpAddrs(Vec<fidl_fuchsia_net_common::Ipv4Address>),
944    /// The pool of addresses managed by a DHCP server and from which leases are
945    /// supplied.
946    ///
947    /// The pool is valid iff all of the following are true:
948    ///   1) All fields are present.
949    ///   2) The stop address is larger than the start address.
950    ///   3) The prefix length is large enough to fit the full range of
951    ///      addresses.
952    ///
953    /// For example, a pool of 4 addresses with a 24 bit subnet mask could be
954    /// specified as:
955    ///   {
956    ///     prefix_length: 24,
957    ///     range_start: 192.168.1.2,
958    ///     range_stop: 192.168.1.5,
959    ///   }
960    ///
961    /// Changing the address pool will not cancel existing leases because the
962    /// DHCP protocol does not provide a mechanism for doing so. Administrators
963    /// should take care when changing the address pool for a server with active
964    /// leases.
965    AddressPool(AddressPool),
966    /// The duration of leases offered by the server.
967    Lease(LeaseLength),
968    /// The client MAC addresses which the server will issue leases to. By
969    /// default, the server will not have a permitted MAC list, in which case it
970    /// will attempt to issue a lease to every client which requests one. If
971    /// permitted_macs has a non-zero length then the server will only respond
972    /// to lease requests from clients with  MAC in the list. The vector bound
973    /// has been arbitrarily selected as a generous upper limit.
974    PermittedMacs(Vec<fidl_fuchsia_net_common::MacAddress>),
975    /// Addresses statically assigned to specific hosts or devices. Typically, a
976    /// network administrator will statically assign addresses to always-on
977    /// network devices which should always have the same IP address, such as
978    /// network printers. The vector bound has been arbitrarily selected as a
979    /// generous upper limit.
980    StaticallyAssignedAddrs(Vec<StaticAssignment>),
981    /// Enables server behavior where the server ARPs an IP address prior to
982    /// issuing it in a lease. If the server receives a response, the server
983    /// will mark the address as in-use and try again with a different address.
984    ArpProbe(bool),
985    /// The names of the interface to which the server will listen. If this
986    /// vector is empty, the server will listen on all interfaces and will
987    /// process incoming DHCP messages regardless of the interface on which they
988    /// arrive. If this vector is not empty, then the server will only listen
989    /// for incoming DHCP messages on the named interfaces contained by this
990    /// vector. The string and vectors bounds have been arbitrarily selected as
991    /// generous upper limits.
992    BoundDeviceNames(Vec<String>),
993    #[doc(hidden)]
994    __SourceBreaking { unknown_ordinal: u64 },
995}
996
997/// Pattern that matches an unknown `Parameter` member.
998#[macro_export]
999macro_rules! ParameterUnknown {
1000    () => {
1001        _
1002    };
1003}
1004
1005// Custom PartialEq so that unknown variants are not equal to themselves.
1006impl PartialEq for Parameter {
1007    fn eq(&self, other: &Self) -> bool {
1008        match (self, other) {
1009            (Self::IpAddrs(x), Self::IpAddrs(y)) => *x == *y,
1010            (Self::AddressPool(x), Self::AddressPool(y)) => *x == *y,
1011            (Self::Lease(x), Self::Lease(y)) => *x == *y,
1012            (Self::PermittedMacs(x), Self::PermittedMacs(y)) => *x == *y,
1013            (Self::StaticallyAssignedAddrs(x), Self::StaticallyAssignedAddrs(y)) => *x == *y,
1014            (Self::ArpProbe(x), Self::ArpProbe(y)) => *x == *y,
1015            (Self::BoundDeviceNames(x), Self::BoundDeviceNames(y)) => *x == *y,
1016            _ => false,
1017        }
1018    }
1019}
1020
1021impl Parameter {
1022    #[inline]
1023    pub fn ordinal(&self) -> u64 {
1024        match *self {
1025            Self::IpAddrs(_) => 1,
1026            Self::AddressPool(_) => 2,
1027            Self::Lease(_) => 3,
1028            Self::PermittedMacs(_) => 4,
1029            Self::StaticallyAssignedAddrs(_) => 5,
1030            Self::ArpProbe(_) => 6,
1031            Self::BoundDeviceNames(_) => 7,
1032            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1033        }
1034    }
1035
1036    #[inline]
1037    pub fn unknown_variant_for_testing() -> Self {
1038        Self::__SourceBreaking { unknown_ordinal: 0 }
1039    }
1040
1041    #[inline]
1042    pub fn is_unknown(&self) -> bool {
1043        match self {
1044            Self::__SourceBreaking { .. } => true,
1045            _ => false,
1046        }
1047    }
1048}
1049
1050impl fidl::Persistable for Parameter {}
1051
1052pub mod client_ordinals {
1053    pub const WATCH_CONFIGURATION: u64 = 0x2b6f7c7d3bcc6682;
1054    pub const SHUTDOWN: u64 = 0x265a3213e9a8abde;
1055    pub const ON_EXIT: u64 = 0x2a2a052260f657c0;
1056}
1057
1058pub mod client_provider_ordinals {
1059    pub const NEW_CLIENT: u64 = 0x317e9af2e462cbcd;
1060}
1061
1062pub mod server__ordinals {
1063    pub const START_SERVING: u64 = 0x10990e324ac53cd1;
1064    pub const STOP_SERVING: u64 = 0x7776cfe9f68a0dbe;
1065    pub const IS_SERVING: u64 = 0x45aadc35fcbe3826;
1066    pub const GET_OPTION: u64 = 0x5305ee2c593f68a;
1067    pub const GET_PARAMETER: u64 = 0x1e8c98758fb82714;
1068    pub const SET_OPTION: u64 = 0x63c98b670db8d96a;
1069    pub const SET_PARAMETER: u64 = 0x3002d0d956eb4bdc;
1070    pub const LIST_OPTIONS: u64 = 0x72c8161c69ca67b;
1071    pub const LIST_PARAMETERS: u64 = 0xa201b1d6d121c59;
1072    pub const RESET_OPTIONS: u64 = 0x31014911fd21cc13;
1073    pub const RESET_PARAMETERS: u64 = 0x353fba50bcf4ecec;
1074    pub const CLEAR_LEASES: u64 = 0xe39e35cda85a04d;
1075}
1076
1077mod internal {
1078    use super::*;
1079    unsafe impl fidl::encoding::TypeMarker for NodeTypes {
1080        type Owned = Self;
1081
1082        #[inline(always)]
1083        fn inline_align(_context: fidl::encoding::Context) -> usize {
1084            1
1085        }
1086
1087        #[inline(always)]
1088        fn inline_size(_context: fidl::encoding::Context) -> usize {
1089            1
1090        }
1091    }
1092
1093    impl fidl::encoding::ValueTypeMarker for NodeTypes {
1094        type Borrowed<'a> = Self;
1095        #[inline(always)]
1096        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1097            *value
1098        }
1099    }
1100
1101    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for NodeTypes {
1102        #[inline]
1103        unsafe fn encode(
1104            self,
1105            encoder: &mut fidl::encoding::Encoder<'_, D>,
1106            offset: usize,
1107            _depth: fidl::encoding::Depth,
1108        ) -> fidl::Result<()> {
1109            encoder.debug_check_bounds::<Self>(offset);
1110            if self.bits() & Self::all().bits() != self.bits() {
1111                return Err(fidl::Error::InvalidBitsValue);
1112            }
1113            encoder.write_num(self.bits(), offset);
1114            Ok(())
1115        }
1116    }
1117
1118    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeTypes {
1119        #[inline(always)]
1120        fn new_empty() -> Self {
1121            Self::empty()
1122        }
1123
1124        #[inline]
1125        unsafe fn decode(
1126            &mut self,
1127            decoder: &mut fidl::encoding::Decoder<'_, D>,
1128            offset: usize,
1129            _depth: fidl::encoding::Depth,
1130        ) -> fidl::Result<()> {
1131            decoder.debug_check_bounds::<Self>(offset);
1132            let prim = decoder.read_num::<u8>(offset);
1133            *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
1134            Ok(())
1135        }
1136    }
1137    unsafe impl fidl::encoding::TypeMarker for ClientExitReason {
1138        type Owned = Self;
1139
1140        #[inline(always)]
1141        fn inline_align(_context: fidl::encoding::Context) -> usize {
1142            std::mem::align_of::<u32>()
1143        }
1144
1145        #[inline(always)]
1146        fn inline_size(_context: fidl::encoding::Context) -> usize {
1147            std::mem::size_of::<u32>()
1148        }
1149
1150        #[inline(always)]
1151        fn encode_is_copy() -> bool {
1152            true
1153        }
1154
1155        #[inline(always)]
1156        fn decode_is_copy() -> bool {
1157            false
1158        }
1159    }
1160
1161    impl fidl::encoding::ValueTypeMarker for ClientExitReason {
1162        type Borrowed<'a> = Self;
1163        #[inline(always)]
1164        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1165            *value
1166        }
1167    }
1168
1169    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1170        for ClientExitReason
1171    {
1172        #[inline]
1173        unsafe fn encode(
1174            self,
1175            encoder: &mut fidl::encoding::Encoder<'_, D>,
1176            offset: usize,
1177            _depth: fidl::encoding::Depth,
1178        ) -> fidl::Result<()> {
1179            encoder.debug_check_bounds::<Self>(offset);
1180            encoder.write_num(self.into_primitive(), offset);
1181            Ok(())
1182        }
1183    }
1184
1185    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ClientExitReason {
1186        #[inline(always)]
1187        fn new_empty() -> Self {
1188            Self::ClientAlreadyExistsOnInterface
1189        }
1190
1191        #[inline]
1192        unsafe fn decode(
1193            &mut self,
1194            decoder: &mut fidl::encoding::Decoder<'_, D>,
1195            offset: usize,
1196            _depth: fidl::encoding::Depth,
1197        ) -> fidl::Result<()> {
1198            decoder.debug_check_bounds::<Self>(offset);
1199            let prim = decoder.read_num::<u32>(offset);
1200
1201            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1202            Ok(())
1203        }
1204    }
1205    unsafe impl fidl::encoding::TypeMarker for MessageType {
1206        type Owned = Self;
1207
1208        #[inline(always)]
1209        fn inline_align(_context: fidl::encoding::Context) -> usize {
1210            std::mem::align_of::<u8>()
1211        }
1212
1213        #[inline(always)]
1214        fn inline_size(_context: fidl::encoding::Context) -> usize {
1215            std::mem::size_of::<u8>()
1216        }
1217
1218        #[inline(always)]
1219        fn encode_is_copy() -> bool {
1220            true
1221        }
1222
1223        #[inline(always)]
1224        fn decode_is_copy() -> bool {
1225            false
1226        }
1227    }
1228
1229    impl fidl::encoding::ValueTypeMarker for MessageType {
1230        type Borrowed<'a> = Self;
1231        #[inline(always)]
1232        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1233            *value
1234        }
1235    }
1236
1237    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for MessageType {
1238        #[inline]
1239        unsafe fn encode(
1240            self,
1241            encoder: &mut fidl::encoding::Encoder<'_, D>,
1242            offset: usize,
1243            _depth: fidl::encoding::Depth,
1244        ) -> fidl::Result<()> {
1245            encoder.debug_check_bounds::<Self>(offset);
1246            encoder.write_num(self.into_primitive(), offset);
1247            Ok(())
1248        }
1249    }
1250
1251    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MessageType {
1252        #[inline(always)]
1253        fn new_empty() -> Self {
1254            Self::Dhcpdiscover
1255        }
1256
1257        #[inline]
1258        unsafe fn decode(
1259            &mut self,
1260            decoder: &mut fidl::encoding::Decoder<'_, D>,
1261            offset: usize,
1262            _depth: fidl::encoding::Depth,
1263        ) -> fidl::Result<()> {
1264            decoder.debug_check_bounds::<Self>(offset);
1265            let prim = decoder.read_num::<u8>(offset);
1266
1267            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1268            Ok(())
1269        }
1270    }
1271    unsafe impl fidl::encoding::TypeMarker for OptionCode {
1272        type Owned = Self;
1273
1274        #[inline(always)]
1275        fn inline_align(_context: fidl::encoding::Context) -> usize {
1276            std::mem::align_of::<u32>()
1277        }
1278
1279        #[inline(always)]
1280        fn inline_size(_context: fidl::encoding::Context) -> usize {
1281            std::mem::size_of::<u32>()
1282        }
1283
1284        #[inline(always)]
1285        fn encode_is_copy() -> bool {
1286            true
1287        }
1288
1289        #[inline(always)]
1290        fn decode_is_copy() -> bool {
1291            false
1292        }
1293    }
1294
1295    impl fidl::encoding::ValueTypeMarker for OptionCode {
1296        type Borrowed<'a> = Self;
1297        #[inline(always)]
1298        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1299            *value
1300        }
1301    }
1302
1303    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for OptionCode {
1304        #[inline]
1305        unsafe fn encode(
1306            self,
1307            encoder: &mut fidl::encoding::Encoder<'_, D>,
1308            offset: usize,
1309            _depth: fidl::encoding::Depth,
1310        ) -> fidl::Result<()> {
1311            encoder.debug_check_bounds::<Self>(offset);
1312            encoder.write_num(self.into_primitive(), offset);
1313            Ok(())
1314        }
1315    }
1316
1317    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OptionCode {
1318        #[inline(always)]
1319        fn new_empty() -> Self {
1320            Self::SubnetMask
1321        }
1322
1323        #[inline]
1324        unsafe fn decode(
1325            &mut self,
1326            decoder: &mut fidl::encoding::Decoder<'_, D>,
1327            offset: usize,
1328            _depth: fidl::encoding::Depth,
1329        ) -> fidl::Result<()> {
1330            decoder.debug_check_bounds::<Self>(offset);
1331            let prim = decoder.read_num::<u32>(offset);
1332
1333            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1334            Ok(())
1335        }
1336    }
1337    unsafe impl fidl::encoding::TypeMarker for OptionOverloadValue {
1338        type Owned = Self;
1339
1340        #[inline(always)]
1341        fn inline_align(_context: fidl::encoding::Context) -> usize {
1342            std::mem::align_of::<u8>()
1343        }
1344
1345        #[inline(always)]
1346        fn inline_size(_context: fidl::encoding::Context) -> usize {
1347            std::mem::size_of::<u8>()
1348        }
1349
1350        #[inline(always)]
1351        fn encode_is_copy() -> bool {
1352            true
1353        }
1354
1355        #[inline(always)]
1356        fn decode_is_copy() -> bool {
1357            false
1358        }
1359    }
1360
1361    impl fidl::encoding::ValueTypeMarker for OptionOverloadValue {
1362        type Borrowed<'a> = Self;
1363        #[inline(always)]
1364        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1365            *value
1366        }
1367    }
1368
1369    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1370        for OptionOverloadValue
1371    {
1372        #[inline]
1373        unsafe fn encode(
1374            self,
1375            encoder: &mut fidl::encoding::Encoder<'_, D>,
1376            offset: usize,
1377            _depth: fidl::encoding::Depth,
1378        ) -> fidl::Result<()> {
1379            encoder.debug_check_bounds::<Self>(offset);
1380            encoder.write_num(self.into_primitive(), offset);
1381            Ok(())
1382        }
1383    }
1384
1385    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OptionOverloadValue {
1386        #[inline(always)]
1387        fn new_empty() -> Self {
1388            Self::File
1389        }
1390
1391        #[inline]
1392        unsafe fn decode(
1393            &mut self,
1394            decoder: &mut fidl::encoding::Decoder<'_, D>,
1395            offset: usize,
1396            _depth: fidl::encoding::Depth,
1397        ) -> fidl::Result<()> {
1398            decoder.debug_check_bounds::<Self>(offset);
1399            let prim = decoder.read_num::<u8>(offset);
1400
1401            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1402            Ok(())
1403        }
1404    }
1405    unsafe impl fidl::encoding::TypeMarker for ParameterName {
1406        type Owned = Self;
1407
1408        #[inline(always)]
1409        fn inline_align(_context: fidl::encoding::Context) -> usize {
1410            std::mem::align_of::<u32>()
1411        }
1412
1413        #[inline(always)]
1414        fn inline_size(_context: fidl::encoding::Context) -> usize {
1415            std::mem::size_of::<u32>()
1416        }
1417
1418        #[inline(always)]
1419        fn encode_is_copy() -> bool {
1420            true
1421        }
1422
1423        #[inline(always)]
1424        fn decode_is_copy() -> bool {
1425            false
1426        }
1427    }
1428
1429    impl fidl::encoding::ValueTypeMarker for ParameterName {
1430        type Borrowed<'a> = Self;
1431        #[inline(always)]
1432        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1433            *value
1434        }
1435    }
1436
1437    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ParameterName {
1438        #[inline]
1439        unsafe fn encode(
1440            self,
1441            encoder: &mut fidl::encoding::Encoder<'_, D>,
1442            offset: usize,
1443            _depth: fidl::encoding::Depth,
1444        ) -> fidl::Result<()> {
1445            encoder.debug_check_bounds::<Self>(offset);
1446            encoder.write_num(self.into_primitive(), offset);
1447            Ok(())
1448        }
1449    }
1450
1451    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ParameterName {
1452        #[inline(always)]
1453        fn new_empty() -> Self {
1454            Self::IpAddrs
1455        }
1456
1457        #[inline]
1458        unsafe fn decode(
1459            &mut self,
1460            decoder: &mut fidl::encoding::Decoder<'_, D>,
1461            offset: usize,
1462            _depth: fidl::encoding::Depth,
1463        ) -> fidl::Result<()> {
1464            decoder.debug_check_bounds::<Self>(offset);
1465            let prim = decoder.read_num::<u32>(offset);
1466
1467            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1468            Ok(())
1469        }
1470    }
1471
1472    impl fidl::encoding::ValueTypeMarker for ClientOnExitRequest {
1473        type Borrowed<'a> = &'a Self;
1474        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1475            value
1476        }
1477    }
1478
1479    unsafe impl fidl::encoding::TypeMarker for ClientOnExitRequest {
1480        type Owned = Self;
1481
1482        #[inline(always)]
1483        fn inline_align(_context: fidl::encoding::Context) -> usize {
1484            4
1485        }
1486
1487        #[inline(always)]
1488        fn inline_size(_context: fidl::encoding::Context) -> usize {
1489            4
1490        }
1491    }
1492
1493    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ClientOnExitRequest, D>
1494        for &ClientOnExitRequest
1495    {
1496        #[inline]
1497        unsafe fn encode(
1498            self,
1499            encoder: &mut fidl::encoding::Encoder<'_, D>,
1500            offset: usize,
1501            _depth: fidl::encoding::Depth,
1502        ) -> fidl::Result<()> {
1503            encoder.debug_check_bounds::<ClientOnExitRequest>(offset);
1504            // Delegate to tuple encoding.
1505            fidl::encoding::Encode::<ClientOnExitRequest, D>::encode(
1506                (<ClientExitReason as fidl::encoding::ValueTypeMarker>::borrow(&self.reason),),
1507                encoder,
1508                offset,
1509                _depth,
1510            )
1511        }
1512    }
1513    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ClientExitReason, D>>
1514        fidl::encoding::Encode<ClientOnExitRequest, D> for (T0,)
1515    {
1516        #[inline]
1517        unsafe fn encode(
1518            self,
1519            encoder: &mut fidl::encoding::Encoder<'_, D>,
1520            offset: usize,
1521            depth: fidl::encoding::Depth,
1522        ) -> fidl::Result<()> {
1523            encoder.debug_check_bounds::<ClientOnExitRequest>(offset);
1524            // Zero out padding regions. There's no need to apply masks
1525            // because the unmasked parts will be overwritten by fields.
1526            // Write the fields.
1527            self.0.encode(encoder, offset + 0, depth)?;
1528            Ok(())
1529        }
1530    }
1531
1532    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ClientOnExitRequest {
1533        #[inline(always)]
1534        fn new_empty() -> Self {
1535            Self { reason: fidl::new_empty!(ClientExitReason, D) }
1536        }
1537
1538        #[inline]
1539        unsafe fn decode(
1540            &mut self,
1541            decoder: &mut fidl::encoding::Decoder<'_, D>,
1542            offset: usize,
1543            _depth: fidl::encoding::Depth,
1544        ) -> fidl::Result<()> {
1545            decoder.debug_check_bounds::<Self>(offset);
1546            // Verify that padding bytes are zero.
1547            fidl::decode!(ClientExitReason, D, &mut self.reason, decoder, offset + 0, _depth)?;
1548            Ok(())
1549        }
1550    }
1551
1552    impl fidl::encoding::ValueTypeMarker for ServerGetOptionRequest {
1553        type Borrowed<'a> = &'a Self;
1554        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1555            value
1556        }
1557    }
1558
1559    unsafe impl fidl::encoding::TypeMarker for ServerGetOptionRequest {
1560        type Owned = Self;
1561
1562        #[inline(always)]
1563        fn inline_align(_context: fidl::encoding::Context) -> usize {
1564            4
1565        }
1566
1567        #[inline(always)]
1568        fn inline_size(_context: fidl::encoding::Context) -> usize {
1569            4
1570        }
1571    }
1572
1573    unsafe impl<D: fidl::encoding::ResourceDialect>
1574        fidl::encoding::Encode<ServerGetOptionRequest, D> for &ServerGetOptionRequest
1575    {
1576        #[inline]
1577        unsafe fn encode(
1578            self,
1579            encoder: &mut fidl::encoding::Encoder<'_, D>,
1580            offset: usize,
1581            _depth: fidl::encoding::Depth,
1582        ) -> fidl::Result<()> {
1583            encoder.debug_check_bounds::<ServerGetOptionRequest>(offset);
1584            // Delegate to tuple encoding.
1585            fidl::encoding::Encode::<ServerGetOptionRequest, D>::encode(
1586                (<OptionCode as fidl::encoding::ValueTypeMarker>::borrow(&self.code),),
1587                encoder,
1588                offset,
1589                _depth,
1590            )
1591        }
1592    }
1593    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<OptionCode, D>>
1594        fidl::encoding::Encode<ServerGetOptionRequest, D> for (T0,)
1595    {
1596        #[inline]
1597        unsafe fn encode(
1598            self,
1599            encoder: &mut fidl::encoding::Encoder<'_, D>,
1600            offset: usize,
1601            depth: fidl::encoding::Depth,
1602        ) -> fidl::Result<()> {
1603            encoder.debug_check_bounds::<ServerGetOptionRequest>(offset);
1604            // Zero out padding regions. There's no need to apply masks
1605            // because the unmasked parts will be overwritten by fields.
1606            // Write the fields.
1607            self.0.encode(encoder, offset + 0, depth)?;
1608            Ok(())
1609        }
1610    }
1611
1612    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1613        for ServerGetOptionRequest
1614    {
1615        #[inline(always)]
1616        fn new_empty() -> Self {
1617            Self { code: fidl::new_empty!(OptionCode, D) }
1618        }
1619
1620        #[inline]
1621        unsafe fn decode(
1622            &mut self,
1623            decoder: &mut fidl::encoding::Decoder<'_, D>,
1624            offset: usize,
1625            _depth: fidl::encoding::Depth,
1626        ) -> fidl::Result<()> {
1627            decoder.debug_check_bounds::<Self>(offset);
1628            // Verify that padding bytes are zero.
1629            fidl::decode!(OptionCode, D, &mut self.code, decoder, offset + 0, _depth)?;
1630            Ok(())
1631        }
1632    }
1633
1634    impl fidl::encoding::ValueTypeMarker for ServerGetParameterRequest {
1635        type Borrowed<'a> = &'a Self;
1636        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1637            value
1638        }
1639    }
1640
1641    unsafe impl fidl::encoding::TypeMarker for ServerGetParameterRequest {
1642        type Owned = Self;
1643
1644        #[inline(always)]
1645        fn inline_align(_context: fidl::encoding::Context) -> usize {
1646            4
1647        }
1648
1649        #[inline(always)]
1650        fn inline_size(_context: fidl::encoding::Context) -> usize {
1651            4
1652        }
1653    }
1654
1655    unsafe impl<D: fidl::encoding::ResourceDialect>
1656        fidl::encoding::Encode<ServerGetParameterRequest, D> for &ServerGetParameterRequest
1657    {
1658        #[inline]
1659        unsafe fn encode(
1660            self,
1661            encoder: &mut fidl::encoding::Encoder<'_, D>,
1662            offset: usize,
1663            _depth: fidl::encoding::Depth,
1664        ) -> fidl::Result<()> {
1665            encoder.debug_check_bounds::<ServerGetParameterRequest>(offset);
1666            // Delegate to tuple encoding.
1667            fidl::encoding::Encode::<ServerGetParameterRequest, D>::encode(
1668                (<ParameterName as fidl::encoding::ValueTypeMarker>::borrow(&self.name),),
1669                encoder,
1670                offset,
1671                _depth,
1672            )
1673        }
1674    }
1675    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ParameterName, D>>
1676        fidl::encoding::Encode<ServerGetParameterRequest, D> for (T0,)
1677    {
1678        #[inline]
1679        unsafe fn encode(
1680            self,
1681            encoder: &mut fidl::encoding::Encoder<'_, D>,
1682            offset: usize,
1683            depth: fidl::encoding::Depth,
1684        ) -> fidl::Result<()> {
1685            encoder.debug_check_bounds::<ServerGetParameterRequest>(offset);
1686            // Zero out padding regions. There's no need to apply masks
1687            // because the unmasked parts will be overwritten by fields.
1688            // Write the fields.
1689            self.0.encode(encoder, offset + 0, depth)?;
1690            Ok(())
1691        }
1692    }
1693
1694    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1695        for ServerGetParameterRequest
1696    {
1697        #[inline(always)]
1698        fn new_empty() -> Self {
1699            Self { name: fidl::new_empty!(ParameterName, D) }
1700        }
1701
1702        #[inline]
1703        unsafe fn decode(
1704            &mut self,
1705            decoder: &mut fidl::encoding::Decoder<'_, D>,
1706            offset: usize,
1707            _depth: fidl::encoding::Depth,
1708        ) -> fidl::Result<()> {
1709            decoder.debug_check_bounds::<Self>(offset);
1710            // Verify that padding bytes are zero.
1711            fidl::decode!(ParameterName, D, &mut self.name, decoder, offset + 0, _depth)?;
1712            Ok(())
1713        }
1714    }
1715
1716    impl fidl::encoding::ValueTypeMarker for ServerIsServingResponse {
1717        type Borrowed<'a> = &'a Self;
1718        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1719            value
1720        }
1721    }
1722
1723    unsafe impl fidl::encoding::TypeMarker for ServerIsServingResponse {
1724        type Owned = Self;
1725
1726        #[inline(always)]
1727        fn inline_align(_context: fidl::encoding::Context) -> usize {
1728            1
1729        }
1730
1731        #[inline(always)]
1732        fn inline_size(_context: fidl::encoding::Context) -> usize {
1733            1
1734        }
1735    }
1736
1737    unsafe impl<D: fidl::encoding::ResourceDialect>
1738        fidl::encoding::Encode<ServerIsServingResponse, D> for &ServerIsServingResponse
1739    {
1740        #[inline]
1741        unsafe fn encode(
1742            self,
1743            encoder: &mut fidl::encoding::Encoder<'_, D>,
1744            offset: usize,
1745            _depth: fidl::encoding::Depth,
1746        ) -> fidl::Result<()> {
1747            encoder.debug_check_bounds::<ServerIsServingResponse>(offset);
1748            // Delegate to tuple encoding.
1749            fidl::encoding::Encode::<ServerIsServingResponse, D>::encode(
1750                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enabled),),
1751                encoder,
1752                offset,
1753                _depth,
1754            )
1755        }
1756    }
1757    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
1758        fidl::encoding::Encode<ServerIsServingResponse, D> for (T0,)
1759    {
1760        #[inline]
1761        unsafe fn encode(
1762            self,
1763            encoder: &mut fidl::encoding::Encoder<'_, D>,
1764            offset: usize,
1765            depth: fidl::encoding::Depth,
1766        ) -> fidl::Result<()> {
1767            encoder.debug_check_bounds::<ServerIsServingResponse>(offset);
1768            // Zero out padding regions. There's no need to apply masks
1769            // because the unmasked parts will be overwritten by fields.
1770            // Write the fields.
1771            self.0.encode(encoder, offset + 0, depth)?;
1772            Ok(())
1773        }
1774    }
1775
1776    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1777        for ServerIsServingResponse
1778    {
1779        #[inline(always)]
1780        fn new_empty() -> Self {
1781            Self { enabled: fidl::new_empty!(bool, D) }
1782        }
1783
1784        #[inline]
1785        unsafe fn decode(
1786            &mut self,
1787            decoder: &mut fidl::encoding::Decoder<'_, D>,
1788            offset: usize,
1789            _depth: fidl::encoding::Depth,
1790        ) -> fidl::Result<()> {
1791            decoder.debug_check_bounds::<Self>(offset);
1792            // Verify that padding bytes are zero.
1793            fidl::decode!(bool, D, &mut self.enabled, decoder, offset + 0, _depth)?;
1794            Ok(())
1795        }
1796    }
1797
1798    impl fidl::encoding::ValueTypeMarker for ServerSetOptionRequest {
1799        type Borrowed<'a> = &'a Self;
1800        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1801            value
1802        }
1803    }
1804
1805    unsafe impl fidl::encoding::TypeMarker for ServerSetOptionRequest {
1806        type Owned = Self;
1807
1808        #[inline(always)]
1809        fn inline_align(_context: fidl::encoding::Context) -> usize {
1810            8
1811        }
1812
1813        #[inline(always)]
1814        fn inline_size(_context: fidl::encoding::Context) -> usize {
1815            16
1816        }
1817    }
1818
1819    unsafe impl<D: fidl::encoding::ResourceDialect>
1820        fidl::encoding::Encode<ServerSetOptionRequest, D> for &ServerSetOptionRequest
1821    {
1822        #[inline]
1823        unsafe fn encode(
1824            self,
1825            encoder: &mut fidl::encoding::Encoder<'_, D>,
1826            offset: usize,
1827            _depth: fidl::encoding::Depth,
1828        ) -> fidl::Result<()> {
1829            encoder.debug_check_bounds::<ServerSetOptionRequest>(offset);
1830            // Delegate to tuple encoding.
1831            fidl::encoding::Encode::<ServerSetOptionRequest, D>::encode(
1832                (<Option_ as fidl::encoding::ValueTypeMarker>::borrow(&self.value),),
1833                encoder,
1834                offset,
1835                _depth,
1836            )
1837        }
1838    }
1839    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Option_, D>>
1840        fidl::encoding::Encode<ServerSetOptionRequest, D> for (T0,)
1841    {
1842        #[inline]
1843        unsafe fn encode(
1844            self,
1845            encoder: &mut fidl::encoding::Encoder<'_, D>,
1846            offset: usize,
1847            depth: fidl::encoding::Depth,
1848        ) -> fidl::Result<()> {
1849            encoder.debug_check_bounds::<ServerSetOptionRequest>(offset);
1850            // Zero out padding regions. There's no need to apply masks
1851            // because the unmasked parts will be overwritten by fields.
1852            // Write the fields.
1853            self.0.encode(encoder, offset + 0, depth)?;
1854            Ok(())
1855        }
1856    }
1857
1858    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1859        for ServerSetOptionRequest
1860    {
1861        #[inline(always)]
1862        fn new_empty() -> Self {
1863            Self { value: fidl::new_empty!(Option_, D) }
1864        }
1865
1866        #[inline]
1867        unsafe fn decode(
1868            &mut self,
1869            decoder: &mut fidl::encoding::Decoder<'_, D>,
1870            offset: usize,
1871            _depth: fidl::encoding::Depth,
1872        ) -> fidl::Result<()> {
1873            decoder.debug_check_bounds::<Self>(offset);
1874            // Verify that padding bytes are zero.
1875            fidl::decode!(Option_, D, &mut self.value, decoder, offset + 0, _depth)?;
1876            Ok(())
1877        }
1878    }
1879
1880    impl fidl::encoding::ValueTypeMarker for ServerSetParameterRequest {
1881        type Borrowed<'a> = &'a Self;
1882        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1883            value
1884        }
1885    }
1886
1887    unsafe impl fidl::encoding::TypeMarker for ServerSetParameterRequest {
1888        type Owned = Self;
1889
1890        #[inline(always)]
1891        fn inline_align(_context: fidl::encoding::Context) -> usize {
1892            8
1893        }
1894
1895        #[inline(always)]
1896        fn inline_size(_context: fidl::encoding::Context) -> usize {
1897            16
1898        }
1899    }
1900
1901    unsafe impl<D: fidl::encoding::ResourceDialect>
1902        fidl::encoding::Encode<ServerSetParameterRequest, D> for &ServerSetParameterRequest
1903    {
1904        #[inline]
1905        unsafe fn encode(
1906            self,
1907            encoder: &mut fidl::encoding::Encoder<'_, D>,
1908            offset: usize,
1909            _depth: fidl::encoding::Depth,
1910        ) -> fidl::Result<()> {
1911            encoder.debug_check_bounds::<ServerSetParameterRequest>(offset);
1912            // Delegate to tuple encoding.
1913            fidl::encoding::Encode::<ServerSetParameterRequest, D>::encode(
1914                (<Parameter as fidl::encoding::ValueTypeMarker>::borrow(&self.value),),
1915                encoder,
1916                offset,
1917                _depth,
1918            )
1919        }
1920    }
1921    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Parameter, D>>
1922        fidl::encoding::Encode<ServerSetParameterRequest, D> for (T0,)
1923    {
1924        #[inline]
1925        unsafe fn encode(
1926            self,
1927            encoder: &mut fidl::encoding::Encoder<'_, D>,
1928            offset: usize,
1929            depth: fidl::encoding::Depth,
1930        ) -> fidl::Result<()> {
1931            encoder.debug_check_bounds::<ServerSetParameterRequest>(offset);
1932            // Zero out padding regions. There's no need to apply masks
1933            // because the unmasked parts will be overwritten by fields.
1934            // Write the fields.
1935            self.0.encode(encoder, offset + 0, depth)?;
1936            Ok(())
1937        }
1938    }
1939
1940    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1941        for ServerSetParameterRequest
1942    {
1943        #[inline(always)]
1944        fn new_empty() -> Self {
1945            Self { value: fidl::new_empty!(Parameter, D) }
1946        }
1947
1948        #[inline]
1949        unsafe fn decode(
1950            &mut self,
1951            decoder: &mut fidl::encoding::Decoder<'_, D>,
1952            offset: usize,
1953            _depth: fidl::encoding::Depth,
1954        ) -> fidl::Result<()> {
1955            decoder.debug_check_bounds::<Self>(offset);
1956            // Verify that padding bytes are zero.
1957            fidl::decode!(Parameter, D, &mut self.value, decoder, offset + 0, _depth)?;
1958            Ok(())
1959        }
1960    }
1961
1962    impl fidl::encoding::ValueTypeMarker for ServerGetOptionResponse {
1963        type Borrowed<'a> = &'a Self;
1964        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1965            value
1966        }
1967    }
1968
1969    unsafe impl fidl::encoding::TypeMarker for ServerGetOptionResponse {
1970        type Owned = Self;
1971
1972        #[inline(always)]
1973        fn inline_align(_context: fidl::encoding::Context) -> usize {
1974            8
1975        }
1976
1977        #[inline(always)]
1978        fn inline_size(_context: fidl::encoding::Context) -> usize {
1979            16
1980        }
1981    }
1982
1983    unsafe impl<D: fidl::encoding::ResourceDialect>
1984        fidl::encoding::Encode<ServerGetOptionResponse, D> for &ServerGetOptionResponse
1985    {
1986        #[inline]
1987        unsafe fn encode(
1988            self,
1989            encoder: &mut fidl::encoding::Encoder<'_, D>,
1990            offset: usize,
1991            _depth: fidl::encoding::Depth,
1992        ) -> fidl::Result<()> {
1993            encoder.debug_check_bounds::<ServerGetOptionResponse>(offset);
1994            // Delegate to tuple encoding.
1995            fidl::encoding::Encode::<ServerGetOptionResponse, D>::encode(
1996                (<Option_ as fidl::encoding::ValueTypeMarker>::borrow(&self.value),),
1997                encoder,
1998                offset,
1999                _depth,
2000            )
2001        }
2002    }
2003    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Option_, D>>
2004        fidl::encoding::Encode<ServerGetOptionResponse, D> for (T0,)
2005    {
2006        #[inline]
2007        unsafe fn encode(
2008            self,
2009            encoder: &mut fidl::encoding::Encoder<'_, D>,
2010            offset: usize,
2011            depth: fidl::encoding::Depth,
2012        ) -> fidl::Result<()> {
2013            encoder.debug_check_bounds::<ServerGetOptionResponse>(offset);
2014            // Zero out padding regions. There's no need to apply masks
2015            // because the unmasked parts will be overwritten by fields.
2016            // Write the fields.
2017            self.0.encode(encoder, offset + 0, depth)?;
2018            Ok(())
2019        }
2020    }
2021
2022    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2023        for ServerGetOptionResponse
2024    {
2025        #[inline(always)]
2026        fn new_empty() -> Self {
2027            Self { value: fidl::new_empty!(Option_, D) }
2028        }
2029
2030        #[inline]
2031        unsafe fn decode(
2032            &mut self,
2033            decoder: &mut fidl::encoding::Decoder<'_, D>,
2034            offset: usize,
2035            _depth: fidl::encoding::Depth,
2036        ) -> fidl::Result<()> {
2037            decoder.debug_check_bounds::<Self>(offset);
2038            // Verify that padding bytes are zero.
2039            fidl::decode!(Option_, D, &mut self.value, decoder, offset + 0, _depth)?;
2040            Ok(())
2041        }
2042    }
2043
2044    impl fidl::encoding::ValueTypeMarker for ServerGetParameterResponse {
2045        type Borrowed<'a> = &'a Self;
2046        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2047            value
2048        }
2049    }
2050
2051    unsafe impl fidl::encoding::TypeMarker for ServerGetParameterResponse {
2052        type Owned = Self;
2053
2054        #[inline(always)]
2055        fn inline_align(_context: fidl::encoding::Context) -> usize {
2056            8
2057        }
2058
2059        #[inline(always)]
2060        fn inline_size(_context: fidl::encoding::Context) -> usize {
2061            16
2062        }
2063    }
2064
2065    unsafe impl<D: fidl::encoding::ResourceDialect>
2066        fidl::encoding::Encode<ServerGetParameterResponse, D> for &ServerGetParameterResponse
2067    {
2068        #[inline]
2069        unsafe fn encode(
2070            self,
2071            encoder: &mut fidl::encoding::Encoder<'_, D>,
2072            offset: usize,
2073            _depth: fidl::encoding::Depth,
2074        ) -> fidl::Result<()> {
2075            encoder.debug_check_bounds::<ServerGetParameterResponse>(offset);
2076            // Delegate to tuple encoding.
2077            fidl::encoding::Encode::<ServerGetParameterResponse, D>::encode(
2078                (<Parameter as fidl::encoding::ValueTypeMarker>::borrow(&self.value),),
2079                encoder,
2080                offset,
2081                _depth,
2082            )
2083        }
2084    }
2085    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Parameter, D>>
2086        fidl::encoding::Encode<ServerGetParameterResponse, D> for (T0,)
2087    {
2088        #[inline]
2089        unsafe fn encode(
2090            self,
2091            encoder: &mut fidl::encoding::Encoder<'_, D>,
2092            offset: usize,
2093            depth: fidl::encoding::Depth,
2094        ) -> fidl::Result<()> {
2095            encoder.debug_check_bounds::<ServerGetParameterResponse>(offset);
2096            // Zero out padding regions. There's no need to apply masks
2097            // because the unmasked parts will be overwritten by fields.
2098            // Write the fields.
2099            self.0.encode(encoder, offset + 0, depth)?;
2100            Ok(())
2101        }
2102    }
2103
2104    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2105        for ServerGetParameterResponse
2106    {
2107        #[inline(always)]
2108        fn new_empty() -> Self {
2109            Self { value: fidl::new_empty!(Parameter, D) }
2110        }
2111
2112        #[inline]
2113        unsafe fn decode(
2114            &mut self,
2115            decoder: &mut fidl::encoding::Decoder<'_, D>,
2116            offset: usize,
2117            _depth: fidl::encoding::Depth,
2118        ) -> fidl::Result<()> {
2119            decoder.debug_check_bounds::<Self>(offset);
2120            // Verify that padding bytes are zero.
2121            fidl::decode!(Parameter, D, &mut self.value, decoder, offset + 0, _depth)?;
2122            Ok(())
2123        }
2124    }
2125
2126    impl fidl::encoding::ValueTypeMarker for ServerListOptionsResponse {
2127        type Borrowed<'a> = &'a Self;
2128        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2129            value
2130        }
2131    }
2132
2133    unsafe impl fidl::encoding::TypeMarker for ServerListOptionsResponse {
2134        type Owned = Self;
2135
2136        #[inline(always)]
2137        fn inline_align(_context: fidl::encoding::Context) -> usize {
2138            8
2139        }
2140
2141        #[inline(always)]
2142        fn inline_size(_context: fidl::encoding::Context) -> usize {
2143            16
2144        }
2145    }
2146
2147    unsafe impl<D: fidl::encoding::ResourceDialect>
2148        fidl::encoding::Encode<ServerListOptionsResponse, D> for &ServerListOptionsResponse
2149    {
2150        #[inline]
2151        unsafe fn encode(
2152            self,
2153            encoder: &mut fidl::encoding::Encoder<'_, D>,
2154            offset: usize,
2155            _depth: fidl::encoding::Depth,
2156        ) -> fidl::Result<()> {
2157            encoder.debug_check_bounds::<ServerListOptionsResponse>(offset);
2158            // Delegate to tuple encoding.
2159            fidl::encoding::Encode::<ServerListOptionsResponse, D>::encode(
2160                (
2161                    <fidl::encoding::Vector<Option_, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.options),
2162                ),
2163                encoder, offset, _depth
2164            )
2165        }
2166    }
2167    unsafe impl<
2168        D: fidl::encoding::ResourceDialect,
2169        T0: fidl::encoding::Encode<fidl::encoding::Vector<Option_, 256>, D>,
2170    > fidl::encoding::Encode<ServerListOptionsResponse, D> for (T0,)
2171    {
2172        #[inline]
2173        unsafe fn encode(
2174            self,
2175            encoder: &mut fidl::encoding::Encoder<'_, D>,
2176            offset: usize,
2177            depth: fidl::encoding::Depth,
2178        ) -> fidl::Result<()> {
2179            encoder.debug_check_bounds::<ServerListOptionsResponse>(offset);
2180            // Zero out padding regions. There's no need to apply masks
2181            // because the unmasked parts will be overwritten by fields.
2182            // Write the fields.
2183            self.0.encode(encoder, offset + 0, depth)?;
2184            Ok(())
2185        }
2186    }
2187
2188    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2189        for ServerListOptionsResponse
2190    {
2191        #[inline(always)]
2192        fn new_empty() -> Self {
2193            Self { options: fidl::new_empty!(fidl::encoding::Vector<Option_, 256>, D) }
2194        }
2195
2196        #[inline]
2197        unsafe fn decode(
2198            &mut self,
2199            decoder: &mut fidl::encoding::Decoder<'_, D>,
2200            offset: usize,
2201            _depth: fidl::encoding::Depth,
2202        ) -> fidl::Result<()> {
2203            decoder.debug_check_bounds::<Self>(offset);
2204            // Verify that padding bytes are zero.
2205            fidl::decode!(fidl::encoding::Vector<Option_, 256>, D, &mut self.options, decoder, offset + 0, _depth)?;
2206            Ok(())
2207        }
2208    }
2209
2210    impl fidl::encoding::ValueTypeMarker for ServerListParametersResponse {
2211        type Borrowed<'a> = &'a Self;
2212        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2213            value
2214        }
2215    }
2216
2217    unsafe impl fidl::encoding::TypeMarker for ServerListParametersResponse {
2218        type Owned = Self;
2219
2220        #[inline(always)]
2221        fn inline_align(_context: fidl::encoding::Context) -> usize {
2222            8
2223        }
2224
2225        #[inline(always)]
2226        fn inline_size(_context: fidl::encoding::Context) -> usize {
2227            16
2228        }
2229    }
2230
2231    unsafe impl<D: fidl::encoding::ResourceDialect>
2232        fidl::encoding::Encode<ServerListParametersResponse, D> for &ServerListParametersResponse
2233    {
2234        #[inline]
2235        unsafe fn encode(
2236            self,
2237            encoder: &mut fidl::encoding::Encoder<'_, D>,
2238            offset: usize,
2239            _depth: fidl::encoding::Depth,
2240        ) -> fidl::Result<()> {
2241            encoder.debug_check_bounds::<ServerListParametersResponse>(offset);
2242            // Delegate to tuple encoding.
2243            fidl::encoding::Encode::<ServerListParametersResponse, D>::encode(
2244                (
2245                    <fidl::encoding::Vector<Parameter, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.parameters),
2246                ),
2247                encoder, offset, _depth
2248            )
2249        }
2250    }
2251    unsafe impl<
2252        D: fidl::encoding::ResourceDialect,
2253        T0: fidl::encoding::Encode<fidl::encoding::Vector<Parameter, 256>, D>,
2254    > fidl::encoding::Encode<ServerListParametersResponse, D> for (T0,)
2255    {
2256        #[inline]
2257        unsafe fn encode(
2258            self,
2259            encoder: &mut fidl::encoding::Encoder<'_, D>,
2260            offset: usize,
2261            depth: fidl::encoding::Depth,
2262        ) -> fidl::Result<()> {
2263            encoder.debug_check_bounds::<ServerListParametersResponse>(offset);
2264            // Zero out padding regions. There's no need to apply masks
2265            // because the unmasked parts will be overwritten by fields.
2266            // Write the fields.
2267            self.0.encode(encoder, offset + 0, depth)?;
2268            Ok(())
2269        }
2270    }
2271
2272    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2273        for ServerListParametersResponse
2274    {
2275        #[inline(always)]
2276        fn new_empty() -> Self {
2277            Self { parameters: fidl::new_empty!(fidl::encoding::Vector<Parameter, 256>, D) }
2278        }
2279
2280        #[inline]
2281        unsafe fn decode(
2282            &mut self,
2283            decoder: &mut fidl::encoding::Decoder<'_, D>,
2284            offset: usize,
2285            _depth: fidl::encoding::Depth,
2286        ) -> fidl::Result<()> {
2287            decoder.debug_check_bounds::<Self>(offset);
2288            // Verify that padding bytes are zero.
2289            fidl::decode!(fidl::encoding::Vector<Parameter, 256>, D, &mut self.parameters, decoder, offset + 0, _depth)?;
2290            Ok(())
2291        }
2292    }
2293
2294    impl AddressPool {
2295        #[inline(always)]
2296        fn max_ordinal_present(&self) -> u64 {
2297            if let Some(_) = self.range_stop {
2298                return 3;
2299            }
2300            if let Some(_) = self.range_start {
2301                return 2;
2302            }
2303            if let Some(_) = self.prefix_length {
2304                return 1;
2305            }
2306            0
2307        }
2308    }
2309
2310    impl fidl::encoding::ValueTypeMarker for AddressPool {
2311        type Borrowed<'a> = &'a Self;
2312        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2313            value
2314        }
2315    }
2316
2317    unsafe impl fidl::encoding::TypeMarker for AddressPool {
2318        type Owned = Self;
2319
2320        #[inline(always)]
2321        fn inline_align(_context: fidl::encoding::Context) -> usize {
2322            8
2323        }
2324
2325        #[inline(always)]
2326        fn inline_size(_context: fidl::encoding::Context) -> usize {
2327            16
2328        }
2329    }
2330
2331    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AddressPool, D>
2332        for &AddressPool
2333    {
2334        unsafe fn encode(
2335            self,
2336            encoder: &mut fidl::encoding::Encoder<'_, D>,
2337            offset: usize,
2338            mut depth: fidl::encoding::Depth,
2339        ) -> fidl::Result<()> {
2340            encoder.debug_check_bounds::<AddressPool>(offset);
2341            // Vector header
2342            let max_ordinal: u64 = self.max_ordinal_present();
2343            encoder.write_num(max_ordinal, offset);
2344            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2345            // Calling encoder.out_of_line_offset(0) is not allowed.
2346            if max_ordinal == 0 {
2347                return Ok(());
2348            }
2349            depth.increment()?;
2350            let envelope_size = 8;
2351            let bytes_len = max_ordinal as usize * envelope_size;
2352            #[allow(unused_variables)]
2353            let offset = encoder.out_of_line_offset(bytes_len);
2354            let mut _prev_end_offset: usize = 0;
2355            if 1 > max_ordinal {
2356                return Ok(());
2357            }
2358
2359            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2360            // are envelope_size bytes.
2361            let cur_offset: usize = (1 - 1) * envelope_size;
2362
2363            // Zero reserved fields.
2364            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2365
2366            // Safety:
2367            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2368            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2369            //   envelope_size bytes, there is always sufficient room.
2370            fidl::encoding::encode_in_envelope_optional::<u8, D>(
2371                self.prefix_length.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
2372                encoder,
2373                offset + cur_offset,
2374                depth,
2375            )?;
2376
2377            _prev_end_offset = cur_offset + envelope_size;
2378            if 2 > max_ordinal {
2379                return Ok(());
2380            }
2381
2382            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2383            // are envelope_size bytes.
2384            let cur_offset: usize = (2 - 1) * envelope_size;
2385
2386            // Zero reserved fields.
2387            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2388
2389            // Safety:
2390            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2391            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2392            //   envelope_size bytes, there is always sufficient room.
2393            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv4Address, D>(
2394            self.range_start.as_ref().map(<fidl_fuchsia_net_common::Ipv4Address as fidl::encoding::ValueTypeMarker>::borrow),
2395            encoder, offset + cur_offset, depth
2396        )?;
2397
2398            _prev_end_offset = cur_offset + envelope_size;
2399            if 3 > max_ordinal {
2400                return Ok(());
2401            }
2402
2403            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2404            // are envelope_size bytes.
2405            let cur_offset: usize = (3 - 1) * envelope_size;
2406
2407            // Zero reserved fields.
2408            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2409
2410            // Safety:
2411            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2412            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2413            //   envelope_size bytes, there is always sufficient room.
2414            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv4Address, D>(
2415            self.range_stop.as_ref().map(<fidl_fuchsia_net_common::Ipv4Address as fidl::encoding::ValueTypeMarker>::borrow),
2416            encoder, offset + cur_offset, depth
2417        )?;
2418
2419            _prev_end_offset = cur_offset + envelope_size;
2420
2421            Ok(())
2422        }
2423    }
2424
2425    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AddressPool {
2426        #[inline(always)]
2427        fn new_empty() -> Self {
2428            Self::default()
2429        }
2430
2431        unsafe fn decode(
2432            &mut self,
2433            decoder: &mut fidl::encoding::Decoder<'_, D>,
2434            offset: usize,
2435            mut depth: fidl::encoding::Depth,
2436        ) -> fidl::Result<()> {
2437            decoder.debug_check_bounds::<Self>(offset);
2438            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2439                None => return Err(fidl::Error::NotNullable),
2440                Some(len) => len,
2441            };
2442            // Calling decoder.out_of_line_offset(0) is not allowed.
2443            if len == 0 {
2444                return Ok(());
2445            };
2446            depth.increment()?;
2447            let envelope_size = 8;
2448            let bytes_len = len * envelope_size;
2449            let offset = decoder.out_of_line_offset(bytes_len)?;
2450            // Decode the envelope for each type.
2451            let mut _next_ordinal_to_read = 0;
2452            let mut next_offset = offset;
2453            let end_offset = offset + bytes_len;
2454            _next_ordinal_to_read += 1;
2455            if next_offset >= end_offset {
2456                return Ok(());
2457            }
2458
2459            // Decode unknown envelopes for gaps in ordinals.
2460            while _next_ordinal_to_read < 1 {
2461                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2462                _next_ordinal_to_read += 1;
2463                next_offset += envelope_size;
2464            }
2465
2466            let next_out_of_line = decoder.next_out_of_line();
2467            let handles_before = decoder.remaining_handles();
2468            if let Some((inlined, num_bytes, num_handles)) =
2469                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2470            {
2471                let member_inline_size =
2472                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2473                if inlined != (member_inline_size <= 4) {
2474                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2475                }
2476                let inner_offset;
2477                let mut inner_depth = depth.clone();
2478                if inlined {
2479                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2480                    inner_offset = next_offset;
2481                } else {
2482                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2483                    inner_depth.increment()?;
2484                }
2485                let val_ref = self.prefix_length.get_or_insert_with(|| fidl::new_empty!(u8, D));
2486                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
2487                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2488                {
2489                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2490                }
2491                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2492                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2493                }
2494            }
2495
2496            next_offset += envelope_size;
2497            _next_ordinal_to_read += 1;
2498            if next_offset >= end_offset {
2499                return Ok(());
2500            }
2501
2502            // Decode unknown envelopes for gaps in ordinals.
2503            while _next_ordinal_to_read < 2 {
2504                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2505                _next_ordinal_to_read += 1;
2506                next_offset += envelope_size;
2507            }
2508
2509            let next_out_of_line = decoder.next_out_of_line();
2510            let handles_before = decoder.remaining_handles();
2511            if let Some((inlined, num_bytes, num_handles)) =
2512                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2513            {
2514                let member_inline_size = <fidl_fuchsia_net_common::Ipv4Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2515                if inlined != (member_inline_size <= 4) {
2516                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2517                }
2518                let inner_offset;
2519                let mut inner_depth = depth.clone();
2520                if inlined {
2521                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2522                    inner_offset = next_offset;
2523                } else {
2524                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2525                    inner_depth.increment()?;
2526                }
2527                let val_ref = self.range_start.get_or_insert_with(|| {
2528                    fidl::new_empty!(fidl_fuchsia_net_common::Ipv4Address, D)
2529                });
2530                fidl::decode!(
2531                    fidl_fuchsia_net_common::Ipv4Address,
2532                    D,
2533                    val_ref,
2534                    decoder,
2535                    inner_offset,
2536                    inner_depth
2537                )?;
2538                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2539                {
2540                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2541                }
2542                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2543                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2544                }
2545            }
2546
2547            next_offset += envelope_size;
2548            _next_ordinal_to_read += 1;
2549            if next_offset >= end_offset {
2550                return Ok(());
2551            }
2552
2553            // Decode unknown envelopes for gaps in ordinals.
2554            while _next_ordinal_to_read < 3 {
2555                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2556                _next_ordinal_to_read += 1;
2557                next_offset += envelope_size;
2558            }
2559
2560            let next_out_of_line = decoder.next_out_of_line();
2561            let handles_before = decoder.remaining_handles();
2562            if let Some((inlined, num_bytes, num_handles)) =
2563                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2564            {
2565                let member_inline_size = <fidl_fuchsia_net_common::Ipv4Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2566                if inlined != (member_inline_size <= 4) {
2567                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2568                }
2569                let inner_offset;
2570                let mut inner_depth = depth.clone();
2571                if inlined {
2572                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2573                    inner_offset = next_offset;
2574                } else {
2575                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2576                    inner_depth.increment()?;
2577                }
2578                let val_ref = self.range_stop.get_or_insert_with(|| {
2579                    fidl::new_empty!(fidl_fuchsia_net_common::Ipv4Address, D)
2580                });
2581                fidl::decode!(
2582                    fidl_fuchsia_net_common::Ipv4Address,
2583                    D,
2584                    val_ref,
2585                    decoder,
2586                    inner_offset,
2587                    inner_depth
2588                )?;
2589                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2590                {
2591                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2592                }
2593                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2594                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2595                }
2596            }
2597
2598            next_offset += envelope_size;
2599
2600            // Decode the remaining unknown envelopes.
2601            while next_offset < end_offset {
2602                _next_ordinal_to_read += 1;
2603                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2604                next_offset += envelope_size;
2605            }
2606
2607            Ok(())
2608        }
2609    }
2610
2611    impl ConfigurationToRequest {
2612        #[inline(always)]
2613        fn max_ordinal_present(&self) -> u64 {
2614            if let Some(_) = self.dns_servers {
2615                return 2;
2616            }
2617            if let Some(_) = self.routers {
2618                return 1;
2619            }
2620            0
2621        }
2622    }
2623
2624    impl fidl::encoding::ValueTypeMarker for ConfigurationToRequest {
2625        type Borrowed<'a> = &'a Self;
2626        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2627            value
2628        }
2629    }
2630
2631    unsafe impl fidl::encoding::TypeMarker for ConfigurationToRequest {
2632        type Owned = Self;
2633
2634        #[inline(always)]
2635        fn inline_align(_context: fidl::encoding::Context) -> usize {
2636            8
2637        }
2638
2639        #[inline(always)]
2640        fn inline_size(_context: fidl::encoding::Context) -> usize {
2641            16
2642        }
2643    }
2644
2645    unsafe impl<D: fidl::encoding::ResourceDialect>
2646        fidl::encoding::Encode<ConfigurationToRequest, D> for &ConfigurationToRequest
2647    {
2648        unsafe fn encode(
2649            self,
2650            encoder: &mut fidl::encoding::Encoder<'_, D>,
2651            offset: usize,
2652            mut depth: fidl::encoding::Depth,
2653        ) -> fidl::Result<()> {
2654            encoder.debug_check_bounds::<ConfigurationToRequest>(offset);
2655            // Vector header
2656            let max_ordinal: u64 = self.max_ordinal_present();
2657            encoder.write_num(max_ordinal, offset);
2658            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2659            // Calling encoder.out_of_line_offset(0) is not allowed.
2660            if max_ordinal == 0 {
2661                return Ok(());
2662            }
2663            depth.increment()?;
2664            let envelope_size = 8;
2665            let bytes_len = max_ordinal as usize * envelope_size;
2666            #[allow(unused_variables)]
2667            let offset = encoder.out_of_line_offset(bytes_len);
2668            let mut _prev_end_offset: usize = 0;
2669            if 1 > max_ordinal {
2670                return Ok(());
2671            }
2672
2673            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2674            // are envelope_size bytes.
2675            let cur_offset: usize = (1 - 1) * envelope_size;
2676
2677            // Zero reserved fields.
2678            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2679
2680            // Safety:
2681            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2682            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2683            //   envelope_size bytes, there is always sufficient room.
2684            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2685                self.routers.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2686                encoder,
2687                offset + cur_offset,
2688                depth,
2689            )?;
2690
2691            _prev_end_offset = cur_offset + envelope_size;
2692            if 2 > max_ordinal {
2693                return Ok(());
2694            }
2695
2696            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2697            // are envelope_size bytes.
2698            let cur_offset: usize = (2 - 1) * envelope_size;
2699
2700            // Zero reserved fields.
2701            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2702
2703            // Safety:
2704            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2705            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2706            //   envelope_size bytes, there is always sufficient room.
2707            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2708                self.dns_servers.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2709                encoder,
2710                offset + cur_offset,
2711                depth,
2712            )?;
2713
2714            _prev_end_offset = cur_offset + envelope_size;
2715
2716            Ok(())
2717        }
2718    }
2719
2720    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2721        for ConfigurationToRequest
2722    {
2723        #[inline(always)]
2724        fn new_empty() -> Self {
2725            Self::default()
2726        }
2727
2728        unsafe fn decode(
2729            &mut self,
2730            decoder: &mut fidl::encoding::Decoder<'_, D>,
2731            offset: usize,
2732            mut depth: fidl::encoding::Depth,
2733        ) -> fidl::Result<()> {
2734            decoder.debug_check_bounds::<Self>(offset);
2735            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2736                None => return Err(fidl::Error::NotNullable),
2737                Some(len) => len,
2738            };
2739            // Calling decoder.out_of_line_offset(0) is not allowed.
2740            if len == 0 {
2741                return Ok(());
2742            };
2743            depth.increment()?;
2744            let envelope_size = 8;
2745            let bytes_len = len * envelope_size;
2746            let offset = decoder.out_of_line_offset(bytes_len)?;
2747            // Decode the envelope for each type.
2748            let mut _next_ordinal_to_read = 0;
2749            let mut next_offset = offset;
2750            let end_offset = offset + bytes_len;
2751            _next_ordinal_to_read += 1;
2752            if next_offset >= end_offset {
2753                return Ok(());
2754            }
2755
2756            // Decode unknown envelopes for gaps in ordinals.
2757            while _next_ordinal_to_read < 1 {
2758                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2759                _next_ordinal_to_read += 1;
2760                next_offset += envelope_size;
2761            }
2762
2763            let next_out_of_line = decoder.next_out_of_line();
2764            let handles_before = decoder.remaining_handles();
2765            if let Some((inlined, num_bytes, num_handles)) =
2766                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2767            {
2768                let member_inline_size =
2769                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2770                if inlined != (member_inline_size <= 4) {
2771                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2772                }
2773                let inner_offset;
2774                let mut inner_depth = depth.clone();
2775                if inlined {
2776                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2777                    inner_offset = next_offset;
2778                } else {
2779                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2780                    inner_depth.increment()?;
2781                }
2782                let val_ref = self.routers.get_or_insert_with(|| fidl::new_empty!(bool, D));
2783                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2784                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2785                {
2786                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2787                }
2788                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2789                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2790                }
2791            }
2792
2793            next_offset += envelope_size;
2794            _next_ordinal_to_read += 1;
2795            if next_offset >= end_offset {
2796                return Ok(());
2797            }
2798
2799            // Decode unknown envelopes for gaps in ordinals.
2800            while _next_ordinal_to_read < 2 {
2801                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2802                _next_ordinal_to_read += 1;
2803                next_offset += envelope_size;
2804            }
2805
2806            let next_out_of_line = decoder.next_out_of_line();
2807            let handles_before = decoder.remaining_handles();
2808            if let Some((inlined, num_bytes, num_handles)) =
2809                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2810            {
2811                let member_inline_size =
2812                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2813                if inlined != (member_inline_size <= 4) {
2814                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2815                }
2816                let inner_offset;
2817                let mut inner_depth = depth.clone();
2818                if inlined {
2819                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2820                    inner_offset = next_offset;
2821                } else {
2822                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2823                    inner_depth.increment()?;
2824                }
2825                let val_ref = self.dns_servers.get_or_insert_with(|| fidl::new_empty!(bool, D));
2826                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2827                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2828                {
2829                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2830                }
2831                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2832                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2833                }
2834            }
2835
2836            next_offset += envelope_size;
2837
2838            // Decode the remaining unknown envelopes.
2839            while next_offset < end_offset {
2840                _next_ordinal_to_read += 1;
2841                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2842                next_offset += envelope_size;
2843            }
2844
2845            Ok(())
2846        }
2847    }
2848
2849    impl LeaseLength {
2850        #[inline(always)]
2851        fn max_ordinal_present(&self) -> u64 {
2852            if let Some(_) = self.max {
2853                return 2;
2854            }
2855            if let Some(_) = self.default {
2856                return 1;
2857            }
2858            0
2859        }
2860    }
2861
2862    impl fidl::encoding::ValueTypeMarker for LeaseLength {
2863        type Borrowed<'a> = &'a Self;
2864        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2865            value
2866        }
2867    }
2868
2869    unsafe impl fidl::encoding::TypeMarker for LeaseLength {
2870        type Owned = Self;
2871
2872        #[inline(always)]
2873        fn inline_align(_context: fidl::encoding::Context) -> usize {
2874            8
2875        }
2876
2877        #[inline(always)]
2878        fn inline_size(_context: fidl::encoding::Context) -> usize {
2879            16
2880        }
2881    }
2882
2883    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LeaseLength, D>
2884        for &LeaseLength
2885    {
2886        unsafe fn encode(
2887            self,
2888            encoder: &mut fidl::encoding::Encoder<'_, D>,
2889            offset: usize,
2890            mut depth: fidl::encoding::Depth,
2891        ) -> fidl::Result<()> {
2892            encoder.debug_check_bounds::<LeaseLength>(offset);
2893            // Vector header
2894            let max_ordinal: u64 = self.max_ordinal_present();
2895            encoder.write_num(max_ordinal, offset);
2896            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2897            // Calling encoder.out_of_line_offset(0) is not allowed.
2898            if max_ordinal == 0 {
2899                return Ok(());
2900            }
2901            depth.increment()?;
2902            let envelope_size = 8;
2903            let bytes_len = max_ordinal as usize * envelope_size;
2904            #[allow(unused_variables)]
2905            let offset = encoder.out_of_line_offset(bytes_len);
2906            let mut _prev_end_offset: usize = 0;
2907            if 1 > max_ordinal {
2908                return Ok(());
2909            }
2910
2911            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2912            // are envelope_size bytes.
2913            let cur_offset: usize = (1 - 1) * envelope_size;
2914
2915            // Zero reserved fields.
2916            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2917
2918            // Safety:
2919            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2920            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2921            //   envelope_size bytes, there is always sufficient room.
2922            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2923                self.default.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2924                encoder,
2925                offset + cur_offset,
2926                depth,
2927            )?;
2928
2929            _prev_end_offset = cur_offset + envelope_size;
2930            if 2 > max_ordinal {
2931                return Ok(());
2932            }
2933
2934            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2935            // are envelope_size bytes.
2936            let cur_offset: usize = (2 - 1) * envelope_size;
2937
2938            // Zero reserved fields.
2939            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2940
2941            // Safety:
2942            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2943            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2944            //   envelope_size bytes, there is always sufficient room.
2945            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2946                self.max.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2947                encoder,
2948                offset + cur_offset,
2949                depth,
2950            )?;
2951
2952            _prev_end_offset = cur_offset + envelope_size;
2953
2954            Ok(())
2955        }
2956    }
2957
2958    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LeaseLength {
2959        #[inline(always)]
2960        fn new_empty() -> Self {
2961            Self::default()
2962        }
2963
2964        unsafe fn decode(
2965            &mut self,
2966            decoder: &mut fidl::encoding::Decoder<'_, D>,
2967            offset: usize,
2968            mut depth: fidl::encoding::Depth,
2969        ) -> fidl::Result<()> {
2970            decoder.debug_check_bounds::<Self>(offset);
2971            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2972                None => return Err(fidl::Error::NotNullable),
2973                Some(len) => len,
2974            };
2975            // Calling decoder.out_of_line_offset(0) is not allowed.
2976            if len == 0 {
2977                return Ok(());
2978            };
2979            depth.increment()?;
2980            let envelope_size = 8;
2981            let bytes_len = len * envelope_size;
2982            let offset = decoder.out_of_line_offset(bytes_len)?;
2983            // Decode the envelope for each type.
2984            let mut _next_ordinal_to_read = 0;
2985            let mut next_offset = offset;
2986            let end_offset = offset + bytes_len;
2987            _next_ordinal_to_read += 1;
2988            if next_offset >= end_offset {
2989                return Ok(());
2990            }
2991
2992            // Decode unknown envelopes for gaps in ordinals.
2993            while _next_ordinal_to_read < 1 {
2994                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2995                _next_ordinal_to_read += 1;
2996                next_offset += envelope_size;
2997            }
2998
2999            let next_out_of_line = decoder.next_out_of_line();
3000            let handles_before = decoder.remaining_handles();
3001            if let Some((inlined, num_bytes, num_handles)) =
3002                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3003            {
3004                let member_inline_size =
3005                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3006                if inlined != (member_inline_size <= 4) {
3007                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3008                }
3009                let inner_offset;
3010                let mut inner_depth = depth.clone();
3011                if inlined {
3012                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3013                    inner_offset = next_offset;
3014                } else {
3015                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3016                    inner_depth.increment()?;
3017                }
3018                let val_ref = self.default.get_or_insert_with(|| fidl::new_empty!(u32, D));
3019                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3020                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3021                {
3022                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3023                }
3024                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3025                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3026                }
3027            }
3028
3029            next_offset += envelope_size;
3030            _next_ordinal_to_read += 1;
3031            if next_offset >= end_offset {
3032                return Ok(());
3033            }
3034
3035            // Decode unknown envelopes for gaps in ordinals.
3036            while _next_ordinal_to_read < 2 {
3037                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3038                _next_ordinal_to_read += 1;
3039                next_offset += envelope_size;
3040            }
3041
3042            let next_out_of_line = decoder.next_out_of_line();
3043            let handles_before = decoder.remaining_handles();
3044            if let Some((inlined, num_bytes, num_handles)) =
3045                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3046            {
3047                let member_inline_size =
3048                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3049                if inlined != (member_inline_size <= 4) {
3050                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3051                }
3052                let inner_offset;
3053                let mut inner_depth = depth.clone();
3054                if inlined {
3055                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3056                    inner_offset = next_offset;
3057                } else {
3058                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3059                    inner_depth.increment()?;
3060                }
3061                let val_ref = self.max.get_or_insert_with(|| fidl::new_empty!(u32, D));
3062                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3063                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3064                {
3065                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3066                }
3067                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3068                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3069                }
3070            }
3071
3072            next_offset += envelope_size;
3073
3074            // Decode the remaining unknown envelopes.
3075            while next_offset < end_offset {
3076                _next_ordinal_to_read += 1;
3077                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3078                next_offset += envelope_size;
3079            }
3080
3081            Ok(())
3082        }
3083    }
3084
3085    impl NewClientParams {
3086        #[inline(always)]
3087        fn max_ordinal_present(&self) -> u64 {
3088            if let Some(_) = self.request_ip_address {
3089                return 2;
3090            }
3091            if let Some(_) = self.configuration_to_request {
3092                return 1;
3093            }
3094            0
3095        }
3096    }
3097
3098    impl fidl::encoding::ValueTypeMarker for NewClientParams {
3099        type Borrowed<'a> = &'a Self;
3100        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3101            value
3102        }
3103    }
3104
3105    unsafe impl fidl::encoding::TypeMarker for NewClientParams {
3106        type Owned = Self;
3107
3108        #[inline(always)]
3109        fn inline_align(_context: fidl::encoding::Context) -> usize {
3110            8
3111        }
3112
3113        #[inline(always)]
3114        fn inline_size(_context: fidl::encoding::Context) -> usize {
3115            16
3116        }
3117    }
3118
3119    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NewClientParams, D>
3120        for &NewClientParams
3121    {
3122        unsafe fn encode(
3123            self,
3124            encoder: &mut fidl::encoding::Encoder<'_, D>,
3125            offset: usize,
3126            mut depth: fidl::encoding::Depth,
3127        ) -> fidl::Result<()> {
3128            encoder.debug_check_bounds::<NewClientParams>(offset);
3129            // Vector header
3130            let max_ordinal: u64 = self.max_ordinal_present();
3131            encoder.write_num(max_ordinal, offset);
3132            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3133            // Calling encoder.out_of_line_offset(0) is not allowed.
3134            if max_ordinal == 0 {
3135                return Ok(());
3136            }
3137            depth.increment()?;
3138            let envelope_size = 8;
3139            let bytes_len = max_ordinal as usize * envelope_size;
3140            #[allow(unused_variables)]
3141            let offset = encoder.out_of_line_offset(bytes_len);
3142            let mut _prev_end_offset: usize = 0;
3143            if 1 > max_ordinal {
3144                return Ok(());
3145            }
3146
3147            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3148            // are envelope_size bytes.
3149            let cur_offset: usize = (1 - 1) * envelope_size;
3150
3151            // Zero reserved fields.
3152            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3153
3154            // Safety:
3155            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3156            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3157            //   envelope_size bytes, there is always sufficient room.
3158            fidl::encoding::encode_in_envelope_optional::<ConfigurationToRequest, D>(
3159                self.configuration_to_request
3160                    .as_ref()
3161                    .map(<ConfigurationToRequest as fidl::encoding::ValueTypeMarker>::borrow),
3162                encoder,
3163                offset + cur_offset,
3164                depth,
3165            )?;
3166
3167            _prev_end_offset = cur_offset + envelope_size;
3168            if 2 > max_ordinal {
3169                return Ok(());
3170            }
3171
3172            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3173            // are envelope_size bytes.
3174            let cur_offset: usize = (2 - 1) * envelope_size;
3175
3176            // Zero reserved fields.
3177            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3178
3179            // Safety:
3180            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3181            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3182            //   envelope_size bytes, there is always sufficient room.
3183            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3184                self.request_ip_address
3185                    .as_ref()
3186                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3187                encoder,
3188                offset + cur_offset,
3189                depth,
3190            )?;
3191
3192            _prev_end_offset = cur_offset + envelope_size;
3193
3194            Ok(())
3195        }
3196    }
3197
3198    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NewClientParams {
3199        #[inline(always)]
3200        fn new_empty() -> Self {
3201            Self::default()
3202        }
3203
3204        unsafe fn decode(
3205            &mut self,
3206            decoder: &mut fidl::encoding::Decoder<'_, D>,
3207            offset: usize,
3208            mut depth: fidl::encoding::Depth,
3209        ) -> fidl::Result<()> {
3210            decoder.debug_check_bounds::<Self>(offset);
3211            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3212                None => return Err(fidl::Error::NotNullable),
3213                Some(len) => len,
3214            };
3215            // Calling decoder.out_of_line_offset(0) is not allowed.
3216            if len == 0 {
3217                return Ok(());
3218            };
3219            depth.increment()?;
3220            let envelope_size = 8;
3221            let bytes_len = len * envelope_size;
3222            let offset = decoder.out_of_line_offset(bytes_len)?;
3223            // Decode the envelope for each type.
3224            let mut _next_ordinal_to_read = 0;
3225            let mut next_offset = offset;
3226            let end_offset = offset + bytes_len;
3227            _next_ordinal_to_read += 1;
3228            if next_offset >= end_offset {
3229                return Ok(());
3230            }
3231
3232            // Decode unknown envelopes for gaps in ordinals.
3233            while _next_ordinal_to_read < 1 {
3234                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3235                _next_ordinal_to_read += 1;
3236                next_offset += envelope_size;
3237            }
3238
3239            let next_out_of_line = decoder.next_out_of_line();
3240            let handles_before = decoder.remaining_handles();
3241            if let Some((inlined, num_bytes, num_handles)) =
3242                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3243            {
3244                let member_inline_size =
3245                    <ConfigurationToRequest as fidl::encoding::TypeMarker>::inline_size(
3246                        decoder.context,
3247                    );
3248                if inlined != (member_inline_size <= 4) {
3249                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3250                }
3251                let inner_offset;
3252                let mut inner_depth = depth.clone();
3253                if inlined {
3254                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3255                    inner_offset = next_offset;
3256                } else {
3257                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3258                    inner_depth.increment()?;
3259                }
3260                let val_ref = self
3261                    .configuration_to_request
3262                    .get_or_insert_with(|| fidl::new_empty!(ConfigurationToRequest, D));
3263                fidl::decode!(
3264                    ConfigurationToRequest,
3265                    D,
3266                    val_ref,
3267                    decoder,
3268                    inner_offset,
3269                    inner_depth
3270                )?;
3271                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3272                {
3273                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3274                }
3275                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3276                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3277                }
3278            }
3279
3280            next_offset += envelope_size;
3281            _next_ordinal_to_read += 1;
3282            if next_offset >= end_offset {
3283                return Ok(());
3284            }
3285
3286            // Decode unknown envelopes for gaps in ordinals.
3287            while _next_ordinal_to_read < 2 {
3288                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3289                _next_ordinal_to_read += 1;
3290                next_offset += envelope_size;
3291            }
3292
3293            let next_out_of_line = decoder.next_out_of_line();
3294            let handles_before = decoder.remaining_handles();
3295            if let Some((inlined, num_bytes, num_handles)) =
3296                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3297            {
3298                let member_inline_size =
3299                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3300                if inlined != (member_inline_size <= 4) {
3301                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3302                }
3303                let inner_offset;
3304                let mut inner_depth = depth.clone();
3305                if inlined {
3306                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3307                    inner_offset = next_offset;
3308                } else {
3309                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3310                    inner_depth.increment()?;
3311                }
3312                let val_ref =
3313                    self.request_ip_address.get_or_insert_with(|| fidl::new_empty!(bool, D));
3314                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3315                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3316                {
3317                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3318                }
3319                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3320                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3321                }
3322            }
3323
3324            next_offset += envelope_size;
3325
3326            // Decode the remaining unknown envelopes.
3327            while next_offset < end_offset {
3328                _next_ordinal_to_read += 1;
3329                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3330                next_offset += envelope_size;
3331            }
3332
3333            Ok(())
3334        }
3335    }
3336
3337    impl StaticAssignment {
3338        #[inline(always)]
3339        fn max_ordinal_present(&self) -> u64 {
3340            if let Some(_) = self.assigned_addr {
3341                return 2;
3342            }
3343            if let Some(_) = self.host {
3344                return 1;
3345            }
3346            0
3347        }
3348    }
3349
3350    impl fidl::encoding::ValueTypeMarker for StaticAssignment {
3351        type Borrowed<'a> = &'a Self;
3352        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3353            value
3354        }
3355    }
3356
3357    unsafe impl fidl::encoding::TypeMarker for StaticAssignment {
3358        type Owned = Self;
3359
3360        #[inline(always)]
3361        fn inline_align(_context: fidl::encoding::Context) -> usize {
3362            8
3363        }
3364
3365        #[inline(always)]
3366        fn inline_size(_context: fidl::encoding::Context) -> usize {
3367            16
3368        }
3369    }
3370
3371    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StaticAssignment, D>
3372        for &StaticAssignment
3373    {
3374        unsafe fn encode(
3375            self,
3376            encoder: &mut fidl::encoding::Encoder<'_, D>,
3377            offset: usize,
3378            mut depth: fidl::encoding::Depth,
3379        ) -> fidl::Result<()> {
3380            encoder.debug_check_bounds::<StaticAssignment>(offset);
3381            // Vector header
3382            let max_ordinal: u64 = self.max_ordinal_present();
3383            encoder.write_num(max_ordinal, offset);
3384            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3385            // Calling encoder.out_of_line_offset(0) is not allowed.
3386            if max_ordinal == 0 {
3387                return Ok(());
3388            }
3389            depth.increment()?;
3390            let envelope_size = 8;
3391            let bytes_len = max_ordinal as usize * envelope_size;
3392            #[allow(unused_variables)]
3393            let offset = encoder.out_of_line_offset(bytes_len);
3394            let mut _prev_end_offset: usize = 0;
3395            if 1 > max_ordinal {
3396                return Ok(());
3397            }
3398
3399            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3400            // are envelope_size bytes.
3401            let cur_offset: usize = (1 - 1) * envelope_size;
3402
3403            // Zero reserved fields.
3404            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3405
3406            // Safety:
3407            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3408            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3409            //   envelope_size bytes, there is always sufficient room.
3410            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::MacAddress, D>(
3411            self.host.as_ref().map(<fidl_fuchsia_net_common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow),
3412            encoder, offset + cur_offset, depth
3413        )?;
3414
3415            _prev_end_offset = cur_offset + envelope_size;
3416            if 2 > max_ordinal {
3417                return Ok(());
3418            }
3419
3420            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3421            // are envelope_size bytes.
3422            let cur_offset: usize = (2 - 1) * envelope_size;
3423
3424            // Zero reserved fields.
3425            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3426
3427            // Safety:
3428            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3429            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3430            //   envelope_size bytes, there is always sufficient room.
3431            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv4Address, D>(
3432            self.assigned_addr.as_ref().map(<fidl_fuchsia_net_common::Ipv4Address as fidl::encoding::ValueTypeMarker>::borrow),
3433            encoder, offset + cur_offset, depth
3434        )?;
3435
3436            _prev_end_offset = cur_offset + envelope_size;
3437
3438            Ok(())
3439        }
3440    }
3441
3442    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StaticAssignment {
3443        #[inline(always)]
3444        fn new_empty() -> Self {
3445            Self::default()
3446        }
3447
3448        unsafe fn decode(
3449            &mut self,
3450            decoder: &mut fidl::encoding::Decoder<'_, D>,
3451            offset: usize,
3452            mut depth: fidl::encoding::Depth,
3453        ) -> fidl::Result<()> {
3454            decoder.debug_check_bounds::<Self>(offset);
3455            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3456                None => return Err(fidl::Error::NotNullable),
3457                Some(len) => len,
3458            };
3459            // Calling decoder.out_of_line_offset(0) is not allowed.
3460            if len == 0 {
3461                return Ok(());
3462            };
3463            depth.increment()?;
3464            let envelope_size = 8;
3465            let bytes_len = len * envelope_size;
3466            let offset = decoder.out_of_line_offset(bytes_len)?;
3467            // Decode the envelope for each type.
3468            let mut _next_ordinal_to_read = 0;
3469            let mut next_offset = offset;
3470            let end_offset = offset + bytes_len;
3471            _next_ordinal_to_read += 1;
3472            if next_offset >= end_offset {
3473                return Ok(());
3474            }
3475
3476            // Decode unknown envelopes for gaps in ordinals.
3477            while _next_ordinal_to_read < 1 {
3478                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3479                _next_ordinal_to_read += 1;
3480                next_offset += envelope_size;
3481            }
3482
3483            let next_out_of_line = decoder.next_out_of_line();
3484            let handles_before = decoder.remaining_handles();
3485            if let Some((inlined, num_bytes, num_handles)) =
3486                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3487            {
3488                let member_inline_size = <fidl_fuchsia_net_common::MacAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3489                if inlined != (member_inline_size <= 4) {
3490                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3491                }
3492                let inner_offset;
3493                let mut inner_depth = depth.clone();
3494                if inlined {
3495                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3496                    inner_offset = next_offset;
3497                } else {
3498                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3499                    inner_depth.increment()?;
3500                }
3501                let val_ref = self.host.get_or_insert_with(|| {
3502                    fidl::new_empty!(fidl_fuchsia_net_common::MacAddress, D)
3503                });
3504                fidl::decode!(
3505                    fidl_fuchsia_net_common::MacAddress,
3506                    D,
3507                    val_ref,
3508                    decoder,
3509                    inner_offset,
3510                    inner_depth
3511                )?;
3512                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3513                {
3514                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3515                }
3516                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3517                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3518                }
3519            }
3520
3521            next_offset += envelope_size;
3522            _next_ordinal_to_read += 1;
3523            if next_offset >= end_offset {
3524                return Ok(());
3525            }
3526
3527            // Decode unknown envelopes for gaps in ordinals.
3528            while _next_ordinal_to_read < 2 {
3529                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3530                _next_ordinal_to_read += 1;
3531                next_offset += envelope_size;
3532            }
3533
3534            let next_out_of_line = decoder.next_out_of_line();
3535            let handles_before = decoder.remaining_handles();
3536            if let Some((inlined, num_bytes, num_handles)) =
3537                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3538            {
3539                let member_inline_size = <fidl_fuchsia_net_common::Ipv4Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3540                if inlined != (member_inline_size <= 4) {
3541                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3542                }
3543                let inner_offset;
3544                let mut inner_depth = depth.clone();
3545                if inlined {
3546                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3547                    inner_offset = next_offset;
3548                } else {
3549                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3550                    inner_depth.increment()?;
3551                }
3552                let val_ref = self.assigned_addr.get_or_insert_with(|| {
3553                    fidl::new_empty!(fidl_fuchsia_net_common::Ipv4Address, D)
3554                });
3555                fidl::decode!(
3556                    fidl_fuchsia_net_common::Ipv4Address,
3557                    D,
3558                    val_ref,
3559                    decoder,
3560                    inner_offset,
3561                    inner_depth
3562                )?;
3563                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3564                {
3565                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3566                }
3567                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3568                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3569                }
3570            }
3571
3572            next_offset += envelope_size;
3573
3574            // Decode the remaining unknown envelopes.
3575            while next_offset < end_offset {
3576                _next_ordinal_to_read += 1;
3577                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3578                next_offset += envelope_size;
3579            }
3580
3581            Ok(())
3582        }
3583    }
3584
3585    impl fidl::encoding::ValueTypeMarker for Option_ {
3586        type Borrowed<'a> = &'a Self;
3587        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3588            value
3589        }
3590    }
3591
3592    unsafe impl fidl::encoding::TypeMarker for Option_ {
3593        type Owned = Self;
3594
3595        #[inline(always)]
3596        fn inline_align(_context: fidl::encoding::Context) -> usize {
3597            8
3598        }
3599
3600        #[inline(always)]
3601        fn inline_size(_context: fidl::encoding::Context) -> usize {
3602            16
3603        }
3604    }
3605
3606    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Option_, D> for &Option_ {
3607        #[inline]
3608        unsafe fn encode(
3609            self,
3610            encoder: &mut fidl::encoding::Encoder<'_, D>,
3611            offset: usize,
3612            _depth: fidl::encoding::Depth,
3613        ) -> fidl::Result<()> {
3614            encoder.debug_check_bounds::<Option_>(offset);
3615            encoder.write_num::<u64>(self.ordinal(), offset);
3616            match self {
3617            Option_::SubnetMask(ref val) => {
3618                fidl::encoding::encode_in_envelope::<fidl_fuchsia_net_common::Ipv4Address, D>(
3619                    <fidl_fuchsia_net_common::Ipv4Address as fidl::encoding::ValueTypeMarker>::borrow(val),
3620                    encoder, offset + 8, _depth
3621                )
3622            }
3623            Option_::TimeOffset(ref val) => {
3624                fidl::encoding::encode_in_envelope::<i32, D>(
3625                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
3626                    encoder, offset + 8, _depth
3627                )
3628            }
3629            Option_::Router(ref val) => {
3630                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3631                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3632                    encoder, offset + 8, _depth
3633                )
3634            }
3635            Option_::TimeServer(ref val) => {
3636                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3637                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3638                    encoder, offset + 8, _depth
3639                )
3640            }
3641            Option_::NameServer(ref val) => {
3642                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3643                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3644                    encoder, offset + 8, _depth
3645                )
3646            }
3647            Option_::DomainNameServer(ref val) => {
3648                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3649                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3650                    encoder, offset + 8, _depth
3651                )
3652            }
3653            Option_::LogServer(ref val) => {
3654                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3655                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3656                    encoder, offset + 8, _depth
3657                )
3658            }
3659            Option_::CookieServer(ref val) => {
3660                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3661                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3662                    encoder, offset + 8, _depth
3663                )
3664            }
3665            Option_::LprServer(ref val) => {
3666                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3667                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3668                    encoder, offset + 8, _depth
3669                )
3670            }
3671            Option_::ImpressServer(ref val) => {
3672                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3673                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3674                    encoder, offset + 8, _depth
3675                )
3676            }
3677            Option_::ResourceLocationServer(ref val) => {
3678                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3679                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3680                    encoder, offset + 8, _depth
3681                )
3682            }
3683            Option_::HostName(ref val) => {
3684                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<255>, D>(
3685                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(val),
3686                    encoder, offset + 8, _depth
3687                )
3688            }
3689            Option_::BootFileSize(ref val) => {
3690                fidl::encoding::encode_in_envelope::<u16, D>(
3691                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(val),
3692                    encoder, offset + 8, _depth
3693                )
3694            }
3695            Option_::MeritDumpFile(ref val) => {
3696                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<255>, D>(
3697                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(val),
3698                    encoder, offset + 8, _depth
3699                )
3700            }
3701            Option_::DomainName(ref val) => {
3702                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<255>, D>(
3703                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(val),
3704                    encoder, offset + 8, _depth
3705                )
3706            }
3707            Option_::SwapServer(ref val) => {
3708                fidl::encoding::encode_in_envelope::<fidl_fuchsia_net_common::Ipv4Address, D>(
3709                    <fidl_fuchsia_net_common::Ipv4Address as fidl::encoding::ValueTypeMarker>::borrow(val),
3710                    encoder, offset + 8, _depth
3711                )
3712            }
3713            Option_::RootPath(ref val) => {
3714                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<255>, D>(
3715                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(val),
3716                    encoder, offset + 8, _depth
3717                )
3718            }
3719            Option_::ExtensionsPath(ref val) => {
3720                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<255>, D>(
3721                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(val),
3722                    encoder, offset + 8, _depth
3723                )
3724            }
3725            Option_::IpForwarding(ref val) => {
3726                fidl::encoding::encode_in_envelope::<bool, D>(
3727                    <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
3728                    encoder, offset + 8, _depth
3729                )
3730            }
3731            Option_::NonLocalSourceRouting(ref val) => {
3732                fidl::encoding::encode_in_envelope::<bool, D>(
3733                    <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
3734                    encoder, offset + 8, _depth
3735                )
3736            }
3737            Option_::PolicyFilter(ref val) => {
3738                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3739                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3740                    encoder, offset + 8, _depth
3741                )
3742            }
3743            Option_::MaxDatagramReassemblySize(ref val) => {
3744                fidl::encoding::encode_in_envelope::<u16, D>(
3745                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(val),
3746                    encoder, offset + 8, _depth
3747                )
3748            }
3749            Option_::DefaultIpTtl(ref val) => {
3750                fidl::encoding::encode_in_envelope::<u8, D>(
3751                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(val),
3752                    encoder, offset + 8, _depth
3753                )
3754            }
3755            Option_::PathMtuAgingTimeout(ref val) => {
3756                fidl::encoding::encode_in_envelope::<u32, D>(
3757                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
3758                    encoder, offset + 8, _depth
3759                )
3760            }
3761            Option_::PathMtuPlateauTable(ref val) => {
3762                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<u16, 127>, D>(
3763                    <fidl::encoding::Vector<u16, 127> as fidl::encoding::ValueTypeMarker>::borrow(val),
3764                    encoder, offset + 8, _depth
3765                )
3766            }
3767            Option_::InterfaceMtu(ref val) => {
3768                fidl::encoding::encode_in_envelope::<u16, D>(
3769                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(val),
3770                    encoder, offset + 8, _depth
3771                )
3772            }
3773            Option_::AllSubnetsLocal(ref val) => {
3774                fidl::encoding::encode_in_envelope::<bool, D>(
3775                    <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
3776                    encoder, offset + 8, _depth
3777                )
3778            }
3779            Option_::BroadcastAddress(ref val) => {
3780                fidl::encoding::encode_in_envelope::<fidl_fuchsia_net_common::Ipv4Address, D>(
3781                    <fidl_fuchsia_net_common::Ipv4Address as fidl::encoding::ValueTypeMarker>::borrow(val),
3782                    encoder, offset + 8, _depth
3783                )
3784            }
3785            Option_::PerformMaskDiscovery(ref val) => {
3786                fidl::encoding::encode_in_envelope::<bool, D>(
3787                    <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
3788                    encoder, offset + 8, _depth
3789                )
3790            }
3791            Option_::MaskSupplier(ref val) => {
3792                fidl::encoding::encode_in_envelope::<bool, D>(
3793                    <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
3794                    encoder, offset + 8, _depth
3795                )
3796            }
3797            Option_::PerformRouterDiscovery(ref val) => {
3798                fidl::encoding::encode_in_envelope::<bool, D>(
3799                    <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
3800                    encoder, offset + 8, _depth
3801                )
3802            }
3803            Option_::RouterSolicitationAddress(ref val) => {
3804                fidl::encoding::encode_in_envelope::<fidl_fuchsia_net_common::Ipv4Address, D>(
3805                    <fidl_fuchsia_net_common::Ipv4Address as fidl::encoding::ValueTypeMarker>::borrow(val),
3806                    encoder, offset + 8, _depth
3807                )
3808            }
3809            Option_::StaticRoute(ref val) => {
3810                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3811                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3812                    encoder, offset + 8, _depth
3813                )
3814            }
3815            Option_::TrailerEncapsulation(ref val) => {
3816                fidl::encoding::encode_in_envelope::<bool, D>(
3817                    <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
3818                    encoder, offset + 8, _depth
3819                )
3820            }
3821            Option_::ArpCacheTimeout(ref val) => {
3822                fidl::encoding::encode_in_envelope::<u32, D>(
3823                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
3824                    encoder, offset + 8, _depth
3825                )
3826            }
3827            Option_::EthernetEncapsulation(ref val) => {
3828                fidl::encoding::encode_in_envelope::<bool, D>(
3829                    <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
3830                    encoder, offset + 8, _depth
3831                )
3832            }
3833            Option_::TcpDefaultTtl(ref val) => {
3834                fidl::encoding::encode_in_envelope::<u8, D>(
3835                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(val),
3836                    encoder, offset + 8, _depth
3837                )
3838            }
3839            Option_::TcpKeepaliveInterval(ref val) => {
3840                fidl::encoding::encode_in_envelope::<u32, D>(
3841                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
3842                    encoder, offset + 8, _depth
3843                )
3844            }
3845            Option_::TcpKeepaliveGarbage(ref val) => {
3846                fidl::encoding::encode_in_envelope::<bool, D>(
3847                    <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
3848                    encoder, offset + 8, _depth
3849                )
3850            }
3851            Option_::NetworkInformationServiceDomain(ref val) => {
3852                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<255>, D>(
3853                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(val),
3854                    encoder, offset + 8, _depth
3855                )
3856            }
3857            Option_::NetworkInformationServers(ref val) => {
3858                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3859                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3860                    encoder, offset + 8, _depth
3861                )
3862            }
3863            Option_::NetworkTimeProtocolServers(ref val) => {
3864                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3865                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3866                    encoder, offset + 8, _depth
3867                )
3868            }
3869            Option_::VendorSpecificInformation(ref val) => {
3870                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<u8, 255>, D>(
3871                    <fidl::encoding::Vector<u8, 255> as fidl::encoding::ValueTypeMarker>::borrow(val),
3872                    encoder, offset + 8, _depth
3873                )
3874            }
3875            Option_::NetbiosOverTcpipNameServer(ref val) => {
3876                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3877                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3878                    encoder, offset + 8, _depth
3879                )
3880            }
3881            Option_::NetbiosOverTcpipDatagramDistributionServer(ref val) => {
3882                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3883                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3884                    encoder, offset + 8, _depth
3885                )
3886            }
3887            Option_::NetbiosOverTcpipNodeType(ref val) => {
3888                fidl::encoding::encode_in_envelope::<NodeTypes, D>(
3889                    <NodeTypes as fidl::encoding::ValueTypeMarker>::borrow(val),
3890                    encoder, offset + 8, _depth
3891                )
3892            }
3893            Option_::NetbiosOverTcpipScope(ref val) => {
3894                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<255>, D>(
3895                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(val),
3896                    encoder, offset + 8, _depth
3897                )
3898            }
3899            Option_::XWindowSystemFontServer(ref val) => {
3900                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3901                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3902                    encoder, offset + 8, _depth
3903                )
3904            }
3905            Option_::XWindowSystemDisplayManager(ref val) => {
3906                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3907                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3908                    encoder, offset + 8, _depth
3909                )
3910            }
3911            Option_::NetworkInformationServicePlusDomain(ref val) => {
3912                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<255>, D>(
3913                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(val),
3914                    encoder, offset + 8, _depth
3915                )
3916            }
3917            Option_::NetworkInformationServicePlusServers(ref val) => {
3918                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3919                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3920                    encoder, offset + 8, _depth
3921                )
3922            }
3923            Option_::MobileIpHomeAgent(ref val) => {
3924                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3925                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3926                    encoder, offset + 8, _depth
3927                )
3928            }
3929            Option_::SmtpServer(ref val) => {
3930                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3931                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3932                    encoder, offset + 8, _depth
3933                )
3934            }
3935            Option_::Pop3Server(ref val) => {
3936                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3937                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3938                    encoder, offset + 8, _depth
3939                )
3940            }
3941            Option_::NntpServer(ref val) => {
3942                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3943                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3944                    encoder, offset + 8, _depth
3945                )
3946            }
3947            Option_::DefaultWwwServer(ref val) => {
3948                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3949                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3950                    encoder, offset + 8, _depth
3951                )
3952            }
3953            Option_::DefaultFingerServer(ref val) => {
3954                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3955                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3956                    encoder, offset + 8, _depth
3957                )
3958            }
3959            Option_::DefaultIrcServer(ref val) => {
3960                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3961                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3962                    encoder, offset + 8, _depth
3963                )
3964            }
3965            Option_::StreettalkServer(ref val) => {
3966                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3967                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3968                    encoder, offset + 8, _depth
3969                )
3970            }
3971            Option_::StreettalkDirectoryAssistanceServer(ref val) => {
3972                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D>(
3973                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::ValueTypeMarker>::borrow(val),
3974                    encoder, offset + 8, _depth
3975                )
3976            }
3977            Option_::OptionOverload(ref val) => {
3978                fidl::encoding::encode_in_envelope::<OptionOverloadValue, D>(
3979                    <OptionOverloadValue as fidl::encoding::ValueTypeMarker>::borrow(val),
3980                    encoder, offset + 8, _depth
3981                )
3982            }
3983            Option_::TftpServerName(ref val) => {
3984                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<255>, D>(
3985                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(val),
3986                    encoder, offset + 8, _depth
3987                )
3988            }
3989            Option_::BootfileName(ref val) => {
3990                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<255>, D>(
3991                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(val),
3992                    encoder, offset + 8, _depth
3993                )
3994            }
3995            Option_::MaxDhcpMessageSize(ref val) => {
3996                fidl::encoding::encode_in_envelope::<u16, D>(
3997                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(val),
3998                    encoder, offset + 8, _depth
3999                )
4000            }
4001            Option_::RenewalTimeValue(ref val) => {
4002                fidl::encoding::encode_in_envelope::<u32, D>(
4003                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
4004                    encoder, offset + 8, _depth
4005                )
4006            }
4007            Option_::RebindingTimeValue(ref val) => {
4008                fidl::encoding::encode_in_envelope::<u32, D>(
4009                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
4010                    encoder, offset + 8, _depth
4011                )
4012            }
4013            Option_::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
4014        }
4015        }
4016    }
4017
4018    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Option_ {
4019        #[inline(always)]
4020        fn new_empty() -> Self {
4021            Self::__SourceBreaking { unknown_ordinal: 0 }
4022        }
4023
4024        #[inline]
4025        unsafe fn decode(
4026            &mut self,
4027            decoder: &mut fidl::encoding::Decoder<'_, D>,
4028            offset: usize,
4029            mut depth: fidl::encoding::Depth,
4030        ) -> fidl::Result<()> {
4031            decoder.debug_check_bounds::<Self>(offset);
4032            #[allow(unused_variables)]
4033            let next_out_of_line = decoder.next_out_of_line();
4034            let handles_before = decoder.remaining_handles();
4035            let (ordinal, inlined, num_bytes, num_handles) =
4036                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
4037
4038            let member_inline_size = match ordinal {
4039            1 => <fidl_fuchsia_net_common::Ipv4Address as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4040            2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4041            3 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4042            4 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4043            5 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4044            6 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4045            7 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4046            8 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4047            9 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4048            10 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4049            11 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4050            12 => <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4051            13 => <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4052            14 => <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4053            15 => <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4054            16 => <fidl_fuchsia_net_common::Ipv4Address as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4055            17 => <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4056            18 => <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4057            19 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4058            20 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4059            21 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4060            22 => <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4061            23 => <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4062            24 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4063            25 => <fidl::encoding::Vector<u16, 127> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4064            26 => <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4065            27 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4066            28 => <fidl_fuchsia_net_common::Ipv4Address as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4067            29 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4068            30 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4069            31 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4070            32 => <fidl_fuchsia_net_common::Ipv4Address as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4071            33 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4072            34 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4073            35 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4074            36 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4075            37 => <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4076            38 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4077            39 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4078            40 => <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4079            41 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4080            42 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4081            43 => <fidl::encoding::Vector<u8, 255> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4082            44 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4083            45 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4084            46 => <NodeTypes as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4085            47 => <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4086            48 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4087            49 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4088            50 => <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4089            51 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4090            52 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4091            53 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4092            54 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4093            55 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4094            56 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4095            57 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4096            58 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4097            59 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4098            60 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4099            61 => <OptionOverloadValue as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4100            62 => <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4101            63 => <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4102            64 => <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4103            65 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4104            66 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4105            0 => return Err(fidl::Error::UnknownUnionTag),
4106            _ => num_bytes as usize,
4107        };
4108
4109            if inlined != (member_inline_size <= 4) {
4110                return Err(fidl::Error::InvalidInlineBitInEnvelope);
4111            }
4112            let _inner_offset;
4113            if inlined {
4114                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
4115                _inner_offset = offset + 8;
4116            } else {
4117                depth.increment()?;
4118                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4119            }
4120            match ordinal {
4121                1 => {
4122                    #[allow(irrefutable_let_patterns)]
4123                    if let Option_::SubnetMask(_) = self {
4124                        // Do nothing, read the value into the object
4125                    } else {
4126                        // Initialize `self` to the right variant
4127                        *self = Option_::SubnetMask(fidl::new_empty!(
4128                            fidl_fuchsia_net_common::Ipv4Address,
4129                            D
4130                        ));
4131                    }
4132                    #[allow(irrefutable_let_patterns)]
4133                    if let Option_::SubnetMask(ref mut val) = self {
4134                        fidl::decode!(
4135                            fidl_fuchsia_net_common::Ipv4Address,
4136                            D,
4137                            val,
4138                            decoder,
4139                            _inner_offset,
4140                            depth
4141                        )?;
4142                    } else {
4143                        unreachable!()
4144                    }
4145                }
4146                2 => {
4147                    #[allow(irrefutable_let_patterns)]
4148                    if let Option_::TimeOffset(_) = self {
4149                        // Do nothing, read the value into the object
4150                    } else {
4151                        // Initialize `self` to the right variant
4152                        *self = Option_::TimeOffset(fidl::new_empty!(i32, D));
4153                    }
4154                    #[allow(irrefutable_let_patterns)]
4155                    if let Option_::TimeOffset(ref mut val) = self {
4156                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
4157                    } else {
4158                        unreachable!()
4159                    }
4160                }
4161                3 => {
4162                    #[allow(irrefutable_let_patterns)]
4163                    if let Option_::Router(_) = self {
4164                        // Do nothing, read the value into the object
4165                    } else {
4166                        // Initialize `self` to the right variant
4167                        *self = Option_::Router(
4168                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
4169                        );
4170                    }
4171                    #[allow(irrefutable_let_patterns)]
4172                    if let Option_::Router(ref mut val) = self {
4173                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
4174                    } else {
4175                        unreachable!()
4176                    }
4177                }
4178                4 => {
4179                    #[allow(irrefutable_let_patterns)]
4180                    if let Option_::TimeServer(_) = self {
4181                        // Do nothing, read the value into the object
4182                    } else {
4183                        // Initialize `self` to the right variant
4184                        *self = Option_::TimeServer(
4185                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
4186                        );
4187                    }
4188                    #[allow(irrefutable_let_patterns)]
4189                    if let Option_::TimeServer(ref mut val) = self {
4190                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
4191                    } else {
4192                        unreachable!()
4193                    }
4194                }
4195                5 => {
4196                    #[allow(irrefutable_let_patterns)]
4197                    if let Option_::NameServer(_) = self {
4198                        // Do nothing, read the value into the object
4199                    } else {
4200                        // Initialize `self` to the right variant
4201                        *self = Option_::NameServer(
4202                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
4203                        );
4204                    }
4205                    #[allow(irrefutable_let_patterns)]
4206                    if let Option_::NameServer(ref mut val) = self {
4207                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
4208                    } else {
4209                        unreachable!()
4210                    }
4211                }
4212                6 => {
4213                    #[allow(irrefutable_let_patterns)]
4214                    if let Option_::DomainNameServer(_) = self {
4215                        // Do nothing, read the value into the object
4216                    } else {
4217                        // Initialize `self` to the right variant
4218                        *self = Option_::DomainNameServer(
4219                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
4220                        );
4221                    }
4222                    #[allow(irrefutable_let_patterns)]
4223                    if let Option_::DomainNameServer(ref mut val) = self {
4224                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
4225                    } else {
4226                        unreachable!()
4227                    }
4228                }
4229                7 => {
4230                    #[allow(irrefutable_let_patterns)]
4231                    if let Option_::LogServer(_) = self {
4232                        // Do nothing, read the value into the object
4233                    } else {
4234                        // Initialize `self` to the right variant
4235                        *self = Option_::LogServer(
4236                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
4237                        );
4238                    }
4239                    #[allow(irrefutable_let_patterns)]
4240                    if let Option_::LogServer(ref mut val) = self {
4241                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
4242                    } else {
4243                        unreachable!()
4244                    }
4245                }
4246                8 => {
4247                    #[allow(irrefutable_let_patterns)]
4248                    if let Option_::CookieServer(_) = self {
4249                        // Do nothing, read the value into the object
4250                    } else {
4251                        // Initialize `self` to the right variant
4252                        *self = Option_::CookieServer(
4253                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
4254                        );
4255                    }
4256                    #[allow(irrefutable_let_patterns)]
4257                    if let Option_::CookieServer(ref mut val) = self {
4258                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
4259                    } else {
4260                        unreachable!()
4261                    }
4262                }
4263                9 => {
4264                    #[allow(irrefutable_let_patterns)]
4265                    if let Option_::LprServer(_) = self {
4266                        // Do nothing, read the value into the object
4267                    } else {
4268                        // Initialize `self` to the right variant
4269                        *self = Option_::LprServer(
4270                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
4271                        );
4272                    }
4273                    #[allow(irrefutable_let_patterns)]
4274                    if let Option_::LprServer(ref mut val) = self {
4275                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
4276                    } else {
4277                        unreachable!()
4278                    }
4279                }
4280                10 => {
4281                    #[allow(irrefutable_let_patterns)]
4282                    if let Option_::ImpressServer(_) = self {
4283                        // Do nothing, read the value into the object
4284                    } else {
4285                        // Initialize `self` to the right variant
4286                        *self = Option_::ImpressServer(
4287                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
4288                        );
4289                    }
4290                    #[allow(irrefutable_let_patterns)]
4291                    if let Option_::ImpressServer(ref mut val) = self {
4292                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
4293                    } else {
4294                        unreachable!()
4295                    }
4296                }
4297                11 => {
4298                    #[allow(irrefutable_let_patterns)]
4299                    if let Option_::ResourceLocationServer(_) = self {
4300                        // Do nothing, read the value into the object
4301                    } else {
4302                        // Initialize `self` to the right variant
4303                        *self = Option_::ResourceLocationServer(
4304                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
4305                        );
4306                    }
4307                    #[allow(irrefutable_let_patterns)]
4308                    if let Option_::ResourceLocationServer(ref mut val) = self {
4309                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
4310                    } else {
4311                        unreachable!()
4312                    }
4313                }
4314                12 => {
4315                    #[allow(irrefutable_let_patterns)]
4316                    if let Option_::HostName(_) = self {
4317                        // Do nothing, read the value into the object
4318                    } else {
4319                        // Initialize `self` to the right variant
4320                        *self = Option_::HostName(fidl::new_empty!(
4321                            fidl::encoding::BoundedString<255>,
4322                            D
4323                        ));
4324                    }
4325                    #[allow(irrefutable_let_patterns)]
4326                    if let Option_::HostName(ref mut val) = self {
4327                        fidl::decode!(
4328                            fidl::encoding::BoundedString<255>,
4329                            D,
4330                            val,
4331                            decoder,
4332                            _inner_offset,
4333                            depth
4334                        )?;
4335                    } else {
4336                        unreachable!()
4337                    }
4338                }
4339                13 => {
4340                    #[allow(irrefutable_let_patterns)]
4341                    if let Option_::BootFileSize(_) = self {
4342                        // Do nothing, read the value into the object
4343                    } else {
4344                        // Initialize `self` to the right variant
4345                        *self = Option_::BootFileSize(fidl::new_empty!(u16, D));
4346                    }
4347                    #[allow(irrefutable_let_patterns)]
4348                    if let Option_::BootFileSize(ref mut val) = self {
4349                        fidl::decode!(u16, D, val, decoder, _inner_offset, depth)?;
4350                    } else {
4351                        unreachable!()
4352                    }
4353                }
4354                14 => {
4355                    #[allow(irrefutable_let_patterns)]
4356                    if let Option_::MeritDumpFile(_) = self {
4357                        // Do nothing, read the value into the object
4358                    } else {
4359                        // Initialize `self` to the right variant
4360                        *self = Option_::MeritDumpFile(fidl::new_empty!(
4361                            fidl::encoding::BoundedString<255>,
4362                            D
4363                        ));
4364                    }
4365                    #[allow(irrefutable_let_patterns)]
4366                    if let Option_::MeritDumpFile(ref mut val) = self {
4367                        fidl::decode!(
4368                            fidl::encoding::BoundedString<255>,
4369                            D,
4370                            val,
4371                            decoder,
4372                            _inner_offset,
4373                            depth
4374                        )?;
4375                    } else {
4376                        unreachable!()
4377                    }
4378                }
4379                15 => {
4380                    #[allow(irrefutable_let_patterns)]
4381                    if let Option_::DomainName(_) = self {
4382                        // Do nothing, read the value into the object
4383                    } else {
4384                        // Initialize `self` to the right variant
4385                        *self = Option_::DomainName(fidl::new_empty!(
4386                            fidl::encoding::BoundedString<255>,
4387                            D
4388                        ));
4389                    }
4390                    #[allow(irrefutable_let_patterns)]
4391                    if let Option_::DomainName(ref mut val) = self {
4392                        fidl::decode!(
4393                            fidl::encoding::BoundedString<255>,
4394                            D,
4395                            val,
4396                            decoder,
4397                            _inner_offset,
4398                            depth
4399                        )?;
4400                    } else {
4401                        unreachable!()
4402                    }
4403                }
4404                16 => {
4405                    #[allow(irrefutable_let_patterns)]
4406                    if let Option_::SwapServer(_) = self {
4407                        // Do nothing, read the value into the object
4408                    } else {
4409                        // Initialize `self` to the right variant
4410                        *self = Option_::SwapServer(fidl::new_empty!(
4411                            fidl_fuchsia_net_common::Ipv4Address,
4412                            D
4413                        ));
4414                    }
4415                    #[allow(irrefutable_let_patterns)]
4416                    if let Option_::SwapServer(ref mut val) = self {
4417                        fidl::decode!(
4418                            fidl_fuchsia_net_common::Ipv4Address,
4419                            D,
4420                            val,
4421                            decoder,
4422                            _inner_offset,
4423                            depth
4424                        )?;
4425                    } else {
4426                        unreachable!()
4427                    }
4428                }
4429                17 => {
4430                    #[allow(irrefutable_let_patterns)]
4431                    if let Option_::RootPath(_) = self {
4432                        // Do nothing, read the value into the object
4433                    } else {
4434                        // Initialize `self` to the right variant
4435                        *self = Option_::RootPath(fidl::new_empty!(
4436                            fidl::encoding::BoundedString<255>,
4437                            D
4438                        ));
4439                    }
4440                    #[allow(irrefutable_let_patterns)]
4441                    if let Option_::RootPath(ref mut val) = self {
4442                        fidl::decode!(
4443                            fidl::encoding::BoundedString<255>,
4444                            D,
4445                            val,
4446                            decoder,
4447                            _inner_offset,
4448                            depth
4449                        )?;
4450                    } else {
4451                        unreachable!()
4452                    }
4453                }
4454                18 => {
4455                    #[allow(irrefutable_let_patterns)]
4456                    if let Option_::ExtensionsPath(_) = self {
4457                        // Do nothing, read the value into the object
4458                    } else {
4459                        // Initialize `self` to the right variant
4460                        *self = Option_::ExtensionsPath(fidl::new_empty!(
4461                            fidl::encoding::BoundedString<255>,
4462                            D
4463                        ));
4464                    }
4465                    #[allow(irrefutable_let_patterns)]
4466                    if let Option_::ExtensionsPath(ref mut val) = self {
4467                        fidl::decode!(
4468                            fidl::encoding::BoundedString<255>,
4469                            D,
4470                            val,
4471                            decoder,
4472                            _inner_offset,
4473                            depth
4474                        )?;
4475                    } else {
4476                        unreachable!()
4477                    }
4478                }
4479                19 => {
4480                    #[allow(irrefutable_let_patterns)]
4481                    if let Option_::IpForwarding(_) = self {
4482                        // Do nothing, read the value into the object
4483                    } else {
4484                        // Initialize `self` to the right variant
4485                        *self = Option_::IpForwarding(fidl::new_empty!(bool, D));
4486                    }
4487                    #[allow(irrefutable_let_patterns)]
4488                    if let Option_::IpForwarding(ref mut val) = self {
4489                        fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
4490                    } else {
4491                        unreachable!()
4492                    }
4493                }
4494                20 => {
4495                    #[allow(irrefutable_let_patterns)]
4496                    if let Option_::NonLocalSourceRouting(_) = self {
4497                        // Do nothing, read the value into the object
4498                    } else {
4499                        // Initialize `self` to the right variant
4500                        *self = Option_::NonLocalSourceRouting(fidl::new_empty!(bool, D));
4501                    }
4502                    #[allow(irrefutable_let_patterns)]
4503                    if let Option_::NonLocalSourceRouting(ref mut val) = self {
4504                        fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
4505                    } else {
4506                        unreachable!()
4507                    }
4508                }
4509                21 => {
4510                    #[allow(irrefutable_let_patterns)]
4511                    if let Option_::PolicyFilter(_) = self {
4512                        // Do nothing, read the value into the object
4513                    } else {
4514                        // Initialize `self` to the right variant
4515                        *self = Option_::PolicyFilter(
4516                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
4517                        );
4518                    }
4519                    #[allow(irrefutable_let_patterns)]
4520                    if let Option_::PolicyFilter(ref mut val) = self {
4521                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
4522                    } else {
4523                        unreachable!()
4524                    }
4525                }
4526                22 => {
4527                    #[allow(irrefutable_let_patterns)]
4528                    if let Option_::MaxDatagramReassemblySize(_) = self {
4529                        // Do nothing, read the value into the object
4530                    } else {
4531                        // Initialize `self` to the right variant
4532                        *self = Option_::MaxDatagramReassemblySize(fidl::new_empty!(u16, D));
4533                    }
4534                    #[allow(irrefutable_let_patterns)]
4535                    if let Option_::MaxDatagramReassemblySize(ref mut val) = self {
4536                        fidl::decode!(u16, D, val, decoder, _inner_offset, depth)?;
4537                    } else {
4538                        unreachable!()
4539                    }
4540                }
4541                23 => {
4542                    #[allow(irrefutable_let_patterns)]
4543                    if let Option_::DefaultIpTtl(_) = self {
4544                        // Do nothing, read the value into the object
4545                    } else {
4546                        // Initialize `self` to the right variant
4547                        *self = Option_::DefaultIpTtl(fidl::new_empty!(u8, D));
4548                    }
4549                    #[allow(irrefutable_let_patterns)]
4550                    if let Option_::DefaultIpTtl(ref mut val) = self {
4551                        fidl::decode!(u8, D, val, decoder, _inner_offset, depth)?;
4552                    } else {
4553                        unreachable!()
4554                    }
4555                }
4556                24 => {
4557                    #[allow(irrefutable_let_patterns)]
4558                    if let Option_::PathMtuAgingTimeout(_) = self {
4559                        // Do nothing, read the value into the object
4560                    } else {
4561                        // Initialize `self` to the right variant
4562                        *self = Option_::PathMtuAgingTimeout(fidl::new_empty!(u32, D));
4563                    }
4564                    #[allow(irrefutable_let_patterns)]
4565                    if let Option_::PathMtuAgingTimeout(ref mut val) = self {
4566                        fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
4567                    } else {
4568                        unreachable!()
4569                    }
4570                }
4571                25 => {
4572                    #[allow(irrefutable_let_patterns)]
4573                    if let Option_::PathMtuPlateauTable(_) = self {
4574                        // Do nothing, read the value into the object
4575                    } else {
4576                        // Initialize `self` to the right variant
4577                        *self = Option_::PathMtuPlateauTable(
4578                            fidl::new_empty!(fidl::encoding::Vector<u16, 127>, D),
4579                        );
4580                    }
4581                    #[allow(irrefutable_let_patterns)]
4582                    if let Option_::PathMtuPlateauTable(ref mut val) = self {
4583                        fidl::decode!(fidl::encoding::Vector<u16, 127>, D, val, decoder, _inner_offset, depth)?;
4584                    } else {
4585                        unreachable!()
4586                    }
4587                }
4588                26 => {
4589                    #[allow(irrefutable_let_patterns)]
4590                    if let Option_::InterfaceMtu(_) = self {
4591                        // Do nothing, read the value into the object
4592                    } else {
4593                        // Initialize `self` to the right variant
4594                        *self = Option_::InterfaceMtu(fidl::new_empty!(u16, D));
4595                    }
4596                    #[allow(irrefutable_let_patterns)]
4597                    if let Option_::InterfaceMtu(ref mut val) = self {
4598                        fidl::decode!(u16, D, val, decoder, _inner_offset, depth)?;
4599                    } else {
4600                        unreachable!()
4601                    }
4602                }
4603                27 => {
4604                    #[allow(irrefutable_let_patterns)]
4605                    if let Option_::AllSubnetsLocal(_) = self {
4606                        // Do nothing, read the value into the object
4607                    } else {
4608                        // Initialize `self` to the right variant
4609                        *self = Option_::AllSubnetsLocal(fidl::new_empty!(bool, D));
4610                    }
4611                    #[allow(irrefutable_let_patterns)]
4612                    if let Option_::AllSubnetsLocal(ref mut val) = self {
4613                        fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
4614                    } else {
4615                        unreachable!()
4616                    }
4617                }
4618                28 => {
4619                    #[allow(irrefutable_let_patterns)]
4620                    if let Option_::BroadcastAddress(_) = self {
4621                        // Do nothing, read the value into the object
4622                    } else {
4623                        // Initialize `self` to the right variant
4624                        *self = Option_::BroadcastAddress(fidl::new_empty!(
4625                            fidl_fuchsia_net_common::Ipv4Address,
4626                            D
4627                        ));
4628                    }
4629                    #[allow(irrefutable_let_patterns)]
4630                    if let Option_::BroadcastAddress(ref mut val) = self {
4631                        fidl::decode!(
4632                            fidl_fuchsia_net_common::Ipv4Address,
4633                            D,
4634                            val,
4635                            decoder,
4636                            _inner_offset,
4637                            depth
4638                        )?;
4639                    } else {
4640                        unreachable!()
4641                    }
4642                }
4643                29 => {
4644                    #[allow(irrefutable_let_patterns)]
4645                    if let Option_::PerformMaskDiscovery(_) = self {
4646                        // Do nothing, read the value into the object
4647                    } else {
4648                        // Initialize `self` to the right variant
4649                        *self = Option_::PerformMaskDiscovery(fidl::new_empty!(bool, D));
4650                    }
4651                    #[allow(irrefutable_let_patterns)]
4652                    if let Option_::PerformMaskDiscovery(ref mut val) = self {
4653                        fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
4654                    } else {
4655                        unreachable!()
4656                    }
4657                }
4658                30 => {
4659                    #[allow(irrefutable_let_patterns)]
4660                    if let Option_::MaskSupplier(_) = self {
4661                        // Do nothing, read the value into the object
4662                    } else {
4663                        // Initialize `self` to the right variant
4664                        *self = Option_::MaskSupplier(fidl::new_empty!(bool, D));
4665                    }
4666                    #[allow(irrefutable_let_patterns)]
4667                    if let Option_::MaskSupplier(ref mut val) = self {
4668                        fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
4669                    } else {
4670                        unreachable!()
4671                    }
4672                }
4673                31 => {
4674                    #[allow(irrefutable_let_patterns)]
4675                    if let Option_::PerformRouterDiscovery(_) = self {
4676                        // Do nothing, read the value into the object
4677                    } else {
4678                        // Initialize `self` to the right variant
4679                        *self = Option_::PerformRouterDiscovery(fidl::new_empty!(bool, D));
4680                    }
4681                    #[allow(irrefutable_let_patterns)]
4682                    if let Option_::PerformRouterDiscovery(ref mut val) = self {
4683                        fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
4684                    } else {
4685                        unreachable!()
4686                    }
4687                }
4688                32 => {
4689                    #[allow(irrefutable_let_patterns)]
4690                    if let Option_::RouterSolicitationAddress(_) = self {
4691                        // Do nothing, read the value into the object
4692                    } else {
4693                        // Initialize `self` to the right variant
4694                        *self = Option_::RouterSolicitationAddress(fidl::new_empty!(
4695                            fidl_fuchsia_net_common::Ipv4Address,
4696                            D
4697                        ));
4698                    }
4699                    #[allow(irrefutable_let_patterns)]
4700                    if let Option_::RouterSolicitationAddress(ref mut val) = self {
4701                        fidl::decode!(
4702                            fidl_fuchsia_net_common::Ipv4Address,
4703                            D,
4704                            val,
4705                            decoder,
4706                            _inner_offset,
4707                            depth
4708                        )?;
4709                    } else {
4710                        unreachable!()
4711                    }
4712                }
4713                33 => {
4714                    #[allow(irrefutable_let_patterns)]
4715                    if let Option_::StaticRoute(_) = self {
4716                        // Do nothing, read the value into the object
4717                    } else {
4718                        // Initialize `self` to the right variant
4719                        *self = Option_::StaticRoute(
4720                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
4721                        );
4722                    }
4723                    #[allow(irrefutable_let_patterns)]
4724                    if let Option_::StaticRoute(ref mut val) = self {
4725                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
4726                    } else {
4727                        unreachable!()
4728                    }
4729                }
4730                34 => {
4731                    #[allow(irrefutable_let_patterns)]
4732                    if let Option_::TrailerEncapsulation(_) = self {
4733                        // Do nothing, read the value into the object
4734                    } else {
4735                        // Initialize `self` to the right variant
4736                        *self = Option_::TrailerEncapsulation(fidl::new_empty!(bool, D));
4737                    }
4738                    #[allow(irrefutable_let_patterns)]
4739                    if let Option_::TrailerEncapsulation(ref mut val) = self {
4740                        fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
4741                    } else {
4742                        unreachable!()
4743                    }
4744                }
4745                35 => {
4746                    #[allow(irrefutable_let_patterns)]
4747                    if let Option_::ArpCacheTimeout(_) = self {
4748                        // Do nothing, read the value into the object
4749                    } else {
4750                        // Initialize `self` to the right variant
4751                        *self = Option_::ArpCacheTimeout(fidl::new_empty!(u32, D));
4752                    }
4753                    #[allow(irrefutable_let_patterns)]
4754                    if let Option_::ArpCacheTimeout(ref mut val) = self {
4755                        fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
4756                    } else {
4757                        unreachable!()
4758                    }
4759                }
4760                36 => {
4761                    #[allow(irrefutable_let_patterns)]
4762                    if let Option_::EthernetEncapsulation(_) = self {
4763                        // Do nothing, read the value into the object
4764                    } else {
4765                        // Initialize `self` to the right variant
4766                        *self = Option_::EthernetEncapsulation(fidl::new_empty!(bool, D));
4767                    }
4768                    #[allow(irrefutable_let_patterns)]
4769                    if let Option_::EthernetEncapsulation(ref mut val) = self {
4770                        fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
4771                    } else {
4772                        unreachable!()
4773                    }
4774                }
4775                37 => {
4776                    #[allow(irrefutable_let_patterns)]
4777                    if let Option_::TcpDefaultTtl(_) = self {
4778                        // Do nothing, read the value into the object
4779                    } else {
4780                        // Initialize `self` to the right variant
4781                        *self = Option_::TcpDefaultTtl(fidl::new_empty!(u8, D));
4782                    }
4783                    #[allow(irrefutable_let_patterns)]
4784                    if let Option_::TcpDefaultTtl(ref mut val) = self {
4785                        fidl::decode!(u8, D, val, decoder, _inner_offset, depth)?;
4786                    } else {
4787                        unreachable!()
4788                    }
4789                }
4790                38 => {
4791                    #[allow(irrefutable_let_patterns)]
4792                    if let Option_::TcpKeepaliveInterval(_) = self {
4793                        // Do nothing, read the value into the object
4794                    } else {
4795                        // Initialize `self` to the right variant
4796                        *self = Option_::TcpKeepaliveInterval(fidl::new_empty!(u32, D));
4797                    }
4798                    #[allow(irrefutable_let_patterns)]
4799                    if let Option_::TcpKeepaliveInterval(ref mut val) = self {
4800                        fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
4801                    } else {
4802                        unreachable!()
4803                    }
4804                }
4805                39 => {
4806                    #[allow(irrefutable_let_patterns)]
4807                    if let Option_::TcpKeepaliveGarbage(_) = self {
4808                        // Do nothing, read the value into the object
4809                    } else {
4810                        // Initialize `self` to the right variant
4811                        *self = Option_::TcpKeepaliveGarbage(fidl::new_empty!(bool, D));
4812                    }
4813                    #[allow(irrefutable_let_patterns)]
4814                    if let Option_::TcpKeepaliveGarbage(ref mut val) = self {
4815                        fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
4816                    } else {
4817                        unreachable!()
4818                    }
4819                }
4820                40 => {
4821                    #[allow(irrefutable_let_patterns)]
4822                    if let Option_::NetworkInformationServiceDomain(_) = self {
4823                        // Do nothing, read the value into the object
4824                    } else {
4825                        // Initialize `self` to the right variant
4826                        *self = Option_::NetworkInformationServiceDomain(fidl::new_empty!(
4827                            fidl::encoding::BoundedString<255>,
4828                            D
4829                        ));
4830                    }
4831                    #[allow(irrefutable_let_patterns)]
4832                    if let Option_::NetworkInformationServiceDomain(ref mut val) = self {
4833                        fidl::decode!(
4834                            fidl::encoding::BoundedString<255>,
4835                            D,
4836                            val,
4837                            decoder,
4838                            _inner_offset,
4839                            depth
4840                        )?;
4841                    } else {
4842                        unreachable!()
4843                    }
4844                }
4845                41 => {
4846                    #[allow(irrefutable_let_patterns)]
4847                    if let Option_::NetworkInformationServers(_) = self {
4848                        // Do nothing, read the value into the object
4849                    } else {
4850                        // Initialize `self` to the right variant
4851                        *self = Option_::NetworkInformationServers(
4852                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
4853                        );
4854                    }
4855                    #[allow(irrefutable_let_patterns)]
4856                    if let Option_::NetworkInformationServers(ref mut val) = self {
4857                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
4858                    } else {
4859                        unreachable!()
4860                    }
4861                }
4862                42 => {
4863                    #[allow(irrefutable_let_patterns)]
4864                    if let Option_::NetworkTimeProtocolServers(_) = self {
4865                        // Do nothing, read the value into the object
4866                    } else {
4867                        // Initialize `self` to the right variant
4868                        *self = Option_::NetworkTimeProtocolServers(
4869                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
4870                        );
4871                    }
4872                    #[allow(irrefutable_let_patterns)]
4873                    if let Option_::NetworkTimeProtocolServers(ref mut val) = self {
4874                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
4875                    } else {
4876                        unreachable!()
4877                    }
4878                }
4879                43 => {
4880                    #[allow(irrefutable_let_patterns)]
4881                    if let Option_::VendorSpecificInformation(_) = self {
4882                        // Do nothing, read the value into the object
4883                    } else {
4884                        // Initialize `self` to the right variant
4885                        *self = Option_::VendorSpecificInformation(
4886                            fidl::new_empty!(fidl::encoding::Vector<u8, 255>, D),
4887                        );
4888                    }
4889                    #[allow(irrefutable_let_patterns)]
4890                    if let Option_::VendorSpecificInformation(ref mut val) = self {
4891                        fidl::decode!(fidl::encoding::Vector<u8, 255>, D, val, decoder, _inner_offset, depth)?;
4892                    } else {
4893                        unreachable!()
4894                    }
4895                }
4896                44 => {
4897                    #[allow(irrefutable_let_patterns)]
4898                    if let Option_::NetbiosOverTcpipNameServer(_) = self {
4899                        // Do nothing, read the value into the object
4900                    } else {
4901                        // Initialize `self` to the right variant
4902                        *self = Option_::NetbiosOverTcpipNameServer(
4903                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
4904                        );
4905                    }
4906                    #[allow(irrefutable_let_patterns)]
4907                    if let Option_::NetbiosOverTcpipNameServer(ref mut val) = self {
4908                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
4909                    } else {
4910                        unreachable!()
4911                    }
4912                }
4913                45 => {
4914                    #[allow(irrefutable_let_patterns)]
4915                    if let Option_::NetbiosOverTcpipDatagramDistributionServer(_) = self {
4916                        // Do nothing, read the value into the object
4917                    } else {
4918                        // Initialize `self` to the right variant
4919                        *self = Option_::NetbiosOverTcpipDatagramDistributionServer(
4920                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
4921                        );
4922                    }
4923                    #[allow(irrefutable_let_patterns)]
4924                    if let Option_::NetbiosOverTcpipDatagramDistributionServer(ref mut val) = self {
4925                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
4926                    } else {
4927                        unreachable!()
4928                    }
4929                }
4930                46 => {
4931                    #[allow(irrefutable_let_patterns)]
4932                    if let Option_::NetbiosOverTcpipNodeType(_) = self {
4933                        // Do nothing, read the value into the object
4934                    } else {
4935                        // Initialize `self` to the right variant
4936                        *self = Option_::NetbiosOverTcpipNodeType(fidl::new_empty!(NodeTypes, D));
4937                    }
4938                    #[allow(irrefutable_let_patterns)]
4939                    if let Option_::NetbiosOverTcpipNodeType(ref mut val) = self {
4940                        fidl::decode!(NodeTypes, D, val, decoder, _inner_offset, depth)?;
4941                    } else {
4942                        unreachable!()
4943                    }
4944                }
4945                47 => {
4946                    #[allow(irrefutable_let_patterns)]
4947                    if let Option_::NetbiosOverTcpipScope(_) = self {
4948                        // Do nothing, read the value into the object
4949                    } else {
4950                        // Initialize `self` to the right variant
4951                        *self = Option_::NetbiosOverTcpipScope(fidl::new_empty!(
4952                            fidl::encoding::BoundedString<255>,
4953                            D
4954                        ));
4955                    }
4956                    #[allow(irrefutable_let_patterns)]
4957                    if let Option_::NetbiosOverTcpipScope(ref mut val) = self {
4958                        fidl::decode!(
4959                            fidl::encoding::BoundedString<255>,
4960                            D,
4961                            val,
4962                            decoder,
4963                            _inner_offset,
4964                            depth
4965                        )?;
4966                    } else {
4967                        unreachable!()
4968                    }
4969                }
4970                48 => {
4971                    #[allow(irrefutable_let_patterns)]
4972                    if let Option_::XWindowSystemFontServer(_) = self {
4973                        // Do nothing, read the value into the object
4974                    } else {
4975                        // Initialize `self` to the right variant
4976                        *self = Option_::XWindowSystemFontServer(
4977                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
4978                        );
4979                    }
4980                    #[allow(irrefutable_let_patterns)]
4981                    if let Option_::XWindowSystemFontServer(ref mut val) = self {
4982                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
4983                    } else {
4984                        unreachable!()
4985                    }
4986                }
4987                49 => {
4988                    #[allow(irrefutable_let_patterns)]
4989                    if let Option_::XWindowSystemDisplayManager(_) = self {
4990                        // Do nothing, read the value into the object
4991                    } else {
4992                        // Initialize `self` to the right variant
4993                        *self = Option_::XWindowSystemDisplayManager(
4994                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
4995                        );
4996                    }
4997                    #[allow(irrefutable_let_patterns)]
4998                    if let Option_::XWindowSystemDisplayManager(ref mut val) = self {
4999                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
5000                    } else {
5001                        unreachable!()
5002                    }
5003                }
5004                50 => {
5005                    #[allow(irrefutable_let_patterns)]
5006                    if let Option_::NetworkInformationServicePlusDomain(_) = self {
5007                        // Do nothing, read the value into the object
5008                    } else {
5009                        // Initialize `self` to the right variant
5010                        *self = Option_::NetworkInformationServicePlusDomain(fidl::new_empty!(
5011                            fidl::encoding::BoundedString<255>,
5012                            D
5013                        ));
5014                    }
5015                    #[allow(irrefutable_let_patterns)]
5016                    if let Option_::NetworkInformationServicePlusDomain(ref mut val) = self {
5017                        fidl::decode!(
5018                            fidl::encoding::BoundedString<255>,
5019                            D,
5020                            val,
5021                            decoder,
5022                            _inner_offset,
5023                            depth
5024                        )?;
5025                    } else {
5026                        unreachable!()
5027                    }
5028                }
5029                51 => {
5030                    #[allow(irrefutable_let_patterns)]
5031                    if let Option_::NetworkInformationServicePlusServers(_) = self {
5032                        // Do nothing, read the value into the object
5033                    } else {
5034                        // Initialize `self` to the right variant
5035                        *self = Option_::NetworkInformationServicePlusServers(
5036                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
5037                        );
5038                    }
5039                    #[allow(irrefutable_let_patterns)]
5040                    if let Option_::NetworkInformationServicePlusServers(ref mut val) = self {
5041                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
5042                    } else {
5043                        unreachable!()
5044                    }
5045                }
5046                52 => {
5047                    #[allow(irrefutable_let_patterns)]
5048                    if let Option_::MobileIpHomeAgent(_) = self {
5049                        // Do nothing, read the value into the object
5050                    } else {
5051                        // Initialize `self` to the right variant
5052                        *self = Option_::MobileIpHomeAgent(
5053                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
5054                        );
5055                    }
5056                    #[allow(irrefutable_let_patterns)]
5057                    if let Option_::MobileIpHomeAgent(ref mut val) = self {
5058                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
5059                    } else {
5060                        unreachable!()
5061                    }
5062                }
5063                53 => {
5064                    #[allow(irrefutable_let_patterns)]
5065                    if let Option_::SmtpServer(_) = self {
5066                        // Do nothing, read the value into the object
5067                    } else {
5068                        // Initialize `self` to the right variant
5069                        *self = Option_::SmtpServer(
5070                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
5071                        );
5072                    }
5073                    #[allow(irrefutable_let_patterns)]
5074                    if let Option_::SmtpServer(ref mut val) = self {
5075                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
5076                    } else {
5077                        unreachable!()
5078                    }
5079                }
5080                54 => {
5081                    #[allow(irrefutable_let_patterns)]
5082                    if let Option_::Pop3Server(_) = self {
5083                        // Do nothing, read the value into the object
5084                    } else {
5085                        // Initialize `self` to the right variant
5086                        *self = Option_::Pop3Server(
5087                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
5088                        );
5089                    }
5090                    #[allow(irrefutable_let_patterns)]
5091                    if let Option_::Pop3Server(ref mut val) = self {
5092                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
5093                    } else {
5094                        unreachable!()
5095                    }
5096                }
5097                55 => {
5098                    #[allow(irrefutable_let_patterns)]
5099                    if let Option_::NntpServer(_) = self {
5100                        // Do nothing, read the value into the object
5101                    } else {
5102                        // Initialize `self` to the right variant
5103                        *self = Option_::NntpServer(
5104                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
5105                        );
5106                    }
5107                    #[allow(irrefutable_let_patterns)]
5108                    if let Option_::NntpServer(ref mut val) = self {
5109                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
5110                    } else {
5111                        unreachable!()
5112                    }
5113                }
5114                56 => {
5115                    #[allow(irrefutable_let_patterns)]
5116                    if let Option_::DefaultWwwServer(_) = self {
5117                        // Do nothing, read the value into the object
5118                    } else {
5119                        // Initialize `self` to the right variant
5120                        *self = Option_::DefaultWwwServer(
5121                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
5122                        );
5123                    }
5124                    #[allow(irrefutable_let_patterns)]
5125                    if let Option_::DefaultWwwServer(ref mut val) = self {
5126                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
5127                    } else {
5128                        unreachable!()
5129                    }
5130                }
5131                57 => {
5132                    #[allow(irrefutable_let_patterns)]
5133                    if let Option_::DefaultFingerServer(_) = self {
5134                        // Do nothing, read the value into the object
5135                    } else {
5136                        // Initialize `self` to the right variant
5137                        *self = Option_::DefaultFingerServer(
5138                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
5139                        );
5140                    }
5141                    #[allow(irrefutable_let_patterns)]
5142                    if let Option_::DefaultFingerServer(ref mut val) = self {
5143                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
5144                    } else {
5145                        unreachable!()
5146                    }
5147                }
5148                58 => {
5149                    #[allow(irrefutable_let_patterns)]
5150                    if let Option_::DefaultIrcServer(_) = self {
5151                        // Do nothing, read the value into the object
5152                    } else {
5153                        // Initialize `self` to the right variant
5154                        *self = Option_::DefaultIrcServer(
5155                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
5156                        );
5157                    }
5158                    #[allow(irrefutable_let_patterns)]
5159                    if let Option_::DefaultIrcServer(ref mut val) = self {
5160                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
5161                    } else {
5162                        unreachable!()
5163                    }
5164                }
5165                59 => {
5166                    #[allow(irrefutable_let_patterns)]
5167                    if let Option_::StreettalkServer(_) = self {
5168                        // Do nothing, read the value into the object
5169                    } else {
5170                        // Initialize `self` to the right variant
5171                        *self = Option_::StreettalkServer(
5172                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
5173                        );
5174                    }
5175                    #[allow(irrefutable_let_patterns)]
5176                    if let Option_::StreettalkServer(ref mut val) = self {
5177                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
5178                    } else {
5179                        unreachable!()
5180                    }
5181                }
5182                60 => {
5183                    #[allow(irrefutable_let_patterns)]
5184                    if let Option_::StreettalkDirectoryAssistanceServer(_) = self {
5185                        // Do nothing, read the value into the object
5186                    } else {
5187                        // Initialize `self` to the right variant
5188                        *self = Option_::StreettalkDirectoryAssistanceServer(
5189                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D),
5190                        );
5191                    }
5192                    #[allow(irrefutable_let_patterns)]
5193                    if let Option_::StreettalkDirectoryAssistanceServer(ref mut val) = self {
5194                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 63>, D, val, decoder, _inner_offset, depth)?;
5195                    } else {
5196                        unreachable!()
5197                    }
5198                }
5199                61 => {
5200                    #[allow(irrefutable_let_patterns)]
5201                    if let Option_::OptionOverload(_) = self {
5202                        // Do nothing, read the value into the object
5203                    } else {
5204                        // Initialize `self` to the right variant
5205                        *self = Option_::OptionOverload(fidl::new_empty!(OptionOverloadValue, D));
5206                    }
5207                    #[allow(irrefutable_let_patterns)]
5208                    if let Option_::OptionOverload(ref mut val) = self {
5209                        fidl::decode!(OptionOverloadValue, D, val, decoder, _inner_offset, depth)?;
5210                    } else {
5211                        unreachable!()
5212                    }
5213                }
5214                62 => {
5215                    #[allow(irrefutable_let_patterns)]
5216                    if let Option_::TftpServerName(_) = self {
5217                        // Do nothing, read the value into the object
5218                    } else {
5219                        // Initialize `self` to the right variant
5220                        *self = Option_::TftpServerName(fidl::new_empty!(
5221                            fidl::encoding::BoundedString<255>,
5222                            D
5223                        ));
5224                    }
5225                    #[allow(irrefutable_let_patterns)]
5226                    if let Option_::TftpServerName(ref mut val) = self {
5227                        fidl::decode!(
5228                            fidl::encoding::BoundedString<255>,
5229                            D,
5230                            val,
5231                            decoder,
5232                            _inner_offset,
5233                            depth
5234                        )?;
5235                    } else {
5236                        unreachable!()
5237                    }
5238                }
5239                63 => {
5240                    #[allow(irrefutable_let_patterns)]
5241                    if let Option_::BootfileName(_) = self {
5242                        // Do nothing, read the value into the object
5243                    } else {
5244                        // Initialize `self` to the right variant
5245                        *self = Option_::BootfileName(fidl::new_empty!(
5246                            fidl::encoding::BoundedString<255>,
5247                            D
5248                        ));
5249                    }
5250                    #[allow(irrefutable_let_patterns)]
5251                    if let Option_::BootfileName(ref mut val) = self {
5252                        fidl::decode!(
5253                            fidl::encoding::BoundedString<255>,
5254                            D,
5255                            val,
5256                            decoder,
5257                            _inner_offset,
5258                            depth
5259                        )?;
5260                    } else {
5261                        unreachable!()
5262                    }
5263                }
5264                64 => {
5265                    #[allow(irrefutable_let_patterns)]
5266                    if let Option_::MaxDhcpMessageSize(_) = self {
5267                        // Do nothing, read the value into the object
5268                    } else {
5269                        // Initialize `self` to the right variant
5270                        *self = Option_::MaxDhcpMessageSize(fidl::new_empty!(u16, D));
5271                    }
5272                    #[allow(irrefutable_let_patterns)]
5273                    if let Option_::MaxDhcpMessageSize(ref mut val) = self {
5274                        fidl::decode!(u16, D, val, decoder, _inner_offset, depth)?;
5275                    } else {
5276                        unreachable!()
5277                    }
5278                }
5279                65 => {
5280                    #[allow(irrefutable_let_patterns)]
5281                    if let Option_::RenewalTimeValue(_) = self {
5282                        // Do nothing, read the value into the object
5283                    } else {
5284                        // Initialize `self` to the right variant
5285                        *self = Option_::RenewalTimeValue(fidl::new_empty!(u32, D));
5286                    }
5287                    #[allow(irrefutable_let_patterns)]
5288                    if let Option_::RenewalTimeValue(ref mut val) = self {
5289                        fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
5290                    } else {
5291                        unreachable!()
5292                    }
5293                }
5294                66 => {
5295                    #[allow(irrefutable_let_patterns)]
5296                    if let Option_::RebindingTimeValue(_) = self {
5297                        // Do nothing, read the value into the object
5298                    } else {
5299                        // Initialize `self` to the right variant
5300                        *self = Option_::RebindingTimeValue(fidl::new_empty!(u32, D));
5301                    }
5302                    #[allow(irrefutable_let_patterns)]
5303                    if let Option_::RebindingTimeValue(ref mut val) = self {
5304                        fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
5305                    } else {
5306                        unreachable!()
5307                    }
5308                }
5309                #[allow(deprecated)]
5310                ordinal => {
5311                    for _ in 0..num_handles {
5312                        decoder.drop_next_handle()?;
5313                    }
5314                    *self = Option_::__SourceBreaking { unknown_ordinal: ordinal };
5315                }
5316            }
5317            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
5318                return Err(fidl::Error::InvalidNumBytesInEnvelope);
5319            }
5320            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5321                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5322            }
5323            Ok(())
5324        }
5325    }
5326
5327    impl fidl::encoding::ValueTypeMarker for Parameter {
5328        type Borrowed<'a> = &'a Self;
5329        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5330            value
5331        }
5332    }
5333
5334    unsafe impl fidl::encoding::TypeMarker for Parameter {
5335        type Owned = Self;
5336
5337        #[inline(always)]
5338        fn inline_align(_context: fidl::encoding::Context) -> usize {
5339            8
5340        }
5341
5342        #[inline(always)]
5343        fn inline_size(_context: fidl::encoding::Context) -> usize {
5344            16
5345        }
5346    }
5347
5348    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Parameter, D>
5349        for &Parameter
5350    {
5351        #[inline]
5352        unsafe fn encode(
5353            self,
5354            encoder: &mut fidl::encoding::Encoder<'_, D>,
5355            offset: usize,
5356            _depth: fidl::encoding::Depth,
5357        ) -> fidl::Result<()> {
5358            encoder.debug_check_bounds::<Parameter>(offset);
5359            encoder.write_num::<u64>(self.ordinal(), offset);
5360            match self {
5361            Parameter::IpAddrs(ref val) => {
5362                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 256>, D>(
5363                    <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 256> as fidl::encoding::ValueTypeMarker>::borrow(val),
5364                    encoder, offset + 8, _depth
5365                )
5366            }
5367            Parameter::AddressPool(ref val) => {
5368                fidl::encoding::encode_in_envelope::<AddressPool, D>(
5369                    <AddressPool as fidl::encoding::ValueTypeMarker>::borrow(val),
5370                    encoder, offset + 8, _depth
5371                )
5372            }
5373            Parameter::Lease(ref val) => {
5374                fidl::encoding::encode_in_envelope::<LeaseLength, D>(
5375                    <LeaseLength as fidl::encoding::ValueTypeMarker>::borrow(val),
5376                    encoder, offset + 8, _depth
5377                )
5378            }
5379            Parameter::PermittedMacs(ref val) => {
5380                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl_fuchsia_net_common::MacAddress, 256>, D>(
5381                    <fidl::encoding::Vector<fidl_fuchsia_net_common::MacAddress, 256> as fidl::encoding::ValueTypeMarker>::borrow(val),
5382                    encoder, offset + 8, _depth
5383                )
5384            }
5385            Parameter::StaticallyAssignedAddrs(ref val) => {
5386                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<StaticAssignment, 256>, D>(
5387                    <fidl::encoding::Vector<StaticAssignment, 256> as fidl::encoding::ValueTypeMarker>::borrow(val),
5388                    encoder, offset + 8, _depth
5389                )
5390            }
5391            Parameter::ArpProbe(ref val) => {
5392                fidl::encoding::encode_in_envelope::<bool, D>(
5393                    <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
5394                    encoder, offset + 8, _depth
5395                )
5396            }
5397            Parameter::BoundDeviceNames(ref val) => {
5398                fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl::encoding::BoundedString<256>, 256>, D>(
5399                    <fidl::encoding::Vector<fidl::encoding::BoundedString<256>, 256> as fidl::encoding::ValueTypeMarker>::borrow(val),
5400                    encoder, offset + 8, _depth
5401                )
5402            }
5403            Parameter::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
5404        }
5405        }
5406    }
5407
5408    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Parameter {
5409        #[inline(always)]
5410        fn new_empty() -> Self {
5411            Self::__SourceBreaking { unknown_ordinal: 0 }
5412        }
5413
5414        #[inline]
5415        unsafe fn decode(
5416            &mut self,
5417            decoder: &mut fidl::encoding::Decoder<'_, D>,
5418            offset: usize,
5419            mut depth: fidl::encoding::Depth,
5420        ) -> fidl::Result<()> {
5421            decoder.debug_check_bounds::<Self>(offset);
5422            #[allow(unused_variables)]
5423            let next_out_of_line = decoder.next_out_of_line();
5424            let handles_before = decoder.remaining_handles();
5425            let (ordinal, inlined, num_bytes, num_handles) =
5426                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
5427
5428            let member_inline_size = match ordinal {
5429            1 => <fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 256> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5430            2 => <AddressPool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5431            3 => <LeaseLength as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5432            4 => <fidl::encoding::Vector<fidl_fuchsia_net_common::MacAddress, 256> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5433            5 => <fidl::encoding::Vector<StaticAssignment, 256> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5434            6 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5435            7 => <fidl::encoding::Vector<fidl::encoding::BoundedString<256>, 256> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5436            0 => return Err(fidl::Error::UnknownUnionTag),
5437            _ => num_bytes as usize,
5438        };
5439
5440            if inlined != (member_inline_size <= 4) {
5441                return Err(fidl::Error::InvalidInlineBitInEnvelope);
5442            }
5443            let _inner_offset;
5444            if inlined {
5445                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
5446                _inner_offset = offset + 8;
5447            } else {
5448                depth.increment()?;
5449                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5450            }
5451            match ordinal {
5452                1 => {
5453                    #[allow(irrefutable_let_patterns)]
5454                    if let Parameter::IpAddrs(_) = self {
5455                        // Do nothing, read the value into the object
5456                    } else {
5457                        // Initialize `self` to the right variant
5458                        *self = Parameter::IpAddrs(
5459                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 256>, D),
5460                        );
5461                    }
5462                    #[allow(irrefutable_let_patterns)]
5463                    if let Parameter::IpAddrs(ref mut val) = self {
5464                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv4Address, 256>, D, val, decoder, _inner_offset, depth)?;
5465                    } else {
5466                        unreachable!()
5467                    }
5468                }
5469                2 => {
5470                    #[allow(irrefutable_let_patterns)]
5471                    if let Parameter::AddressPool(_) = self {
5472                        // Do nothing, read the value into the object
5473                    } else {
5474                        // Initialize `self` to the right variant
5475                        *self = Parameter::AddressPool(fidl::new_empty!(AddressPool, D));
5476                    }
5477                    #[allow(irrefutable_let_patterns)]
5478                    if let Parameter::AddressPool(ref mut val) = self {
5479                        fidl::decode!(AddressPool, D, val, decoder, _inner_offset, depth)?;
5480                    } else {
5481                        unreachable!()
5482                    }
5483                }
5484                3 => {
5485                    #[allow(irrefutable_let_patterns)]
5486                    if let Parameter::Lease(_) = self {
5487                        // Do nothing, read the value into the object
5488                    } else {
5489                        // Initialize `self` to the right variant
5490                        *self = Parameter::Lease(fidl::new_empty!(LeaseLength, D));
5491                    }
5492                    #[allow(irrefutable_let_patterns)]
5493                    if let Parameter::Lease(ref mut val) = self {
5494                        fidl::decode!(LeaseLength, D, val, decoder, _inner_offset, depth)?;
5495                    } else {
5496                        unreachable!()
5497                    }
5498                }
5499                4 => {
5500                    #[allow(irrefutable_let_patterns)]
5501                    if let Parameter::PermittedMacs(_) = self {
5502                        // Do nothing, read the value into the object
5503                    } else {
5504                        // Initialize `self` to the right variant
5505                        *self = Parameter::PermittedMacs(
5506                            fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::MacAddress, 256>, D),
5507                        );
5508                    }
5509                    #[allow(irrefutable_let_patterns)]
5510                    if let Parameter::PermittedMacs(ref mut val) = self {
5511                        fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::MacAddress, 256>, D, val, decoder, _inner_offset, depth)?;
5512                    } else {
5513                        unreachable!()
5514                    }
5515                }
5516                5 => {
5517                    #[allow(irrefutable_let_patterns)]
5518                    if let Parameter::StaticallyAssignedAddrs(_) = self {
5519                        // Do nothing, read the value into the object
5520                    } else {
5521                        // Initialize `self` to the right variant
5522                        *self = Parameter::StaticallyAssignedAddrs(
5523                            fidl::new_empty!(fidl::encoding::Vector<StaticAssignment, 256>, D),
5524                        );
5525                    }
5526                    #[allow(irrefutable_let_patterns)]
5527                    if let Parameter::StaticallyAssignedAddrs(ref mut val) = self {
5528                        fidl::decode!(fidl::encoding::Vector<StaticAssignment, 256>, D, val, decoder, _inner_offset, depth)?;
5529                    } else {
5530                        unreachable!()
5531                    }
5532                }
5533                6 => {
5534                    #[allow(irrefutable_let_patterns)]
5535                    if let Parameter::ArpProbe(_) = self {
5536                        // Do nothing, read the value into the object
5537                    } else {
5538                        // Initialize `self` to the right variant
5539                        *self = Parameter::ArpProbe(fidl::new_empty!(bool, D));
5540                    }
5541                    #[allow(irrefutable_let_patterns)]
5542                    if let Parameter::ArpProbe(ref mut val) = self {
5543                        fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
5544                    } else {
5545                        unreachable!()
5546                    }
5547                }
5548                7 => {
5549                    #[allow(irrefutable_let_patterns)]
5550                    if let Parameter::BoundDeviceNames(_) = self {
5551                        // Do nothing, read the value into the object
5552                    } else {
5553                        // Initialize `self` to the right variant
5554                        *self = Parameter::BoundDeviceNames(fidl::new_empty!(
5555                            fidl::encoding::Vector<fidl::encoding::BoundedString<256>, 256>,
5556                            D
5557                        ));
5558                    }
5559                    #[allow(irrefutable_let_patterns)]
5560                    if let Parameter::BoundDeviceNames(ref mut val) = self {
5561                        fidl::decode!(
5562                            fidl::encoding::Vector<fidl::encoding::BoundedString<256>, 256>,
5563                            D,
5564                            val,
5565                            decoder,
5566                            _inner_offset,
5567                            depth
5568                        )?;
5569                    } else {
5570                        unreachable!()
5571                    }
5572                }
5573                #[allow(deprecated)]
5574                ordinal => {
5575                    for _ in 0..num_handles {
5576                        decoder.drop_next_handle()?;
5577                    }
5578                    *self = Parameter::__SourceBreaking { unknown_ordinal: ordinal };
5579                }
5580            }
5581            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
5582                return Err(fidl::Error::InvalidNumBytesInEnvelope);
5583            }
5584            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5585                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5586            }
5587            Ok(())
5588        }
5589    }
5590}