All checks were successful
Run Check Script / check (pull_request) Successful in 59s
Co-authored-by: Jean-Gabriel Gill-Couture <jeangabriel.gc@gmail.com> Co-authored-by: Ian Letourneau <ian@noma.to> Reviewed-on: https://git.nationtech.io/NationTech/harmony/pulls/130 Reviewed-by: Ian Letourneau <ian@noma.to> Co-authored-by: Jean-Gabriel Gill-Couture <jg@nationtech.io> Co-committed-by: Jean-Gabriel Gill-Couture <jg@nationtech.io>
135 lines
4.0 KiB
Rust
135 lines
4.0 KiB
Rust
use yaserde::{MaybeString, RawXml};
|
|
use yaserde_derive::{YaDeserialize, YaSerialize};
|
|
|
|
// This is the top-level struct that represents the entire <dnsmasq> element.
|
|
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
|
pub struct DnsMasq {
|
|
#[yaserde(attribute = true)]
|
|
pub version: String,
|
|
#[yaserde(attribute = true)]
|
|
pub persisted_at: Option<String>,
|
|
|
|
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<u8>,
|
|
pub log_queries: u8,
|
|
pub no_hosts: u8,
|
|
pub strictbind: u8,
|
|
pub dnssec: u8,
|
|
pub regdhcpdomain: MaybeString,
|
|
pub interface: Option<String>,
|
|
pub port: Option<u32>,
|
|
pub dns_forward_max: MaybeString,
|
|
pub cache_size: MaybeString,
|
|
pub local_ttl: MaybeString,
|
|
pub add_mac: Option<MaybeString>,
|
|
pub add_subnet: Option<u8>,
|
|
pub strip_subnet: Option<u8>,
|
|
pub no_ident: Option<u8>,
|
|
pub dhcp: Option<Dhcp>,
|
|
pub dhcp_ranges: Vec<DhcpRange>,
|
|
pub dhcp_options: Vec<DhcpOptions>,
|
|
pub dhcp_boot: Vec<DhcpBoot>,
|
|
pub dhcp_tags: Vec<RawXml>,
|
|
pub hosts: Vec<DnsmasqHost>,
|
|
}
|
|
|
|
#[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<u8>,
|
|
pub set_tag: MaybeString,
|
|
pub descr: MaybeString,
|
|
pub comments: MaybeString,
|
|
pub aliases: MaybeString,
|
|
}
|
|
|
|
// Represents the <dhcp> 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<MaybeString>,
|
|
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 <dhcp_ranges> element.
|
|
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
|
#[yaserde(rename = "dhcp_ranges")]
|
|
pub struct DhcpRange {
|
|
#[yaserde(attribute = true)]
|
|
pub uuid: Option<String>,
|
|
pub interface: Option<String>,
|
|
pub set_tag: Option<MaybeString>,
|
|
pub start_addr: Option<String>,
|
|
pub end_addr: Option<String>,
|
|
pub subnet_mask: Option<MaybeString>,
|
|
pub constructor: Option<MaybeString>,
|
|
pub mode: Option<MaybeString>,
|
|
pub prefix_len: Option<MaybeString>,
|
|
pub lease_time: Option<MaybeString>,
|
|
pub domain_type: Option<String>,
|
|
pub domain: Option<MaybeString>,
|
|
pub nosync: Option<u8>,
|
|
pub ra_mode: Option<MaybeString>,
|
|
pub ra_priority: Option<MaybeString>,
|
|
pub ra_mtu: Option<MaybeString>,
|
|
pub ra_interval: Option<MaybeString>,
|
|
pub ra_router_lifetime: Option<MaybeString>,
|
|
pub description: Option<MaybeString>,
|
|
}
|
|
|
|
// Represents a single <dhcp_boot> 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<String>,
|
|
pub servername: String,
|
|
pub address: String,
|
|
pub description: Option<String>,
|
|
}
|
|
|
|
// Represents a single <dhcp_options> 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<u8>,
|
|
pub description: MaybeString,
|
|
}
|