use yaserde::{MaybeString, RawXml}; use yaserde_derive::{YaDeserialize, YaSerialize}; // This is the top-level struct that represents the entire element. #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] pub struct DnsMasq { #[yaserde(attribute = true)] pub version: String, #[yaserde(attribute = true)] pub persisted_at: Option, pub enable: u8, pub regdhcp: u8, pub regdhcpstatic: u8, pub dhcpfirst: u8, pub strict_order: u8, pub domain_needed: u8, pub no_private_reverse: u8, pub no_resolv: Option, pub log_queries: u8, pub no_hosts: u8, pub strictbind: u8, pub dnssec: u8, pub regdhcpdomain: MaybeString, pub interface: Option, pub port: Option, pub dns_forward_max: MaybeString, pub cache_size: MaybeString, pub local_ttl: MaybeString, pub add_mac: Option, pub add_subnet: Option, pub strip_subnet: Option, pub no_ident: Option, pub dhcp: Option, pub dhcp_ranges: Vec, pub dhcp_options: Vec, pub dhcp_boot: Vec, pub dhcp_tags: Vec, pub hosts: Vec, } #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize, Clone)] #[yaserde(rename = "hosts")] pub struct DnsmasqHost { #[yaserde(attribute = true)] pub uuid: String, pub host: String, pub domain: MaybeString, pub local: MaybeString, pub ip: MaybeString, pub cnames: MaybeString, pub client_id: MaybeString, pub hwaddr: MaybeString, pub lease_time: MaybeString, pub ignore: Option, pub set_tag: MaybeString, pub descr: MaybeString, pub comments: MaybeString, pub aliases: MaybeString, } // Represents the element and its nested fields. #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde(rename = "dhcp")] pub struct Dhcp { pub no_interface: MaybeString, pub fqdn: u8, pub domain: MaybeString, pub local: Option, pub lease_max: MaybeString, pub authoritative: u8, pub default_fw_rules: u8, pub reply_delay: MaybeString, pub enable_ra: u8, pub nosync: u8, } // Represents a single element. #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde(rename = "dhcp_ranges")] pub struct DhcpRange { #[yaserde(attribute = true)] pub uuid: Option, pub interface: Option, pub set_tag: Option, pub start_addr: Option, pub end_addr: Option, pub subnet_mask: Option, pub constructor: Option, pub mode: Option, pub prefix_len: Option, pub lease_time: Option, pub domain_type: Option, pub domain: Option, pub nosync: Option, pub ra_mode: Option, pub ra_priority: Option, pub ra_mtu: Option, pub ra_interval: Option, pub ra_router_lifetime: Option, pub description: Option, } // Represents a single element. #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde(rename = "dhcp_boot")] pub struct DhcpBoot { #[yaserde(attribute = true)] pub uuid: String, pub interface: MaybeString, pub tag: MaybeString, pub filename: Option, pub servername: String, pub address: String, pub description: Option, } // Represents a single element. #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)] #[yaserde(rename = "dhcp_options")] pub struct DhcpOptions { #[yaserde(attribute = true)] pub uuid: String, #[yaserde(rename = "type")] pub _type: String, pub option: MaybeString, pub option6: MaybeString, pub interface: MaybeString, pub tag: MaybeString, pub set_tag: MaybeString, pub value: String, pub force: Option, pub description: MaybeString, }