[INFO] cloning repository https://github.com/sethml/dnsmasq-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sethml/dnsmasq-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsethml%2Fdnsmasq-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsethml%2Fdnsmasq-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 888ed9b93701eb97a74c3034f7bae22a8c3d7f36
[INFO] testing sethml/dnsmasq-rs against 1.94.0 for beta-1.95-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsethml%2Fdnsmasq-rs" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-7-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/sethml/dnsmasq-rs
[INFO] finished tweaking git repo https://github.com/sethml/dnsmasq-rs
[INFO] tweaked toml for git repo https://github.com/sethml/dnsmasq-rs written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/sethml/dnsmasq-rs on toolchain 1.94.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.94.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/sethml/dnsmasq-rs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.94.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded serial_test v3.3.1
[INFO] [stderr]   Downloaded lexopt v0.3.1
[INFO] [stderr]   Downloaded serial_test_derive v3.3.1
[INFO] [stderr]   Downloaded signal-hook-async-std v0.2.2
[INFO] [stderr]   Downloaded cc v1.2.54
[INFO] [stderr]   Downloaded async-net v2.0.0
[INFO] [stderr]   Downloaded smol v2.0.2
[INFO] [stderr]   Downloaded hickory-proto v0.25.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2f263e311aad07183a34fe377dd38e34e670dc4e96b6da6fd2f2602760163a29
[INFO] running `Command { std: "docker" "start" "-a" "2f263e311aad07183a34fe377dd38e34e670dc4e96b6da6fd2f2602760163a29", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2f263e311aad07183a34fe377dd38e34e670dc4e96b6da6fd2f2602760163a29", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2f263e311aad07183a34fe377dd38e34e670dc4e96b6da6fd2f2602760163a29", kill_on_drop: false }`
[INFO] [stdout] 2f263e311aad07183a34fe377dd38e34e670dc4e96b6da6fd2f2602760163a29
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] fdfbee7564f2a129b5c9dbe43dc5ba923c235aa60cd4848b4e2b8bfdd4091b9b
[INFO] running `Command { std: "docker" "start" "-a" "fdfbee7564f2a129b5c9dbe43dc5ba923c235aa60cd4848b4e2b8bfdd4091b9b", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling portable-atomic v1.13.0
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling critical-section v1.2.0
[INFO] [stderr]    Compiling polling v2.8.0
[INFO] [stderr]    Compiling rustix v0.37.28
[INFO] [stderr]    Compiling async-io v1.13.0
[INFO] [stderr]    Compiling fastrand v1.9.0
[INFO] [stderr]    Compiling event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling io-lifetimes v1.0.11
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling waker-fn v1.2.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling event-listener v2.5.3
[INFO] [stderr]    Compiling socket2 v0.4.10
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling async-channel v2.5.0
[INFO] [stderr]    Compiling async-lock v3.4.2
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling async-lock v2.8.0
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling futures-lite v1.13.0
[INFO] [stderr]    Compiling blocking v1.6.2
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling ipnet v2.11.0
[INFO] [stderr]    Compiling data-encoding v2.10.0
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling lexopt v0.3.1
[INFO] [stderr]    Compiling async-fs v2.2.0
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling signal-hook-async-std v0.2.2
[INFO] [stderr]    Compiling polling v3.11.0
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]    Compiling async-signal v0.2.13
[INFO] [stderr]    Compiling async-net v2.0.0
[INFO] [stderr]    Compiling async-process v2.5.0
[INFO] [stderr]    Compiling smol v2.0.2
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling enum-as-inner v0.6.1
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling hickory-proto v0.25.2
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling dnsmasq-rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 41.75s
[INFO] running `Command { std: "docker" "inspect" "fdfbee7564f2a129b5c9dbe43dc5ba923c235aa60cd4848b4e2b8bfdd4091b9b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fdfbee7564f2a129b5c9dbe43dc5ba923c235aa60cd4848b4e2b8bfdd4091b9b", kill_on_drop: false }`
[INFO] [stdout] fdfbee7564f2a129b5c9dbe43dc5ba923c235aa60cd4848b4e2b8bfdd4091b9b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 60dc3b1b57cc0aa3a7a518110e00ad0ebf6469df6170edc8e4cb8d88976f4995
[INFO] running `Command { std: "docker" "start" "-a" "60dc3b1b57cc0aa3a7a518110e00ad0ebf6469df6170edc8e4cb8d88976f4995", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling sdd v3.0.10
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling serial_test_derive v3.3.1
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling scc v2.4.0
[INFO] [stderr]    Compiling serial_test v3.3.1
[INFO] [stderr]    Compiling polling v3.11.0
[INFO] [stderr]    Compiling tempfile v3.24.0
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]    Compiling async-signal v0.2.13
[INFO] [stderr]    Compiling async-net v2.0.0
[INFO] [stderr]    Compiling async-process v2.5.0
[INFO] [stderr]    Compiling smol v2.0.2
[INFO] [stderr]    Compiling dnsmasq-rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serial_test::serial`
[INFO] [stdout]   --> tests/dhcp_dns_integration.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use serial_test::serial;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]   --> tests/dhcp_dns_integration.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::io::Write;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `common::dhcp::*`
[INFO] [stdout]   --> tests/dhcp_tagging.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use common::dhcp::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> tests/dhcp_tagging.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> tests/dhcp_vendor_options.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> tests/dhcp_multi_subnet.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `type_a`, `qtype`, and `recursion_desired` are never used
[INFO] [stdout]    --> tests/common/mod.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl DnsQueryBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn type_a(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn recursion_desired(mut self, rd: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_desired`, `recursion_available`, `authority_count`, `additional_count`, and `raw` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_refused`, `raw`, and `extract_ipv4_answers` are never used
[INFO] [stdout]    --> tests/common/mod.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn is_refused(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn extract_ipv4_answers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsImplementation` is never used
[INFO] [stdout]   --> tests/common/dns.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum DnsImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/dns.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn new_with_impl(implementation: DnsImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn run_test(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     fn generate_start_function(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn generate_command(&self, has_config: bool, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STANDARD_HOSTS` is never used
[INFO] [stdout]    --> tests/common/dns.rs:395:11
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub const STANDARD_HOSTS: &str = r#"
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DhcpImplementation` is never used
[INFO] [stdout]   --> tests/common/test_env.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum DhcpImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DhcpTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/test_env.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct DhcpTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn new_with_impl(implementation: DhcpImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     fn new_with_ips_and_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn run_test(&self, extra_dnsmasq_args: &str, test_script: &str) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn run_test_with_setup(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     fn generate_network_setup(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     fn generate_dnsmasq_command(&self, dnsmasq_config: Option<&str>, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn implementation(&self) -> DhcpImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:376:8
[INFO] [stdout]     |
[INFO] [stdout] 376 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_basic` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:423:12
[INFO] [stdout]     |
[INFO] [stdout] 423 |     pub fn udhcpc_basic() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn udhcpc_with_hostname(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_mac` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:486:12
[INFO] [stdout]     |
[INFO] [stdout] 486 |     pub fn udhcpc_with_mac(mac: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:516:12
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:603:12
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option_list` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:617:12
[INFO] [stdout]     |
[INFO] [stdout] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_dhcp_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:624:12
[INFO] [stdout]     |
[INFO] [stdout] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_offered_ip` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:676:12
[INFO] [stdout]     |
[INFO] [stdout] 676 |     pub fn extract_offered_ip(output: &str) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_lease_file` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 |     pub fn extract_lease_file(output: &str) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `type_a`, `qtype`, and `recursion_desired` are never used
[INFO] [stdout]    --> tests/common/mod.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl DnsQueryBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn type_a(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn recursion_desired(mut self, rd: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_desired`, `recursion_available`, `authority_count`, `additional_count`, and `raw` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_refused`, `raw`, and `extract_ipv4_answers` are never used
[INFO] [stdout]    --> tests/common/mod.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn is_refused(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn extract_ipv4_answers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsImplementation` is never used
[INFO] [stdout]   --> tests/common/dns.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum DnsImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/dns.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn new_with_impl(implementation: DnsImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn run_test(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     fn generate_start_function(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn generate_command(&self, has_config: bool, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STANDARD_HOSTS` is never used
[INFO] [stdout]    --> tests/common/dns.rs:395:11
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub const STANDARD_HOSTS: &str = r#"
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DhcpImplementation` is never used
[INFO] [stdout]   --> tests/common/test_env.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum DhcpImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DhcpTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/test_env.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct DhcpTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn new_with_impl(implementation: DhcpImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     fn new_with_ips_and_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn run_test(&self, extra_dnsmasq_args: &str, test_script: &str) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn run_test_with_setup(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     fn generate_network_setup(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     fn generate_dnsmasq_command(&self, dnsmasq_config: Option<&str>, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn implementation(&self) -> DhcpImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:376:8
[INFO] [stdout]     |
[INFO] [stdout] 376 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_basic` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:423:12
[INFO] [stdout]     |
[INFO] [stdout] 423 |     pub fn udhcpc_basic() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn udhcpc_with_hostname(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_mac` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:486:12
[INFO] [stdout]     |
[INFO] [stdout] 486 |     pub fn udhcpc_with_mac(mac: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:516:12
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:603:12
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option_list` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:617:12
[INFO] [stdout]     |
[INFO] [stdout] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_dhcp_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:624:12
[INFO] [stdout]     |
[INFO] [stdout] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_offered_ip` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:676:12
[INFO] [stdout]     |
[INFO] [stdout] 676 |     pub fn extract_offered_ip(output: &str) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_lease_file` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 |     pub fn extract_lease_file(output: &str) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `START_DNSMASQ_FN` is never used
[INFO] [stdout]   --> tests/common/mod.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const START_DNSMASQ_FN: &str = r#"
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `type_a`, `qtype`, and `recursion_desired` are never used
[INFO] [stdout]    --> tests/common/mod.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl DnsQueryBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn type_a(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn recursion_desired(mut self, rd: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_desired`, `recursion_available`, `authority_count`, `additional_count`, and `raw` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_refused`, `raw`, and `extract_ipv4_answers` are never used
[INFO] [stdout]    --> tests/common/mod.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn is_refused(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn extract_ipv4_answers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `unique_id` is never read
[INFO] [stdout]   --> tests/common/dns.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     unique_id: u32,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_dnsmasq_rs`, and `implementation` are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DhcpImplementation` is never used
[INFO] [stdout]   --> tests/common/test_env.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum DhcpImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DhcpTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/test_env.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct DhcpTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn new_with_impl(implementation: DhcpImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     fn new_with_ips_and_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn run_test(&self, extra_dnsmasq_args: &str, test_script: &str) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn run_test_with_setup(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     fn generate_network_setup(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     fn generate_dnsmasq_command(&self, dnsmasq_config: Option<&str>, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn implementation(&self) -> DhcpImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:376:8
[INFO] [stdout]     |
[INFO] [stdout] 376 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_basic` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:423:12
[INFO] [stdout]     |
[INFO] [stdout] 423 |     pub fn udhcpc_basic() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn udhcpc_with_hostname(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_mac` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:486:12
[INFO] [stdout]     |
[INFO] [stdout] 486 |     pub fn udhcpc_with_mac(mac: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:516:12
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:603:12
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option_list` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:617:12
[INFO] [stdout]     |
[INFO] [stdout] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_dhcp_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:624:12
[INFO] [stdout]     |
[INFO] [stdout] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_offered_ip` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:676:12
[INFO] [stdout]     |
[INFO] [stdout] 676 |     pub fn extract_offered_ip(output: &str) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_lease_file` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 |     pub fn extract_lease_file(output: &str) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `type_a`, `qtype`, and `recursion_desired` are never used
[INFO] [stdout]    --> tests/common/mod.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl DnsQueryBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn type_a(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn recursion_desired(mut self, rd: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_desired`, `recursion_available`, `authority_count`, `additional_count`, and `raw` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_refused`, `raw`, and `extract_ipv4_answers` are never used
[INFO] [stdout]    --> tests/common/mod.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn is_refused(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn extract_ipv4_answers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsImplementation` is never used
[INFO] [stdout]   --> tests/common/dns.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum DnsImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/dns.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn new_with_impl(implementation: DnsImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn run_test(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     fn generate_start_function(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn generate_command(&self, has_config: bool, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STANDARD_HOSTS` is never used
[INFO] [stdout]    --> tests/common/dns.rs:395:11
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub const STANDARD_HOSTS: &str = r#"
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_dual_subnet`, `run_test_with_setup`, and `run_test_with_config` are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn run_test_with_setup(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_mac` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:486:12
[INFO] [stdout]     |
[INFO] [stdout] 486 |     pub fn udhcpc_with_mac(mac: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:516:12
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:603:12
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option_list` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:617:12
[INFO] [stdout]     |
[INFO] [stdout] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_dhcp_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:624:12
[INFO] [stdout]     |
[INFO] [stdout] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `START_DNSMASQ_FN` is never used
[INFO] [stdout]   --> tests/common/mod.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const START_DNSMASQ_FN: &str = r#"
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_available`, `authority_count`, and `additional_count` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `raw` is never used
[INFO] [stdout]    --> tests/common/mod.rs:300:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_fixture` is never used
[INFO] [stdout]    --> tests/common/mod.rs:485:8
[INFO] [stdout]     |
[INFO] [stdout] 485 | pub fn save_fixture(filename: &str, content: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsImplementation` is never used
[INFO] [stdout]   --> tests/common/dns.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum DnsImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/dns.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn new_with_impl(implementation: DnsImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn run_test(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     fn generate_start_function(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn generate_command(&self, has_config: bool, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STANDARD_HOSTS` is never used
[INFO] [stdout]    --> tests/common/dns.rs:395:11
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub const STANDARD_HOSTS: &str = r#"
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DhcpImplementation` is never used
[INFO] [stdout]   --> tests/common/test_env.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum DhcpImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DhcpTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/test_env.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct DhcpTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn new_with_impl(implementation: DhcpImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     fn new_with_ips_and_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn run_test(&self, extra_dnsmasq_args: &str, test_script: &str) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn run_test_with_setup(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     fn generate_network_setup(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     fn generate_dnsmasq_command(&self, dnsmasq_config: Option<&str>, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn implementation(&self) -> DhcpImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:376:8
[INFO] [stdout]     |
[INFO] [stdout] 376 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_basic` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:423:12
[INFO] [stdout]     |
[INFO] [stdout] 423 |     pub fn udhcpc_basic() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn udhcpc_with_hostname(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_mac` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:486:12
[INFO] [stdout]     |
[INFO] [stdout] 486 |     pub fn udhcpc_with_mac(mac: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:516:12
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:603:12
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option_list` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:617:12
[INFO] [stdout]     |
[INFO] [stdout] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_dhcp_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:624:12
[INFO] [stdout]     |
[INFO] [stdout] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_offered_ip` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:676:12
[INFO] [stdout]     |
[INFO] [stdout] 676 |     pub fn extract_offered_ip(output: &str) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_lease_file` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 |     pub fn extract_lease_file(output: &str) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `type_a`, `qtype`, and `recursion_desired` are never used
[INFO] [stdout]    --> tests/common/mod.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl DnsQueryBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn type_a(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn recursion_desired(mut self, rd: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_desired`, `recursion_available`, `authority_count`, `additional_count`, and `raw` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_refused`, `raw`, and `extract_ipv4_answers` are never used
[INFO] [stdout]    --> tests/common/mod.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn is_refused(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn extract_ipv4_answers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsImplementation` is never used
[INFO] [stdout]   --> tests/common/dns.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum DnsImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/dns.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn new_with_impl(implementation: DnsImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn run_test(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     fn generate_start_function(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn generate_command(&self, has_config: bool, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STANDARD_HOSTS` is never used
[INFO] [stdout]    --> tests/common/dns.rs:395:11
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub const STANDARD_HOSTS: &str = r#"
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `implementation` are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn implementation(&self) -> DhcpImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_basic` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:423:12
[INFO] [stdout]     |
[INFO] [stdout] 423 |     pub fn udhcpc_basic() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn udhcpc_with_hostname(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:516:12
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:603:12
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option_list` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:617:12
[INFO] [stdout]     |
[INFO] [stdout] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_dhcp_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:624:12
[INFO] [stdout]     |
[INFO] [stdout] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_offered_ip` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:676:12
[INFO] [stdout]     |
[INFO] [stdout] 676 |     pub fn extract_offered_ip(output: &str) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_lease_file` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 |     pub fn extract_lease_file(output: &str) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `type_a`, `qtype`, and `recursion_desired` are never used
[INFO] [stdout]    --> tests/common/mod.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl DnsQueryBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn type_a(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn recursion_desired(mut self, rd: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_desired`, `recursion_available`, `authority_count`, `additional_count`, and `raw` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_refused`, `raw`, and `extract_ipv4_answers` are never used
[INFO] [stdout]    --> tests/common/mod.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn is_refused(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn extract_ipv4_answers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsImplementation` is never used
[INFO] [stdout]   --> tests/common/dns.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum DnsImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/dns.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn new_with_impl(implementation: DnsImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn run_test(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     fn generate_start_function(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn generate_command(&self, has_config: bool, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STANDARD_HOSTS` is never used
[INFO] [stdout]    --> tests/common/dns.rs:395:11
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub const STANDARD_HOSTS: &str = r#"
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DhcpImplementation` is never used
[INFO] [stdout]   --> tests/common/test_env.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum DhcpImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DhcpTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/test_env.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct DhcpTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn new_with_impl(implementation: DhcpImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     fn new_with_ips_and_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn run_test(&self, extra_dnsmasq_args: &str, test_script: &str) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn run_test_with_setup(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     fn generate_network_setup(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     fn generate_dnsmasq_command(&self, dnsmasq_config: Option<&str>, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn implementation(&self) -> DhcpImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:376:8
[INFO] [stdout]     |
[INFO] [stdout] 376 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_basic` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:423:12
[INFO] [stdout]     |
[INFO] [stdout] 423 |     pub fn udhcpc_basic() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn udhcpc_with_hostname(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_mac` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:486:12
[INFO] [stdout]     |
[INFO] [stdout] 486 |     pub fn udhcpc_with_mac(mac: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:516:12
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:603:12
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option_list` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:617:12
[INFO] [stdout]     |
[INFO] [stdout] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_dhcp_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:624:12
[INFO] [stdout]     |
[INFO] [stdout] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_offered_ip` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:676:12
[INFO] [stdout]     |
[INFO] [stdout] 676 |     pub fn extract_offered_ip(output: &str) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_lease_file` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 |     pub fn extract_lease_file(output: &str) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `type_a`, `qtype`, and `recursion_desired` are never used
[INFO] [stdout]    --> tests/common/mod.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl DnsQueryBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn type_a(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn recursion_desired(mut self, rd: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_desired`, `recursion_available`, `authority_count`, `additional_count`, and `raw` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_refused`, `raw`, and `extract_ipv4_answers` are never used
[INFO] [stdout]    --> tests/common/mod.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn is_refused(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn extract_ipv4_answers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsImplementation` is never used
[INFO] [stdout]   --> tests/common/dns.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum DnsImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/dns.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn new_with_impl(implementation: DnsImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn run_test(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     fn generate_start_function(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn generate_command(&self, has_config: bool, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STANDARD_HOSTS` is never used
[INFO] [stdout]    --> tests/common/dns.rs:395:11
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub const STANDARD_HOSTS: &str = r#"
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DhcpImplementation` is never used
[INFO] [stdout]   --> tests/common/test_env.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum DhcpImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DhcpTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/test_env.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct DhcpTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn new_with_impl(implementation: DhcpImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     fn new_with_ips_and_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn run_test(&self, extra_dnsmasq_args: &str, test_script: &str) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn run_test_with_setup(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     fn generate_network_setup(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     fn generate_dnsmasq_command(&self, dnsmasq_config: Option<&str>, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn implementation(&self) -> DhcpImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:376:8
[INFO] [stdout]     |
[INFO] [stdout] 376 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_basic` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:423:12
[INFO] [stdout]     |
[INFO] [stdout] 423 |     pub fn udhcpc_basic() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn udhcpc_with_hostname(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_mac` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:486:12
[INFO] [stdout]     |
[INFO] [stdout] 486 |     pub fn udhcpc_with_mac(mac: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:516:12
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:603:12
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option_list` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:617:12
[INFO] [stdout]     |
[INFO] [stdout] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_dhcp_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:624:12
[INFO] [stdout]     |
[INFO] [stdout] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_offered_ip` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:676:12
[INFO] [stdout]     |
[INFO] [stdout] 676 |     pub fn extract_offered_ip(output: &str) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_lease_file` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 |     pub fn extract_lease_file(output: &str) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `START_DNSMASQ_FN` is never used
[INFO] [stdout]   --> tests/common/mod.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const START_DNSMASQ_FN: &str = r#"
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `type_a`, `qtype`, and `recursion_desired` are never used
[INFO] [stdout]    --> tests/common/mod.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl DnsQueryBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn type_a(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn recursion_desired(mut self, rd: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_desired`, `recursion_available`, `authority_count`, `additional_count`, and `raw` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_refused`, `raw`, and `extract_ipv4_answers` are never used
[INFO] [stdout]    --> tests/common/mod.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn is_refused(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn extract_ipv4_answers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_fixture` is never used
[INFO] [stdout]    --> tests/common/mod.rs:485:8
[INFO] [stdout]     |
[INFO] [stdout] 485 | pub fn save_fixture(filename: &str, content: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `START_DNSMASQ_FN` is never used
[INFO] [stdout]   --> tests/common/mod.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const START_DNSMASQ_FN: &str = r#"
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsImplementation` is never used
[INFO] [stdout]   --> tests/common/dns.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum DnsImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/dns.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `type_a`, `qtype`, and `recursion_desired` are never used
[INFO] [stdout]    --> tests/common/mod.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl DnsQueryBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn type_a(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn recursion_desired(mut self, rd: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn new_with_impl(implementation: DnsImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn run_test(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     fn generate_start_function(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn generate_command(&self, has_config: bool, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STANDARD_HOSTS` is never used
[INFO] [stdout]    --> tests/common/dns.rs:395:11
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub const STANDARD_HOSTS: &str = r#"
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DhcpImplementation` is never used
[INFO] [stdout]   --> tests/common/test_env.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum DhcpImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DhcpTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/test_env.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct DhcpTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn new_with_impl(implementation: DhcpImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     fn new_with_ips_and_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn run_test(&self, extra_dnsmasq_args: &str, test_script: &str) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn run_test_with_setup(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     fn generate_network_setup(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     fn generate_dnsmasq_command(&self, dnsmasq_config: Option<&str>, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn implementation(&self) -> DhcpImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:376:8
[INFO] [stdout]     |
[INFO] [stdout] 376 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_basic` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:423:12
[INFO] [stdout]     |
[INFO] [stdout] 423 |     pub fn udhcpc_basic() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn udhcpc_with_hostname(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_mac` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:486:12
[INFO] [stdout]     |
[INFO] [stdout] 486 |     pub fn udhcpc_with_mac(mac: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:516:12
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_desired`, `recursion_available`, `authority_count`, `additional_count`, and `raw` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_refused`, `raw`, and `extract_ipv4_answers` are never used
[INFO] [stdout]    --> tests/common/mod.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn is_refused(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn extract_ipv4_answers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_fixture` is never used
[INFO] [stdout]    --> tests/common/mod.rs:485:8
[INFO] [stdout]     |
[INFO] [stdout] 485 | pub fn save_fixture(filename: &str, content: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsImplementation` is never used
[INFO] [stdout]   --> tests/common/dns.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum DnsImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/dns.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn new_with_impl(implementation: DnsImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn run_test(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     fn generate_start_function(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn generate_command(&self, has_config: bool, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STANDARD_HOSTS` is never used
[INFO] [stdout]    --> tests/common/dns.rs:395:11
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub const STANDARD_HOSTS: &str = r#"
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DhcpImplementation` is never used
[INFO] [stdout]   --> tests/common/test_env.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum DhcpImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DhcpTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/test_env.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct DhcpTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn new_with_impl(implementation: DhcpImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     fn new_with_ips_and_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn run_test(&self, extra_dnsmasq_args: &str, test_script: &str) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn run_test_with_setup(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     fn generate_network_setup(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     fn generate_dnsmasq_command(&self, dnsmasq_config: Option<&str>, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn implementation(&self) -> DhcpImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:603:12
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option_list` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:617:12
[INFO] [stdout]     |
[INFO] [stdout] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_dhcp_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:624:12
[INFO] [stdout]     |
[INFO] [stdout] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_offered_ip` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:676:12
[INFO] [stdout]     |
[INFO] [stdout] 676 |     pub fn extract_offered_ip(output: &str) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_lease_file` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 |     pub fn extract_lease_file(output: &str) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:376:8
[INFO] [stdout]     |
[INFO] [stdout] 376 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_basic` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:423:12
[INFO] [stdout]     |
[INFO] [stdout] 423 |     pub fn udhcpc_basic() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn udhcpc_with_hostname(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_mac` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:486:12
[INFO] [stdout]     |
[INFO] [stdout] 486 |     pub fn udhcpc_with_mac(mac: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:516:12
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:603:12
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option_list` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:617:12
[INFO] [stdout]     |
[INFO] [stdout] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_dhcp_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:624:12
[INFO] [stdout]     |
[INFO] [stdout] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_offered_ip` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:676:12
[INFO] [stdout]     |
[INFO] [stdout] 676 |     pub fn extract_offered_ip(output: &str) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_lease_file` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 |     pub fn extract_lease_file(output: &str) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `type_a`, `qtype`, and `recursion_desired` are never used
[INFO] [stdout]    --> tests/common/mod.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl DnsQueryBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn type_a(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn recursion_desired(mut self, rd: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_desired`, `recursion_available`, `authority_count`, `additional_count`, and `raw` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_refused`, `raw`, and `extract_ipv4_answers` are never used
[INFO] [stdout]    --> tests/common/mod.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn is_refused(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn extract_ipv4_answers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsImplementation` is never used
[INFO] [stdout]   --> tests/common/dns.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum DnsImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/dns.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn new_with_impl(implementation: DnsImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn run_test(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     fn generate_start_function(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn generate_command(&self, has_config: bool, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STANDARD_HOSTS` is never used
[INFO] [stdout]    --> tests/common/dns.rs:395:11
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub const STANDARD_HOSTS: &str = r#"
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DhcpImplementation` is never used
[INFO] [stdout]   --> tests/common/test_env.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum DhcpImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DhcpTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/test_env.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct DhcpTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn new_with_impl(implementation: DhcpImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     fn new_with_ips_and_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn run_test(&self, extra_dnsmasq_args: &str, test_script: &str) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn run_test_with_setup(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     fn generate_network_setup(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     fn generate_dnsmasq_command(&self, dnsmasq_config: Option<&str>, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn implementation(&self) -> DhcpImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:376:8
[INFO] [stdout]     |
[INFO] [stdout] 376 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_basic` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:423:12
[INFO] [stdout]     |
[INFO] [stdout] 423 |     pub fn udhcpc_basic() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn udhcpc_with_hostname(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_mac` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:486:12
[INFO] [stdout]     |
[INFO] [stdout] 486 |     pub fn udhcpc_with_mac(mac: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:516:12
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:603:12
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option_list` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:617:12
[INFO] [stdout]     |
[INFO] [stdout] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_dhcp_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:624:12
[INFO] [stdout]     |
[INFO] [stdout] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_offered_ip` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:676:12
[INFO] [stdout]     |
[INFO] [stdout] 676 |     pub fn extract_offered_ip(output: &str) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_lease_file` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 |     pub fn extract_lease_file(output: &str) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `START_DNSMASQ_FN` is never used
[INFO] [stdout]   --> tests/common/mod.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const START_DNSMASQ_FN: &str = r#"
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `type_a`, `qtype`, and `recursion_desired` are never used
[INFO] [stdout]    --> tests/common/mod.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl DnsQueryBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn type_a(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn recursion_desired(mut self, rd: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_desired`, `recursion_available`, `authority_count`, `additional_count`, and `raw` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_refused`, `raw`, and `extract_ipv4_answers` are never used
[INFO] [stdout]    --> tests/common/mod.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn is_refused(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn extract_ipv4_answers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_fixture` is never used
[INFO] [stdout]    --> tests/common/mod.rs:485:8
[INFO] [stdout]     |
[INFO] [stdout] 485 | pub fn save_fixture(filename: &str, content: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `unique_id` is never read
[INFO] [stdout]   --> tests/common/dns.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     unique_id: u32,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_dnsmasq_rs`, and `implementation` are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DhcpImplementation` is never used
[INFO] [stdout]   --> tests/common/test_env.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum DhcpImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DhcpTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/test_env.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct DhcpTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn new_with_impl(implementation: DhcpImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     fn new_with_ips_and_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn run_test(&self, extra_dnsmasq_args: &str, test_script: &str) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn run_test_with_setup(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     fn generate_network_setup(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     fn generate_dnsmasq_command(&self, dnsmasq_config: Option<&str>, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn implementation(&self) -> DhcpImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:376:8
[INFO] [stdout]     |
[INFO] [stdout] 376 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_basic` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:423:12
[INFO] [stdout]     |
[INFO] [stdout] 423 |     pub fn udhcpc_basic() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn udhcpc_with_hostname(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_mac` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:486:12
[INFO] [stdout]     |
[INFO] [stdout] 486 |     pub fn udhcpc_with_mac(mac: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:516:12
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:603:12
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option_list` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:617:12
[INFO] [stdout]     |
[INFO] [stdout] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_dhcp_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:624:12
[INFO] [stdout]     |
[INFO] [stdout] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_offered_ip` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:676:12
[INFO] [stdout]     |
[INFO] [stdout] 676 |     pub fn extract_offered_ip(output: &str) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_lease_file` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 |     pub fn extract_lease_file(output: &str) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `type_a`, `qtype`, and `recursion_desired` are never used
[INFO] [stdout]    --> tests/common/mod.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl DnsQueryBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn type_a(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn recursion_desired(mut self, rd: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_desired`, `recursion_available`, `authority_count`, `additional_count`, and `raw` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_refused`, `raw`, and `extract_ipv4_answers` are never used
[INFO] [stdout]    --> tests/common/mod.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn is_refused(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn extract_ipv4_answers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsImplementation` is never used
[INFO] [stdout]   --> tests/common/dns.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum DnsImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/dns.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn new_with_impl(implementation: DnsImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn run_test(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     fn generate_start_function(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn generate_command(&self, has_config: bool, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STANDARD_HOSTS` is never used
[INFO] [stdout]    --> tests/common/dns.rs:395:11
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub const STANDARD_HOSTS: &str = r#"
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_dual_subnet`, `run_test`, and `run_test_with_setup` are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn run_test(&self, extra_dnsmasq_args: &str, test_script: &str) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn run_test_with_setup(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn udhcpc_with_hostname(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:516:12
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:603:12
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option_list` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:617:12
[INFO] [stdout]     |
[INFO] [stdout] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_dhcp_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:624:12
[INFO] [stdout]     |
[INFO] [stdout] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_offered_ip` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:676:12
[INFO] [stdout]     |
[INFO] [stdout] 676 |     pub fn extract_offered_ip(output: &str) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_lease_file` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 |     pub fn extract_lease_file(output: &str) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stdout]  --> tests/common/dns.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `type_a`, `qtype`, and `recursion_desired` are never used
[INFO] [stdout]    --> tests/common/mod.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl DnsQueryBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn type_a(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn recursion_desired(mut self, rd: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_desired`, `recursion_available`, `authority_count`, `additional_count`, and `raw` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_refused`, `raw`, and `extract_ipv4_answers` are never used
[INFO] [stdout]    --> tests/common/mod.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn is_refused(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn extract_ipv4_answers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsImplementation` is never used
[INFO] [stdout]   --> tests/common/dns.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum DnsImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/dns.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn new_with_impl(implementation: DnsImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn run_test(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     fn generate_start_function(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn generate_command(&self, has_config: bool, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STANDARD_HOSTS` is never used
[INFO] [stdout]    --> tests/common/dns.rs:395:11
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub const STANDARD_HOSTS: &str = r#"
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_dual_subnet`, `run_test`, and `run_test_with_setup` are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn run_test(&self, extra_dnsmasq_args: &str, test_script: &str) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn run_test_with_setup(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:516:12
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:603:12
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option_list` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:617:12
[INFO] [stdout]     |
[INFO] [stdout] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_dhcp_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:624:12
[INFO] [stdout]     |
[INFO] [stdout] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_lease_file` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 |     pub fn extract_lease_file(output: &str) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `type_a`, `qtype`, and `recursion_desired` are never used
[INFO] [stdout]    --> tests/common/mod.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl DnsQueryBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn type_a(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn recursion_desired(mut self, rd: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_desired`, `recursion_available`, `authority_count`, `additional_count`, and `raw` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_refused`, `raw`, and `extract_ipv4_answers` are never used
[INFO] [stdout]    --> tests/common/mod.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn is_refused(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn extract_ipv4_answers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsImplementation` is never used
[INFO] [stdout]   --> tests/common/dns.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum DnsImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/dns.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn new_with_impl(implementation: DnsImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn run_test(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     fn generate_start_function(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn generate_command(&self, has_config: bool, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STANDARD_HOSTS` is never used
[INFO] [stdout]    --> tests/common/dns.rs:395:11
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub const STANDARD_HOSTS: &str = r#"
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_dual_subnet`, `run_test`, and `run_test_with_setup` are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn run_test(&self, extra_dnsmasq_args: &str, test_script: &str) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn run_test_with_setup(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_basic` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:423:12
[INFO] [stdout]     |
[INFO] [stdout] 423 |     pub fn udhcpc_basic() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn udhcpc_with_hostname(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_mac` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:486:12
[INFO] [stdout]     |
[INFO] [stdout] 486 |     pub fn udhcpc_with_mac(mac: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_offered_ip` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:676:12
[INFO] [stdout]     |
[INFO] [stdout] 676 |     pub fn extract_offered_ip(output: &str) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_lease_file` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 |     pub fn extract_lease_file(output: &str) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `START_DNSMASQ_FN` is never used
[INFO] [stdout]   --> tests/common/mod.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const START_DNSMASQ_FN: &str = r#"
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `type_a`, `qtype`, and `recursion_desired` are never used
[INFO] [stdout]    --> tests/common/mod.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl DnsQueryBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn type_a(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn recursion_desired(mut self, rd: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_desired`, `recursion_available`, `authority_count`, `additional_count`, and `raw` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_refused`, `raw`, and `extract_ipv4_answers` are never used
[INFO] [stdout]    --> tests/common/mod.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn is_refused(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn extract_ipv4_answers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_fixture` is never used
[INFO] [stdout]    --> tests/common/mod.rs:485:8
[INFO] [stdout]     |
[INFO] [stdout] 485 | pub fn save_fixture(filename: &str, content: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `router`, `dns_servers`, `domain_name`, `is_nak`, and `raw` are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsImplementation` is never used
[INFO] [stdout]   --> tests/common/dns.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum DnsImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/dns.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn new_with_impl(implementation: DnsImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn run_test(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     fn generate_start_function(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn generate_command(&self, has_config: bool, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STANDARD_HOSTS` is never used
[INFO] [stdout]    --> tests/common/dns.rs:395:11
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub const STANDARD_HOSTS: &str = r#"
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DhcpImplementation` is never used
[INFO] [stdout]   --> tests/common/test_env.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum DhcpImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DhcpTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/test_env.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct DhcpTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn new_with_impl(implementation: DhcpImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     fn new_with_ips_and_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn run_test(&self, extra_dnsmasq_args: &str, test_script: &str) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn run_test_with_setup(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     fn generate_network_setup(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     fn generate_dnsmasq_command(&self, dnsmasq_config: Option<&str>, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn implementation(&self) -> DhcpImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:376:8
[INFO] [stdout]     |
[INFO] [stdout] 376 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_basic` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:423:12
[INFO] [stdout]     |
[INFO] [stdout] 423 |     pub fn udhcpc_basic() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn udhcpc_with_hostname(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_mac` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:486:12
[INFO] [stdout]     |
[INFO] [stdout] 486 |     pub fn udhcpc_with_mac(mac: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:516:12
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:603:12
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option_list` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:617:12
[INFO] [stdout]     |
[INFO] [stdout] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_dhcp_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:624:12
[INFO] [stdout]     |
[INFO] [stdout] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_offered_ip` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:676:12
[INFO] [stdout]     |
[INFO] [stdout] 676 |     pub fn extract_offered_ip(output: &str) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_lease_file` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 |     pub fn extract_lease_file(output: &str) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `START_DNSMASQ_FN` is never used
[INFO] [stdout]   --> tests/common/mod.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const START_DNSMASQ_FN: &str = r#"
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `qtype` is never used
[INFO] [stdout]    --> tests/common/mod.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl DnsQueryBuilder {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_available`, `authority_count`, and `additional_count` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `raw` is never used
[INFO] [stdout]    --> tests/common/mod.rs:300:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_test` is never used
[INFO] [stdout]    --> tests/common/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `type_a`, `qtype`, and `recursion_desired` are never used
[INFO] [stdout]    --> tests/common/mod.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl DnsQueryBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn type_a(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn recursion_desired(mut self, rd: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_truncated`, `recursion_desired`, `recursion_available`, `authority_count`, `additional_count`, and `raw` are never read
[INFO] [stdout]    --> tests/common/mod.rs:247:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct DnsResponse {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub is_truncated: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 248 |     pub recursion_desired: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     pub recursion_available: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub authority_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 254 |     pub additional_count: u16,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_refused`, `raw`, and `extract_ipv4_answers` are never used
[INFO] [stdout]    --> tests/common/mod.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl DnsResponse {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn is_refused(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn extract_ipv4_answers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_query` is never used
[INFO] [stdout]    --> tests/common/mod.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_hosts_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_fixture` is never used
[INFO] [stdout]    --> tests/common/mod.rs:485:8
[INFO] [stdout]     |
[INFO] [stdout] 485 | pub fn save_fixture(filename: &str, content: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsImplementation` is never used
[INFO] [stdout]   --> tests/common/dns.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum DnsImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/dns.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn new_with_impl(implementation: DnsImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn run_test(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     fn generate_start_function(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn generate_command(&self, has_config: bool, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STANDARD_HOSTS` is never used
[INFO] [stdout]    --> tests/common/dns.rs:395:11
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub const STANDARD_HOSTS: &str = r#"
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_dual_subnet`, `run_test_with_setup`, `run_test_with_config`, and `implementation` are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn run_test_with_setup(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn implementation(&self) -> DhcpImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:376:8
[INFO] [stdout]     |
[INFO] [stdout] 376 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn udhcpc_with_hostname(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:516:12
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:603:12
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option_list` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:617:12
[INFO] [stdout]     |
[INFO] [stdout] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_dhcp_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:624:12
[INFO] [stdout]     |
[INFO] [stdout] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_offered_ip` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:676:12
[INFO] [stdout]     |
[INFO] [stdout] 676 |     pub fn extract_offered_ip(output: &str) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_fixture` is never used
[INFO] [stdout]    --> tests/common/mod.rs:485:8
[INFO] [stdout]     |
[INFO] [stdout] 485 | pub fn save_fixture(filename: &str, content: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BootReply` is never constructed
[INFO] [stdout]   --> tests/common/dhcp.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum DhcpOp {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 19 |     BootRequest = 1,
[INFO] [stdout] 20 |     BootReply = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DhcpPacketBuilder {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> tests/common/dhcp.rs:362:9
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub struct DhcpResponse {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 361 |     pub op: u8,
[INFO] [stdout] 362 |     pub htype: u8,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 363 |     pub hlen: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 364 |     pub hops: u8,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 365 |     pub xid: u32,
[INFO] [stdout] 366 |     pub secs: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 367 |     pub flags: u16,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 372 |     pub chaddr: [u8; 16],
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 373 |     pub sname: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 374 |     pub file: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stdout] 376 |     raw: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn as_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/common/dhcp.rs:536:12
[INFO] [stdout]     |
[INFO] [stdout] 429 | impl DhcpResponse {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_dhcp_packet` is never used
[INFO] [stdout]    --> tests/common/dhcp.rs:606:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | pub fn send_dhcp_packet(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsImplementation` is never used
[INFO] [stdout]   --> tests/common/dns.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum DnsImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/dns.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct DnsTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/dns.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl DnsTestEnv {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stdout]  47 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn new_with_impl(implementation: DnsImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn run_test(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     fn generate_start_function(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn generate_command(&self, has_config: bool, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/dns.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/dns.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STANDARD_HOSTS` is never used
[INFO] [stdout]    --> tests/common/dns.rs:395:11
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub const STANDARD_HOSTS: &str = r#"
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom` is never used
[INFO] [stdout]    --> tests/common/dns.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DhcpImplementation` is never used
[INFO] [stdout]   --> tests/common/test_env.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum DhcpImplementation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DhcpTestEnv` is never constructed
[INFO] [stdout]   --> tests/common/test_env.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct DhcpTestEnv {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/common/test_env.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl DhcpTestEnv {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stdout]  41 |     pub fn new() -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn new_with_impl(implementation: DhcpImplementation) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     fn new_with_ips_and_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn run_test(&self, extra_dnsmasq_args: &str, test_script: &str) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn run_test_with_setup(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn run_test_with_config(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn run_test_impl(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     fn generate_network_setup(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     fn generate_dnsmasq_command(&self, dnsmasq_config: Option<&str>, extra_args: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn implementation(&self) -> DhcpImplementation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_against_both` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:376:8
[INFO] [stdout]     |
[INFO] [stdout] 376 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dnsmasq_only` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_basic` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:423:12
[INFO] [stdout]     |
[INFO] [stdout] 423 |     pub fn udhcpc_basic() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn udhcpc_with_hostname(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_mac` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:486:12
[INFO] [stdout]     |
[INFO] [stdout] 486 |     pub fn udhcpc_with_mac(mac: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:516:12
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:559:12
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:603:12
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dhcp_option_list` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:617:12
[INFO] [stdout]     |
[INFO] [stdout] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_dhcp_options` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:624:12
[INFO] [stdout]     |
[INFO] [stdout] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_offered_ip` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:676:12
[INFO] [stdout]     |
[INFO] [stdout] 676 |     pub fn extract_offered_ip(output: &str) -> Option<Ipv4Addr> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_lease_file` is never used
[INFO] [stdout]    --> tests/common/test_env.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 |     pub fn extract_lease_file(output: &str) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 28.78s
[INFO] running `Command { std: "docker" "inspect" "60dc3b1b57cc0aa3a7a518110e00ad0ebf6469df6170edc8e4cb8d88976f4995", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "60dc3b1b57cc0aa3a7a518110e00ad0ebf6469df6170edc8e4cb8d88976f4995", kill_on_drop: false }`
[INFO] [stdout] 60dc3b1b57cc0aa3a7a518110e00ad0ebf6469df6170edc8e4cb8d88976f4995
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 6ca36f2bc98a52f545ff8b8c56c047f0f4821f967b9228b2b6064890f9b65cde
[INFO] running `Command { std: "docker" "start" "-a" "6ca36f2bc98a52f545ff8b8c56c047f0f4821f967b9228b2b6064890f9b65cde", kill_on_drop: false }`
[INFO] [stderr] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, and `SocketAddr`
[INFO] [stderr]  --> tests/common/dns.rs:9:16
[INFO] [stderr]   |
[INFO] [stderr] 9 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr};
[INFO] [stderr]   |                ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `run_timed_test` is never used
[INFO] [stderr]    --> tests/common/mod.rs:115:8
[INFO] [stderr]     |
[INFO] [stderr] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: methods `type_a`, `qtype`, and `recursion_desired` are never used
[INFO] [stderr]    --> tests/common/mod.rs:170:12
[INFO] [stderr]     |
[INFO] [stderr] 151 | impl DnsQueryBuilder {
[INFO] [stderr]     | -------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 170 |     pub fn type_a(mut self) -> Self {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 188 |     pub fn recursion_desired(mut self, rd: bool) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `is_truncated`, `recursion_desired`, `recursion_available`, `authority_count`, `additional_count`, and `raw` are never read
[INFO] [stderr]    --> tests/common/mod.rs:247:9
[INFO] [stderr]     |
[INFO] [stderr] 243 | pub struct DnsResponse {
[INFO] [stderr]     |            ----------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 247 |     pub is_truncated: bool,
[INFO] [stderr]     |         ^^^^^^^^^^^^
[INFO] [stderr] 248 |     pub recursion_desired: bool,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 249 |     pub recursion_available: bool,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 253 |     pub authority_count: u16,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^
[INFO] [stderr] 254 |     pub additional_count: u16,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 255 |     raw: Vec<u8>,
[INFO] [stderr]     |     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `is_refused`, `raw`, and `extract_ipv4_answers` are never used
[INFO] [stderr]    --> tests/common/mod.rs:295:12
[INFO] [stderr]     |
[INFO] [stderr] 258 | impl DnsResponse {
[INFO] [stderr]     | ---------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 295 |     pub fn is_refused(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 307 |     pub fn extract_ipv4_answers(&self) -> Vec<Ipv4Addr> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_query` is never used
[INFO] [stderr]    --> tests/common/mod.rs:372:8
[INFO] [stderr]     |
[INFO] [stderr] 372 | pub fn send_query(query: &[u8], server: SocketAddr, timeout: Duration) -> io::Result<Vec<u8>> {
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_temp_hosts_file` is never used
[INFO] [stderr]    --> tests/common/mod.rs:384:8
[INFO] [stderr]     |
[INFO] [stderr] 384 | pub fn create_temp_hosts_file(entries: &[(&str, &str)]) -> io::Result<tempfile::NamedTempFile> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `BootReply` is never constructed
[INFO] [stderr]   --> tests/common/dhcp.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub enum DhcpOp {
[INFO] [stderr]    |          ------ variant in this enum
[INFO] [stderr] 19 |     BootRequest = 1,
[INFO] [stderr] 20 |     BootReply = 2,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DhcpOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> tests/common/dhcp.rs:123:12
[INFO] [stderr]     |
[INFO] [stderr] 100 | impl DhcpPacketBuilder {
[INFO] [stderr]     | ---------------------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]    --> tests/common/dhcp.rs:362:9
[INFO] [stderr]     |
[INFO] [stderr] 360 | pub struct DhcpResponse {
[INFO] [stderr]     |            ------------ fields in this struct
[INFO] [stderr] 361 |     pub op: u8,
[INFO] [stderr] 362 |     pub htype: u8,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] 363 |     pub hlen: u8,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 364 |     pub hops: u8,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 365 |     pub xid: u32,
[INFO] [stderr] 366 |     pub secs: u16,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 367 |     pub flags: u16,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stderr]     |         ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 371 |     pub giaddr: Ipv4Addr,
[INFO] [stderr]     |         ^^^^^^
[INFO] [stderr] 372 |     pub chaddr: [u8; 16],
[INFO] [stderr]     |         ^^^^^^
[INFO] [stderr] 373 |     pub sname: String,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] 374 |     pub file: String,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stderr] 376 |     raw: Vec<u8>,
[INFO] [stderr]     |     ^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `as_string` is never used
[INFO] [stderr]    --> tests/common/dhcp.rs:424:12
[INFO] [stderr]     |
[INFO] [stderr] 386 | impl DhcpOption {
[INFO] [stderr]     | --------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 424 |     pub fn as_string(&self) -> String {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> tests/common/dhcp.rs:536:12
[INFO] [stderr]     |
[INFO] [stderr] 429 | impl DhcpResponse {
[INFO] [stderr]     | ----------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 565 |     pub fn is_ack(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 585 |     pub fn yiaddr(&self) -> Ipv4Addr {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 590 |     pub fn giaddr(&self) -> Ipv4Addr {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_dhcp_packet` is never used
[INFO] [stderr]    --> tests/common/dhcp.rs:606:8
[INFO] [stderr]     |
[INFO] [stderr] 606 | pub fn send_dhcp_packet(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `DnsImplementation` is never used
[INFO] [stderr]   --> tests/common/dns.rs:16:10
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub enum DnsImplementation {
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DnsTestEnv` is never constructed
[INFO] [stderr]   --> tests/common/dns.rs:33:12
[INFO] [stderr]    |
[INFO] [stderr] 33 | pub struct DnsTestEnv {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> tests/common/dns.rs:47:12
[INFO] [stderr]     |
[INFO] [stderr]  45 | impl DnsTestEnv {
[INFO] [stderr]     | --------------- associated items in this implementation
[INFO] [stderr]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stderr]  47 |     pub fn new() -> Option<Self> {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  57 |     pub fn new_with_impl(implementation: DnsImplementation) -> Option<Self> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 112 |     pub fn run_test(
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 122 |     pub fn run_test_with_config(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 131 |     fn run_test_impl(
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 237 |     fn generate_start_function(&self) -> String {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 273 |     fn generate_command(&self, has_config: bool, extra_args: &str) -> String {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `run_against_both` is never used
[INFO] [stderr]    --> tests/common/dns.rs:304:8
[INFO] [stderr]     |
[INFO] [stderr] 304 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `run_dnsmasq_rs_only` is never used
[INFO] [stderr]    --> tests/common/dns.rs:328:8
[INFO] [stderr]     |
[INFO] [stderr] 328 | pub fn run_dnsmasq_rs_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `run_dnsmasq_only` is never used
[INFO] [stderr]    --> tests/common/dns.rs:339:8
[INFO] [stderr]     |
[INFO] [stderr] 339 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `STANDARD_HOSTS` is never used
[INFO] [stderr]    --> tests/common/dns.rs:395:11
[INFO] [stderr]     |
[INFO] [stderr] 395 | pub const STANDARD_HOSTS: &str = r#"
[INFO] [stderr]     |           ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `custom` is never used
[INFO] [stderr]    --> tests/common/dns.rs:370:12
[INFO] [stderr]     |
[INFO] [stderr] 370 |     pub fn custom(hostname: &str, qtype: &str, extra_flags: &str) -> String {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `new_dual_subnet`, `run_test`, and `run_test_with_setup` are never used
[INFO] [stderr]    --> tests/common/test_env.rs:41:12
[INFO] [stderr]     |
[INFO] [stderr]  39 | impl DhcpTestEnv {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stderr]  41 |     pub fn new() -> Option<Self> {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 115 |     pub fn run_test(&self, extra_dnsmasq_args: &str, test_script: &str) -> Result<String, String> {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 121 |     pub fn run_test_with_setup(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `run_dnsmasq_only` is never used
[INFO] [stderr]    --> tests/common/test_env.rs:407:8
[INFO] [stderr]     |
[INFO] [stderr] 407 | pub fn run_dnsmasq_only<F>(test_fn: F) -> Result<String, String>
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `udhcpc_with_vendor_class` is never used
[INFO] [stderr]    --> tests/common/test_env.rs:464:12
[INFO] [stderr]     |
[INFO] [stderr] 464 |     pub fn udhcpc_with_vendor_class(vendor_class: &str) -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `udhcpc_dump_options` is never used
[INFO] [stderr]    --> tests/common/test_env.rs:516:12
[INFO] [stderr]     |
[INFO] [stderr] 516 |     pub fn udhcpc_dump_options() -> &'static str {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `udhcpc_with_hostname_dump_options` is never used
[INFO] [stderr]    --> tests/common/test_env.rs:559:12
[INFO] [stderr]     |
[INFO] [stderr] 559 |     pub fn udhcpc_with_hostname_dump_options(hostname: &str) -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_dhcp_option` is never used
[INFO] [stderr]    --> tests/common/test_env.rs:603:12
[INFO] [stderr]     |
[INFO] [stderr] 603 |     pub fn parse_dhcp_option(option_name: &str, output: &str) -> Option<String> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_dhcp_option_list` is never used
[INFO] [stderr]    --> tests/common/test_env.rs:617:12
[INFO] [stderr]     |
[INFO] [stderr] 617 |     pub fn parse_dhcp_option_list(option_name: &str, output: &str) -> Vec<String> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `has_dhcp_options` is never used
[INFO] [stderr]    --> tests/common/test_env.rs:624:12
[INFO] [stderr]     |
[INFO] [stderr] 624 |     pub fn has_dhcp_options(output: &str) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `extract_lease_file` is never used
[INFO] [stderr]    --> tests/common/test_env.rs:685:12
[INFO] [stderr]     |
[INFO] [stderr] 685 |     pub fn extract_lease_file(output: &str) -> &str {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `new_dual_subnet`, `run_test_with_setup`, and `run_test_with_config` are never used
[INFO] [stderr]    --> tests/common/test_env.rs:41:12
[INFO] [stderr]     |
[INFO] [stderr]  39 | impl DhcpTestEnv {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stderr]  41 |     pub fn new() -> Option<Self> {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 121 |     pub fn run_test_with_setup(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 131 |     pub fn run_test_with_config(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `udhcpc_with_mac` is never used
[INFO] [stderr]    --> tests/common/test_env.rs:486:12
[INFO] [stderr]     |
[INFO] [stderr] 486 |     pub fn udhcpc_with_mac(mac: &str) -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `serial_test::serial`
[INFO] [stderr]   --> tests/dhcp_dns_integration.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 17 | use serial_test::serial;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::io::Write`
[INFO] [stderr]   --> tests/dhcp_dns_integration.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | use std::io::Write;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `DhcpImplementation` is never used
[INFO] [stderr]   --> tests/common/test_env.rs:14:10
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub enum DhcpImplementation {
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DhcpTestEnv` is never constructed
[INFO] [stderr]   --> tests/common/test_env.rs:31:12
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub struct DhcpTestEnv {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> tests/common/test_env.rs:41:12
[INFO] [stderr]     |
[INFO] [stderr]  39 | impl DhcpTestEnv {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stderr]  41 |     pub fn new() -> Option<Self> {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  46 |     pub fn new_with_impl(implementation: DhcpImplementation) -> Option<Self> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  59 |     fn new_with_ips_and_impl(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 115 |     pub fn run_test(&self, extra_dnsmasq_args: &str, test_script: &str) -> Result<String, String> {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 121 |     pub fn run_test_with_setup(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 131 |     pub fn run_test_with_config(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 139 |     fn run_test_impl(
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 263 |     fn generate_network_setup(&self) -> String {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 317 |     fn generate_dnsmasq_command(&self, dnsmasq_config: Option<&str>, extra_args: &str) -> String {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 367 |     pub fn implementation(&self) -> DhcpImplementation {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `run_against_both` is never used
[INFO] [stderr]    --> tests/common/test_env.rs:376:8
[INFO] [stderr]     |
[INFO] [stderr] 376 | pub fn run_against_both<F>(test_fn: F) -> (Result<String, String>, Result<String, String>)
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `udhcpc_basic` is never used
[INFO] [stderr]    --> tests/common/test_env.rs:423:12
[INFO] [stderr]     |
[INFO] [stderr] 423 |     pub fn udhcpc_basic() -> &'static str {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `udhcpc_with_hostname` is never used
[INFO] [stderr]    --> tests/common/test_env.rs:442:12
[INFO] [stderr]     |
[INFO] [stderr] 442 |     pub fn udhcpc_with_hostname(hostname: &str) -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `extract_offered_ip` is never used
[INFO] [stderr]    --> tests/common/test_env.rs:676:12
[INFO] [stderr]     |
[INFO] [stderr] 676 |     pub fn extract_offered_ip(output: &str) -> Option<Ipv4Addr> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `START_DNSMASQ_FN` is never used
[INFO] [stderr]   --> tests/common/mod.rs:30:11
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub const START_DNSMASQ_FN: &str = r#"
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `run_timed_test` is never used
[INFO] [stderr]    --> tests/common/mod.rs:115:8
[INFO] [stderr]     |
[INFO] [stderr] 115 | pub fn run_timed_test<F, T>(test_name: &str, test_fn: F) -> T
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `save_fixture` is never used
[INFO] [stderr]    --> tests/common/mod.rs:485:8
[INFO] [stderr]     |
[INFO] [stderr] 485 | pub fn save_fixture(filename: &str, content: &str) {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `unique_id` is never read
[INFO] [stderr]   --> tests/common/dns.rs:36:5
[INFO] [stderr]    |
[INFO] [stderr] 33 | pub struct DnsTestEnv {
[INFO] [stderr]    |            ---------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 36 |     unique_id: u32,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `new_dnsmasq_rs`, and `implementation` are never used
[INFO] [stderr]    --> tests/common/dns.rs:47:12
[INFO] [stderr]     |
[INFO] [stderr]  45 | impl DnsTestEnv {
[INFO] [stderr]     | --------------- associated items in this implementation
[INFO] [stderr]  46 |     /// Create a new test environment using reference dnsmasq.
[INFO] [stderr]  47 |     pub fn new() -> Option<Self> {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  52 |     pub fn new_dnsmasq_rs() -> Option<Self> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 107 |     pub fn implementation(&self) -> DnsImplementation {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::fs`
[INFO] [stderr]   --> tests/dhcp_vendor_options.rs:32:5
[INFO] [stderr]    |
[INFO] [stderr] 32 | use std::fs;
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::fs`
[INFO] [stderr]   --> tests/dhcp_multi_subnet.rs:32:5
[INFO] [stderr]    |
[INFO] [stderr] 32 | use std::fs;
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `new_dual_subnet`, `run_test_with_setup`, `run_test_with_config`, and `implementation` are never used
[INFO] [stderr]    --> tests/common/test_env.rs:41:12
[INFO] [stderr]     |
[INFO] [stderr]  39 | impl DhcpTestEnv {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stderr]  41 |     pub fn new() -> Option<Self> {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  51 |     pub fn new_dual_subnet() -> Option<Self> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 121 |     pub fn run_test_with_setup(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 131 |     pub fn run_test_with_config(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 367 |     pub fn implementation(&self) -> DhcpImplementation {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> tests/common/dhcp.rs:129:12
[INFO] [stderr]     |
[INFO] [stderr] 100 | impl DhcpPacketBuilder {
[INFO] [stderr]     | ---------------------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 141 |     pub fn ciaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 328 |     pub fn release(mac: [u8; 6], client_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 338 |     pub fn decline(mac: [u8; 6], declined_ip: Ipv4Addr, server_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 348 |     pub fn inform(mac: [u8; 6], client_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]    --> tests/common/dhcp.rs:362:9
[INFO] [stderr]     |
[INFO] [stderr] 360 | pub struct DhcpResponse {
[INFO] [stderr]     |            ------------ fields in this struct
[INFO] [stderr] 361 |     pub op: u8,
[INFO] [stderr] 362 |     pub htype: u8,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] 363 |     pub hlen: u8,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 364 |     pub hops: u8,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 365 |     pub xid: u32,
[INFO] [stderr] 366 |     pub secs: u16,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 367 |     pub flags: u16,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] 368 |     pub ciaddr: Ipv4Addr,
[INFO] [stderr]     |         ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 372 |     pub chaddr: [u8; 16],
[INFO] [stderr]     |         ^^^^^^
[INFO] [stderr] 373 |     pub sname: String,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] 374 |     pub file: String,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 375 |     pub options: Vec<DhcpOption>,
[INFO] [stderr] 376 |     raw: Vec<u8>,
[INFO] [stderr]     |     ^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `DhcpResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `router`, `dns_servers`, `domain_name`, `is_nak`, and `raw` are never used
[INFO] [stderr]    --> tests/common/dhcp.rs:536:12
[INFO] [stderr]     |
[INFO] [stderr] 429 | impl DhcpResponse {
[INFO] [stderr]     | ----------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 536 |     pub fn router(&self) -> Option<Ipv4Addr> {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 542 |     pub fn dns_servers(&self) -> Vec<Ipv4Addr> {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 549 |     pub fn domain_name(&self) -> Option<String> {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 570 |     pub fn is_nak(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 575 |     pub fn raw(&self) -> &[u8] {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `common::dhcp::*`
[INFO] [stderr]   --> tests/dhcp_tagging.rs:23:5
[INFO] [stderr]    |
[INFO] [stderr] 23 | use common::dhcp::*;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::fs`
[INFO] [stderr]   --> tests/dhcp_tagging.rs:24:5
[INFO] [stderr]    |
[INFO] [stderr] 24 | use std::fs;
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `dnsmasq-rs` (test "dhcp_static") generated 30 warnings (run `cargo fix --test "dhcp_static" -p dnsmasq-rs` to apply 1 suggestion)
[INFO] [stderr] warning: `dnsmasq-rs` (test "dhcp_dora") generated 30 warnings (28 duplicates)
[INFO] [stderr] warning: `dnsmasq-rs` (test "dhcp_dns_integration") generated 39 warnings (30 duplicates) (run `cargo fix --test "dhcp_dns_integration" -p dnsmasq-rs` to apply 2 suggestions)
[INFO] [stderr] warning: `dnsmasq-rs` (test "dns_e2e") generated 37 warnings (32 duplicates)
[INFO] [stderr] warning: `dnsmasq-rs` (test "dhcp_vendor_options") generated 38 warnings (37 duplicates) (run `cargo fix --test "dhcp_vendor_options" -p dnsmasq-rs` to apply 1 suggestion)
[INFO] [stderr] warning: `dnsmasq-rs` (test "dhcp_multi_subnet") generated 38 warnings (37 duplicates) (run `cargo fix --test "dhcp_multi_subnet" -p dnsmasq-rs` to apply 1 suggestion)
[INFO] [stderr] warning: `dnsmasq-rs` (test "dhcp_lease_file") generated 32 warnings (31 duplicates)
[INFO] [stderr] warning: `dnsmasq-rs` (test "dhcp_pxe_bootp") generated 37 warnings (37 duplicates)
[INFO] [stderr] warning: `dnsmasq-rs` (test "dhcp_relay") generated 39 warnings (36 duplicates)
[INFO] [stderr] warning: `dnsmasq-rs` (test "dhcp_tag_integration") generated 39 warnings (39 duplicates)
[INFO] [stderr] warning: `dnsmasq-rs` (test "dhcp_tagging") generated 39 warnings (37 duplicates) (run `cargo fix --test "dhcp_tagging" -p dnsmasq-rs` to apply 2 suggestions)
[INFO] [stderr] warning: `dnsmasq-rs` (test "dhcp_lease_timing") generated 32 warnings (32 duplicates)
[INFO] [stderr] warning: `dnsmasq-rs` (test "dhcp_options") generated 29 warnings (29 duplicates)
[INFO] [stderr] warning: associated items `new` and `implementation` are never used
[INFO] [stderr]    --> tests/common/test_env.rs:41:12
[INFO] [stderr]     |
[INFO] [stderr]  39 | impl DhcpTestEnv {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr]  40 |     /// Create a new test environment with a single subnet using reference dnsmasq.
[INFO] [stderr]  41 |     pub fn new() -> Option<Self> {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 367 |     pub fn implementation(&self) -> DhcpImplementation {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `is_truncated`, `recursion_available`, `authority_count`, and `additional_count` are never read
[INFO] [stderr]    --> tests/common/mod.rs:247:9
[INFO] [stderr]     |
[INFO] [stderr] 243 | pub struct DnsResponse {
[INFO] [stderr]     |            ----------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 247 |     pub is_truncated: bool,
[INFO] [stderr]     |         ^^^^^^^^^^^^
[INFO] [stderr] 248 |     pub recursion_desired: bool,
[INFO] [stderr] 249 |     pub recursion_available: bool,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 253 |     pub authority_count: u16,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^
[INFO] [stderr] 254 |     pub additional_count: u16,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `raw` is never used
[INFO] [stderr]    --> tests/common/mod.rs:300:12
[INFO] [stderr]     |
[INFO] [stderr] 258 | impl DnsResponse {
[INFO] [stderr]     | ---------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 300 |     pub fn raw(&self) -> &[u8] {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> tests/common/dhcp.rs:123:12
[INFO] [stderr]     |
[INFO] [stderr] 100 | impl DhcpPacketBuilder {
[INFO] [stderr]     | ---------------------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 123 |     pub fn xid(mut self, xid: u32) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 129 |     pub fn flags(mut self, flags: u16) -> Self {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 147 |     pub fn giaddr(mut self, addr: Ipv4Addr) -> Self {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 153 |     pub fn hops(mut self, hops: u8) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 165 |     pub fn sname(mut self, name: &str) -> Self {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 173 |     pub fn file(mut self, name: &str) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 214 |     pub fn client_id(mut self, id: &[u8]) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 222 |     pub fn client_id_from_mac(mut self, mac: [u8; 6]) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 252 |     pub fn option(mut self, code: u8, data: &[u8]) -> Self {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 319 |     pub fn renew(mac: [u8; 6], current_ip: Ipv4Addr) -> Vec<u8> {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `qtype` is never used
[INFO] [stderr]    --> tests/common/mod.rs:182:12
[INFO] [stderr]     |
[INFO] [stderr] 151 | impl DnsQueryBuilder {
[INFO] [stderr]     | -------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 182 |     pub fn qtype(mut self, qtype: u16) -> Self {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `dnsmasq-rs` (test "dns_behavior") generated 36 warnings (36 duplicates)
[INFO] [stderr] warning: `dnsmasq-rs` (test "dhcp_config_edge_cases") generated 32 warnings (31 duplicates)
[INFO] [stderr] warning: `dnsmasq-rs` (test "dns_server_integration") generated 38 warnings (36 duplicates)
[INFO] [stderr] warning: `dnsmasq-rs` (test "dhcp_server_integration") generated 39 warnings (38 duplicates)
[INFO] [stderr] warning: `dnsmasq-rs` (test "rfc_examples") generated 39 warnings (38 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.34s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/dnsmasq_rs-bea1345749bc8362)
[INFO] [stdout] 
[INFO] [stdout] running 434 tests
[INFO] [stdout] test cli::tests::test_addn_hosts_multiple ... ok
[INFO] [stdout] test cli::tests::test_bind_interfaces ... ok
[INFO] [stdout] test cli::tests::test_addn_hosts_single ... ok
[INFO] [stdout] test cli::tests::test_combined_flags ... ok
[INFO] [stdout] test cli::tests::test_dhcp_host ... ok
[INFO] [stdout] test cli::tests::test_conf_file_long ... ok
[INFO] [stdout] test cli::tests::test_conf_file_short ... ok
[INFO] [stdout] test cli::tests::test_default_values ... ok
[INFO] [stdout] test cli::tests::test_dhcp_option ... ok
[INFO] [stdout] test cli::tests::test_dhcp_range ... ok
[INFO] [stdout] test cli::tests::test_keep_in_foreground_long ... ok
[INFO] [stdout] test cli::tests::test_listen_address_short ... ok
[INFO] [stdout] test cli::tests::test_log_dhcp ... ok
[INFO] [stdout] test cli::tests::test_no_daemon_long ... ok
[INFO] [stdout] test cli::tests::test_no_daemon_short ... ok
[INFO] [stdout] test cli::tests::test_no_hosts_long ... ok
[INFO] [stdout] test cli::tests::test_no_resolv ... ok
[INFO] [stdout] test cli::tests::test_pid_file ... ok
[INFO] [stdout] test cli::tests::test_pid_file_empty ... ok
[INFO] [stdout] test cli::tests::test_dhcp_leasefile ... ok
[INFO] [stdout] test cli::tests::test_keep_in_foreground_short ... ok
[INFO] [stdout] test cli::tests::test_interface_long ... ok
[INFO] [stdout] test cli::tests::test_port_long ... ok
[INFO] [stdout] test config::dhcp::tests::test_make_fqdn_simple_hostname ... ok
[INFO] [stdout] test config::dhcp::tests::test_make_fqdn_no_domain ... ok
[INFO] [stdout] test cli::tests::test_port_short ... ok
[INFO] [stdout] test cli::tests::test_user_long ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_host_ignore ... ok
[INFO] [stdout] test cli::tests::test_user_short ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_host_mac_ip_hostname ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_host_with_client_id ... ok
[INFO] [stdout] test cli::tests::test_interface_short ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_host_mac_hostname_ip ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_host_mac_ip ... ok
[INFO] [stdout] test config::dhcp::tests::test_domain_for_ip_no_domain ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_host_mac_wildcard ... ok
[INFO] [stdout] test config::dhcp::tests::test_domain_for_ip_global ... ok
[INFO] [stdout] test config::dhcp::tests::test_make_fqdn_already_qualified ... ok
[INFO] [stdout] test config::dhcp::tests::test_make_fqdn_per_subnet ... ok
[INFO] [stdout] test cli::tests::test_listen_address_long ... ok
[INFO] [stdout] test cli::tests::test_no_hosts_short ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_host_with_lease_time ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_host_with_set_tag ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_host_with_match_tag ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_encap ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_force ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_force_with_tag ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_named_ntp_server ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_named_router ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_named_domain_name ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_hex_value ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_named_aliases ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_named_dns_server ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_multiple_ips ... ok
[INFO] [stdout] test config::dhcp::tests::test_domain_for_ip_per_subnet ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_host_hostname_match ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_named_with_tag ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_string_value ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_unknown_name ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_with_tag ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_range_basic ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_range_invalid_end ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_range_multiple_set_tags ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_range_start_greater_than_end ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_range_static_mode ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_range_static_with_netmask ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_range_with_multiple_match_tags ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_named_suppress ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_range_with_set_and_match_tags ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_range_with_all_parameters ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_range_with_lease_time ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_number_value ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_suppress ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_vi_encap ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_range_invalid_start ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_range_proxy_mode ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_range_with_netmask ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_range_missing_end ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_range_with_netmask_and_broadcast ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_domain_global ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_domain_invalid_prefix_length ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_domain_invalid_subnet ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_domain_multiple_subnets ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_lease_time_days ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_lease_time_hours ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_lease_time_seconds ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_lease_time_invalid ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_lease_time_infinite ... ok
[INFO] [stdout] test config::dhcp::tests::test_validate_client_fqdn_global_domain ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_lease_time_minutes ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_domain_with_subnet_cidr ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_range_with_set_tag ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_vendor_no_class ... ok
[INFO] [stdout] test config::dhcp::tests::test_subnet_contains_ip ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_domain_empty ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_lease_time_weeks ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_option_vendor_with_class ... ok
[INFO] [stdout] test config::dhcp::tests::test_validate_client_fqdn_exact_match ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_dhcp_range_with_match_tag ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_domain_with_local_flag ... ok
[INFO] [stdout] test config::dhcp::tests::test_parse_domain_with_subnet_single_ip ... ok
[INFO] [stdout] test config::dhcp::tests::test_validate_client_fqdn_no_domain ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_address_null_address ... ok
[INFO] [stdout] test config::dhcp::tests::test_validate_client_fqdn_per_subnet ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_addn_hosts_basic ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_addn_hosts_empty ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_addn_hosts_multiple ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_address_basic_ipv6 ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_behavioral_test_config ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_blank_lines ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_address_empty ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_address_missing_leading_slash ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_address_multiple_domains ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_address_nxdomain ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_address_with_spaces ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_addn_hosts_relative_path ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_address_basic_ipv4 ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_comment_lines ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_default_behavior_control ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_default_dhcp_authoritative ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_fqdn_flag ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_default_dhcp_ignore_names ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_default_dhcp_ttl ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_authoritative_flag ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_broadcast_single_tag ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_catch_all_domain ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_default_dhcp_fqdn ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_broadcast_multiple_tags ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_fqdn_with_domain ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_generate_names_multiple_tags ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_generate_names_single_tag ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_hostsdir ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_hostsfile ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_host_directive ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_ignore_names_flag ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_ignore_multiple_directives ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_ignore_names_with_value ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_ignore_single_tag ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_ignore_names_negation ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_leasefile_empty ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_leasefile_basic ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_leasefile_relative_path ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_leasefile_default_none ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_leasefile_tmp ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_option_directive ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_ignore_multiple_tags ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_ttl ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_range_directive ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_ttl_zero ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_optsdir ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_domain_global_sets_both ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_domain_with_hyphen ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_option_force_directive ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_domain_basic ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_domain_empty ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_optsfile ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_escaped_characters ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_expand_hosts_default_false ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_expand_hosts_flag ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_domain_with_subnet ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_full_config ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_domain_with_local_flag ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_domain_with_local ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_dhcp_ttl_invalid ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_domain_with_range ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_host_record_missing_ip ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_host_record_multiple_names ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_host_record_basic_ipv4 ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_host_record_with_ttl ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_host_record_basic_ipv6 ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_inline_comments_not_supported ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_leading_whitespace ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_no_hosts_default_false ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_host_record_no_name ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_quoted_values ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_read_ethers_flag ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_host_record_with_ttl_dualstack ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_multiple_dhcp_external_files ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_unrecognized_flag_directive ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_multiple_per_subnet_domains ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_userclass_basic ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_host_record_dual_stack ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_read_ethers_with_path ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_vendorclass_basic ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_userclass_multiple ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_userclass_missing_pattern ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_no_hosts_flag ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_unrecognized_directive_warning ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_subdomain_in_address ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_userclass_missing_set ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_trailing_whitespace ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_vendorclass_empty_tag ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_vendorclass_missing_pattern ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_vendorclass_missing_set ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_vendorclass_multiple ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_vendorclass_pattern_with_comma ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_basic_ipv4 ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_comment_after_blank ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_blank_lines ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_comment_lines ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_dualstack_host ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_empty_content ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_inline_comment_multiple_names ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_inline_comment ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_ipv6_full ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_ipv6_loopback ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_leading_whitespace ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_vendorclass_pxe_pattern ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_vendorclass_with_enterprise ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_ip_only_line_skipped ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_malformed_ip_error ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_malformed_ip_with_context ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_multiple_aliases ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_multiple_entries ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_only_comments ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_tabs_as_separator ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_trailing_whitespace ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_whitespace_only_lines ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_very_long_line ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_mixed_whitespace ... ok
[INFO] [stdout] test config::loader::tests::test_load_empty_args_no_etc_hosts ... ok
[INFO] [stdout] test config::hosts::tests::test_parse_ipv6_link_local ... ok
[INFO] [stdout] test config::loader::tests::test_no_hosts_cli_flag ... ok
[INFO] [stdout] test config::loader::tests::test_missing_config_file_error ... ok
[INFO] [stdout] test config::loader::tests::test_missing_hosts_file_error ... ok
[INFO] [stdout] test dhcp::lease::tests::test_lease_infinite ... ok
[INFO] [stdout] test dhcp::lease::tests::test_lease_manager_create ... ok
[INFO] [stdout] test config::loader::tests::test_load_config_file_with_addn_hosts ... ok
[INFO] [stdout] test config::loader::tests::test_cli_addn_hosts_and_config_addn_hosts ... ok
[INFO] [stdout] test dhcp::lease::tests::test_lease_manager_lookup_by_client_id ... ok
[INFO] [stdout] test dhcp::lease::tests::test_lease_manager_lookup_by_mac ... ok
[INFO] [stdout] test dhcp::lease::tests::test_lease_manager_release ... ok
[INFO] [stdout] test dhcp::lease::tests::test_lease_manager_release_nonexistent ... ok
[INFO] [stdout] test config::loader::tests::test_load_config_file_with_host_records ... ok
[INFO] [stdout] test dhcp::lease::tests::test_lease_manager_renew_nonexistent ... ok
[INFO] [stdout] test dhcp::lease::tests::test_lease_manager_replace_client_id ... ok
[INFO] [stdout] test config::loader::tests::test_load_config_file_with_address_wildcards ... ok
[INFO] [stdout] test dhcp::lease::tests::test_lease_manager_replace_mac ... ok
[INFO] [stdout] test config::loader::tests::test_expand_hosts_appends_domain ... ok
[INFO] [stdout] test config::loader::tests::test_load_multiple_hosts_files ... ok
[INFO] [stdout] test config::loader::tests::test_expand_hosts_without_domain ... ok
[INFO] [stdout] test config::loader::tests::test_load_single_hosts_file ... ok
[INFO] [stdout] test config::loader::tests::test_malformed_hosts_file_error ... ok
[INFO] [stdout] test dhcp::lease::tests::test_lease_new ... ok
[INFO] [stdout] test config::loader::tests::test_multiple_sources_merge ... ok
[INFO] [stdout] test config::loader::tests::test_registry_counts_correct ... ok
[INFO] [stdout] test config::loader::tests::test_no_hosts_config_directive ... ok
[INFO] [stdout] test dhcp::lease_file::tests::test_format_client_id ... ok
[INFO] [stdout] test dhcp::lease_file::tests::test_format_mac_address ... ok
[INFO] [stdout] test dhcp::lease_file::tests::test_read_nonexistent_lease_file ... ok
[INFO] [stdout] test dhcp::lease_file::tests::test_parse_client_id ... ok
[INFO] [stdout] test dhcp::lease_file::tests::test_parse_mac_address ... ok
[INFO] [stdout] test dhcp::lease_file::tests::test_read_empty_lease_file ... ok
[INFO] [stdout] test dhcp::lease_file::tests::test_atomic_write ... ok
[INFO] [stdout] test dhcp::lease_file::tests::test_read_write_infinite_lease ... ok
[INFO] [stdout] test dhcp::lease_file::tests::test_read_expired_lease_skipped ... ok
[INFO] [stdout] test dhcp::lease_file::tests::test_read_malformed_line ... ok
[INFO] [stdout] test dhcp::lease_file::tests::test_read_write_multiple_leases ... ok
[INFO] [stdout] test dhcp::lease_file::tests::test_read_write_no_hostname ... ok
[INFO] [stdout] test dhcp::packet::tests::test_parse_request_from_fixture ... ok
[INFO] [stdout] test dhcp::packet::tests::test_parse_with_client_id ... ok
[INFO] [stdout] test dhcp::packet::tests::test_parse_with_message_type ... ok
[INFO] [stdout] test dhcp::packet::tests::test_parse_with_hostname ... ok
[INFO] [stdout] test dhcp::packet::tests::test_parse_discover_from_fixture ... ok
[INFO] [stdout] test dhcp::packet::tests::test_parse_invalid_magic_cookie ... ok
[INFO] [stdout] test dhcp::packet::tests::test_parse_with_multiple_options ... ok
[INFO] [stdout] test dhcp::packet::tests::test_parse_with_pad_options ... ok
[INFO] [stdout] test dhcp::packet::tests::test_parse_with_parameter_request_list ... ok
[INFO] [stdout] test dhcp::packet::tests::test_parse_with_server_id ... ok
[INFO] [stdout] test dhcp::packet::tests::test_parse_with_requested_ip ... ok
[INFO] [stdout] test dhcp::pool::tests::test_allocate_first_available ... ok
[INFO] [stdout] test dhcp::pool::tests::test_allocate_different_macs ... ok
[INFO] [stdout] test dhcp::pool::tests::test_allocate_requested_ip ... ok
[INFO] [stdout] test dhcp::pool::tests::test_is_available ... ok
[INFO] [stdout] test dhcp::pool::tests::test_pool_creation ... ok
[INFO] [stdout] test dhcp::pool::tests::test_allocate_same_mac_same_ip ... ok
[INFO] [stdout] test dhcp::pool::tests::test_pool_exhaustion ... ok
[INFO] [stdout] test dhcp::pool::tests::test_in_subnet ... ok
[INFO] [stdout] test dhcp::pool::tests::test_release ... ok
[INFO] [stdout] test dhcp::pool::tests::test_static_host_preserves_allocation ... ok
[INFO] [stdout] test dhcp::pool_manager::tests::test_find_static_host_different_subnet ... ok
[INFO] [stdout] test dhcp::pool::tests::test_static_host_already_allocated ... ok
[INFO] [stdout] test dhcp::lease_file::tests::test_read_write_single_lease ... ok
[INFO] [stdout] test dhcp::packet::tests::test_message_type_conversion ... ok
[INFO] [stdout] test dhcp::packet::tests::test_parse_minimal_packet ... ok
[INFO] [stdout] test dhcp::packet::tests::test_parse_packet_too_short ... ok
[INFO] [stdout] test dhcp::packet::tests::test_parse_truncated_option ... ok
[INFO] [stdout] test dhcp::lease::tests::test_lease_manager_infinite_lease ... ok
[INFO] [stdout] test dhcp::lease::tests::test_lease_manager_renew ... ok
[INFO] [stdout] test dhcp::pool_manager::tests::test_multi_subnet_static_host_selection ... ok
[INFO] [stdout] test dhcp::pool_manager::tests::test_select_pool_by_interface ... ok
[INFO] [stdout] test dhcp::pool::tests::test_static_host_assignment ... ok
[INFO] [stdout] test dhcp::response::tests::test_build_ack_basic ... ok
[INFO] [stdout] test dhcp::response::tests::test_build_offer_basic ... ok
[INFO] [stdout] test dhcp::response::tests::test_build_nak_basic ... ok
[INFO] [stdout] test dhcp::response::tests::test_encode_vendor_options_empty ... ok
[INFO] [stdout] test dhcp::pool_manager::tests::test_find_static_host_same_subnet ... ok
[INFO] [stdout] test dhcp::response::tests::test_encode_vendor_options_hex_data ... ok
[INFO] [stdout] test dhcp::pool::tests::test_reserve ... ok
[INFO] [stdout] test dhcp::pool_manager::tests::test_select_pool_by_giaddr ... ok
[INFO] [stdout] test dhcp::response::tests::test_serialize_ack ... ok
[INFO] [stdout] test dhcp::response::tests::test_encode_vendor_options_multiple ... ok
[INFO] [stdout] test dhcp::response::tests::test_encode_vendor_options_single ... ok
[INFO] [stdout] test dhcp::response::tests::test_encode_vendor_options_zero_length ... ok
[INFO] [stdout] test dhcp::response::tests::test_encode_vi_vendor_options_basic ... ok
[INFO] [stdout] test dhcp::response::tests::test_serialize_nak ... ok
[INFO] [stdout] test dhcp::response::tests::test_encode_vi_vendor_options_microsoft ... ok
[INFO] [stdout] test dhcp::response::tests::test_encode_vi_vendor_options_multiple_suboptions ... ok
[INFO] [stdout] test dhcp::response::tests::test_offer_without_optional_options ... ok
[INFO] [stdout] test dhcp::response::tests::test_response_copies_request_fields ... ok
[INFO] [stdout] test dhcp::response::tests::test_serialize_offer ... ok
[INFO] [stdout] test dhcp::response::tests::test_response_preserves_ciaddr ... ok
[INFO] [stdout] test dhcp::response::tests::test_serialize_with_subnet_mask ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_apply_host_tags_client_id_match ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_apply_host_tags_hostname_match ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_apply_host_tags_mac_match ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_apply_known_othernet_tag ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_apply_known_othernet_tag_same_subnet ... ok
[INFO] [stdout] test dhcp::response::tests::test_response_preserves_giaddr ... ok
[INFO] [stdout] test dhcp::server::tests::test_extract_mac ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_apply_user_class_tags_no_match ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_apply_user_class_tags_no_user_class ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_apply_user_class_tags_exact_match ... ok
[INFO] [stdout] test dhcp::server::tests::test_is_ip_in_range ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_apply_host_tags_no_match ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_apply_host_tags_wildcard_mac ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_apply_vendor_class_tags_exact_match ... ok
[INFO] [stdout] test dhcp::response::tests::test_serialize_with_router ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_apply_vendor_class_tags_multiple_matches ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_apply_user_class_tags_substring_match ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_apply_vendor_class_tags_no_match ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_apply_vendor_class_tags_substring_match ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_mac_matches_exact ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_apply_vendor_class_tags_no_vendor_class ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_apply_range_tags ... ok
[INFO] [stdout] test dhcp::tags::tests::test_add_multiple ... ok
[INFO] [stdout] test dhcp::tags::tests::test_add ... ok
[INFO] [stdout] test dhcp::tags::tests::test_built_in_known_othernet_tag ... ok
[INFO] [stdout] test dhcp::tags::tests::test_matches_empty_match_list ... ok
[INFO] [stdout] test dhcp::tags::tests::test_has ... ok
[INFO] [stdout] test dhcp::tags::tests::test_matches_multiple_and ... ok
[INFO] [stdout] test dhcp::tags::tests::test_from_vec ... ok
[INFO] [stdout] test dhcp::tags::tests::test_built_in_known_tag ... ok
[INFO] [stdout] test dhcp::tag_helpers::tests::test_mac_matches_wildcard ... ok
[INFO] [stdout] test dhcp::tags::tests::test_matches_single_negative ... ok
[INFO] [stdout] test dhcp::tags::tests::test_iter ... ok
[INFO] [stdout] test dhcp::tags::tests::test_matches_empty_tagset ... ok
[INFO] [stdout] test dhcp::tags::tests::test_matches_single_positive ... ok
[INFO] [stdout] test dhcp::tags::tests::test_from_iter ... ok
[INFO] [stdout] test dhcp::tags::tests::test_new ... ok
[INFO] [stdout] test dhcp::tags::tests::test_remove ... ok
[INFO] [stdout] test dns::response::tests::test_response_copies_rd_flag_false ... ok
[INFO] [stdout] test dhcp::tags::tests::test_add_duplicate ... ok
[INFO] [stdout] test dns::response::tests::test_response_copies_rd_flag_true ... ok
[INFO] [stdout] test dhcp::tags::tests::test_matches_mixed_positive_negative ... ok
[INFO] [stdout] test dns::response::tests::test_build_a_response ... ok
[INFO] [stdout] test dns::response::tests::test_build_aaaa_response ... ok
[INFO] [stdout] test dhcp::response::tests::test_serialize_with_lease_time ... ok
[INFO] [stdout] test dhcp::response::tests::test_serialize_with_multiple_dns_servers ... ok
[INFO] [stdout] test dns::response::tests::test_build_nxdomain_response ... ok
[INFO] [stdout] test dns::response::tests::test_create_a_record_with_custom_ttl ... ok
[INFO] [stdout] test dns::response::tests::test_create_aaaa_record_with_custom_ttl ... ok
[INFO] [stdout] test dns::response::tests::test_response_header_flags ... ok
[INFO] [stdout] test dns::server::tests::test_bind_random_port ... ok
[INFO] [stdout] test dns::response::tests::test_serialize_response ... ok
[INFO] [stdout] test dns::server::tests::test_exact_host_preferred_over_wildcard ... ok
[INFO] [stdout] test dns::server::tests::test_handle_a_query_dual_stack_host ... ok
[INFO] [stdout] test dns::tests::test_extract_query_name_type_class ... ok
[INFO] [stdout] test dns::server::tests::test_handle_a_query_found ... ok
[INFO] [stdout] test dns::tests::test_parse_header_only ... ok
[INFO] [stdout] test dns::server::tests::test_handle_a_query_not_found ... ok
[INFO] [stdout] test dns::tests::test_parse_truncated_packet ... ok
[INFO] [stdout] test dns::server::tests::test_handle_aaaa_query_dual_stack_host ... ok
[INFO] [stdout] test dns::server::tests::test_handle_aaaa_query_found ... ok
[INFO] [stdout] test dns::server::tests::test_handle_aaaa_query_not_found ... ok
[INFO] [stdout] test dns::server::tests::test_handle_query_case_insensitive ... ok
[INFO] [stdout] test dns::server::tests::test_handle_unsupported_query_type ... ok
[INFO] [stdout] test registry::tests::test_add_dhcp_host ... ok
[INFO] [stdout] test dns::server::tests::test_handle_wildcard_match ... ok
[INFO] [stdout] test registry::tests::test_add_host_dual_stack ... ok
[INFO] [stdout] test registry::tests::test_add_host_ipv4 ... ok
[INFO] [stdout] test registry::tests::test_add_host_ipv6 ... ok
[INFO] [stdout] test registry::tests::test_add_hosts_entries_merges_with_existing ... ok
[INFO] [stdout] test registry::tests::test_add_host_does_not_overwrite_first ... ok
[INFO] [stdout] test registry::tests::test_add_wildcard_nxdomain ... ok
[INFO] [stdout] test registry::tests::test_add_hosts_entries ... ok
[INFO] [stdout] test registry::tests::test_add_wildcard_with_ip ... ok
[INFO] [stdout] test registry::tests::test_dhcp_host_case_insensitive ... ok
[INFO] [stdout] test dns::server::tests::test_handle_wildcard_nxdomain ... ok
[INFO] [stdout] test dns::tests::test_parse_empty_packet ... ok
[INFO] [stdout] test dns::tests::test_parse_valid_a_query ... ok
[INFO] [stdout] test dns::tests::test_parse_valid_aaaa_query ... ok
[INFO] [stdout] test registry::tests::test_duplicate_entries ... ok
[INFO] [stdout] test registry::tests::test_empty_registry ... ok
[INFO] [stdout] test registry::tests::test_exact_host_preferred_documentation ... ok
[INFO] [stdout] test registry::tests::test_expand_hosts_case_insensitive ... ok
[INFO] [stdout] test registry::tests::test_expand_hosts_does_not_overwrite_existing ... ok
[INFO] [stdout] test registry::tests::test_expand_hosts_preserves_ips ... ok
[INFO] [stdout] test registry::tests::test_expand_hosts_simple_names ... ok
[INFO] [stdout] test registry::tests::test_expand_hosts_skips_fqdn ... ok
[INFO] [stdout] test registry::tests::test_from_hosts_entries_dual_stack ... ok
[INFO] [stdout] test registry::tests::test_conflicting_wildcards ... ok
[INFO] [stdout] test registry::tests::test_host_record_merge ... ok
[INFO] [stdout] test registry::tests::test_from_hosts_entries_single ... ok
[INFO] [stdout] test config::dnsmasq::tests::test_userclass_engineering ... ok
[INFO] [stdout] test registry::tests::test_host_record_with_both ... ok
[INFO] [stdout] test registry::tests::test_host_record_new ... ok
[INFO] [stdout] test registry::tests::test_from_hosts_entries_empty ... ok
[INFO] [stdout] test registry::tests::test_from_hosts_entries_multiple_names ... ok
[INFO] [stdout] test registry::tests::test_lookup_not_found ... ok
[INFO] [stdout] test registry::tests::test_lookup_case_insensitive ... ok
[INFO] [stdout] test registry::tests::test_host_record_with_ipv4 ... ok
[INFO] [stdout] test registry::tests::test_host_record_with_ipv6 ... ok
[INFO] [stdout] test registry::tests::test_host_count_and_wildcard_count ... ok
[INFO] [stdout] test registry::tests::test_host_record_merge_does_not_overwrite ... ok
[INFO] [stdout] test registry::tests::test_merge_dnsmasq_config_host_records ... ok
[INFO] [stdout] test registry::tests::test_remove_dhcp_host ... ok
[INFO] [stdout] test registry::tests::test_update_dhcp_host_name_change ... ok
[INFO] [stdout] test registry::tests::test_remove_dhcp_host_case_insensitive ... ok
[INFO] [stdout] test registry::tests::test_wildcard_catch_all ... ok
[INFO] [stdout] test registry::tests::test_update_dhcp_host_same_name ... ok
[INFO] [stdout] test registry::tests::test_wildcard_no_partial_match ... ok
[INFO] [stdout] test registry::tests::test_wildcard_nested_subdomain_match ... ok
[INFO] [stdout] test registry::tests::test_merge_dnsmasq_config_address_mappings ... ok
[INFO] [stdout] test registry::tests::test_wildcard_subdomain_match ... ok
[INFO] [stdout] test registry::tests::test_wildcard_no_match ... ok
[INFO] [stdout] test registry::tests::test_merge_dnsmasq_config_combined ... ok
[INFO] [stdout] test registry::tests::test_wildcard_first_match_wins ... ok
[INFO] [stdout] test registry::tests::test_wildcard_exact_match ... ok
[INFO] [stdout] test registry::tests::test_wildcard_case_insensitive ... ok
[INFO] [stdout] test dns::server::tests::test_bind_error_invalid_port ... FAILED
[INFO] [stdout] test dns::server::tests::test_server_round_trip ... ok
[INFO] [stdout] test dhcp::lease::tests::test_lease_manager_expire_leases ... ok
[INFO] [stdout] test dhcp::lease::tests::test_lease_expiry ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- dns::server::tests::test_bind_error_invalid_port stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'dns::server::tests::test_bind_error_invalid_port' (393) panicked at src/dns/server.rs:322:13:
[INFO] [stdout] assertion failed: result.is_err()
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5dca4d3f9ee2 - std::backtrace_rs::backtrace::libunwind::trace::hff358a60abf734fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5dca4d3f9ee2 - std::backtrace_rs::backtrace::trace_unsynchronized::h3b121f916dd95ec6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5dca4d3f9ee2 - std::sys::backtrace::_print_fmt::hde0a62ded68798e9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5dca4d3f9ee2 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h93773fc827e3113d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5dca4d40b85a - core::fmt::rt::Argument::fmt::h01eff69902dad97f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5dca4d40b85a - core::fmt::write::hed7b5c73d82ecb7c
[INFO] [stdout]    6:     0x5dca4d3c62f6 - std::io::default_write_fmt::h2f696ff5b8bbaa4b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5dca4d3c62f6 - std::io::Write::write_fmt::h5e66814db8a9cfce
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x5dca4d3d8c99 - std::sys::backtrace::BacktraceLock::print::h8b1d6fcc5a56d1a3
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5dca4d3d8c99 - std::panicking::default_hook::{{closure}}::h2be84df4f189ae36
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5dca4d3d8b31 - std::panicking::default_hook::hf0ea8939246f43a9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5dca4d1f717e - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h02d35e3888986252
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x5dca4d1f717e - test::test_main_with_exit_callback::{{closure}}::h939640a27d647173
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x5dca4d3d8fc2 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc9df09ff391af3e7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x5dca4d3d8fc2 - std::panicking::panic_with_hook::hb4bd9ac1123582a0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5dca4d3d8d8a - std::panicking::panic_handler::{{closure}}::hde00dd15f5637fe2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x5dca4d3d3b39 - std::sys::backtrace::__rust_end_short_backtrace::hb72197fa777c1785
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5dca4d3b9e6d - __rustc[4425a7e20b4c8619]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5dca4d41459c - core::panicking::panic_fmt::ha59b517dd231f4da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5dca4d414562 - core::panicking::panic::hbff2745fd4c5afec
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x5dca4d14d4dd - dnsmasq_rs::dns::server::tests::test_bind_error_invalid_port::{{closure}}::h57535f393633ed5a
[INFO] [stdout]                                at /opt/rustwide/workdir/src/dns/server.rs:322:13
[INFO] [stdout]   21:     0x5dca4d1bbf85 - async_io::driver::block_on::{{closure}}::ha5eec9e137267b37
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/async-io-2.6.0/src/driver.rs:204:53
[INFO] [stdout]   22:     0x5dca4d18ae4d - std::thread::local::LocalKey<T>::try_with::h52ac82990234efb9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:513:12
[INFO] [stdout]   23:     0x5dca4d1885ee - std::thread::local::LocalKey<T>::with::hb934e5aa30166fd2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:477:20
[INFO] [stdout]   24:     0x5dca4d1b5363 - async_io::driver::block_on::h499895a785e0f275
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/async-io-2.6.0/src/driver.rs:180:11
[INFO] [stdout]   25:     0x5dca4d14d0a9 - dnsmasq_rs::dns::server::tests::test_bind_error_invalid_port::hd22e03b1ec56dfc3
[INFO] [stdout]                                at /opt/rustwide/workdir/src/dns/server.rs:316:9
[INFO] [stdout]   26:     0x5dca4d14d0d7 - dnsmasq_rs::dns::server::tests::test_bind_error_invalid_port::{{closure}}::h46074be59d5da7b0
[INFO] [stdout]                                at /opt/rustwide/workdir/src/dns/server.rs:315:38
[INFO] [stdout]   27:     0x5dca4d0eb096 - core::ops::function::FnOnce::call_once::h1b77dc713a703080
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   28:     0x5dca4d1f6f3b - core::ops::function::FnOnce::call_once::hddb3cd395c36bfbb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   29:     0x5dca4d1f6f3b - test::__rust_begin_short_backtrace::h0b6a7601d9750bfa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:663:18
[INFO] [stdout]   30:     0x5dca4d20a94a - test::run_test_in_process::{{closure}}::h444209903f00b347
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:74
[INFO] [stdout]   31:     0x5dca4d20a94a - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfb3ba8f46e537649
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   32:     0x5dca4d20a94a - std::panicking::catch_unwind::do_call::h1672a45911fcf9dc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   33:     0x5dca4d20a94a - std::panicking::catch_unwind::h0fadaee22787a6dd
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   34:     0x5dca4d20a94a - std::panic::catch_unwind::hc47ad190f2c8e188
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   35:     0x5dca4d20a94a - test::run_test_in_process::hcd7faaf934f29999
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:27
[INFO] [stdout]   36:     0x5dca4d20a94a - test::run_test::{{closure}}::hddc4550da4871867
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:607:43
[INFO] [stdout]   37:     0x5dca4d1e4da4 - test::run_test::{{closure}}::h98ae26689f13ed94
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:637:41
[INFO] [stdout]   38:     0x5dca4d1e4da4 - std::sys::backtrace::__rust_begin_short_backtrace::h3ec4d1f21ad44588
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   39:     0x5dca4d1e8742 - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::hd8bf2c73d479939f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   40:     0x5dca4d1e8742 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h3b4248f358af2491
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   41:     0x5dca4d1e8742 - std::panicking::catch_unwind::do_call::hda10a64f4b8daebe
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   42:     0x5dca4d1e8742 - std::panicking::catch_unwind::h659e5ee8336ec8c7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   43:     0x5dca4d1e8742 - std::panic::catch_unwind::h9d4d66a538912c18
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   44:     0x5dca4d1e8742 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h7557906bb51d79f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   45:     0x5dca4d1e8742 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9e460d1d7fc83d35
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   46:     0x5dca4d3cec6f - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61282da819d64ea9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   47:     0x5dca4d3cec6f - std::sys::thread::unix::Thread::new::thread_start::h982f9ea829d1b5fb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   48:     0x7cbc6e445aa4 - <unknown>
[INFO] [stdout]   49:     0x7cbc6e4d2a64 - clone
[INFO] [stdout]   50:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     dns::server::tests::test_bind_error_invalid_port
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 433 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.39s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "6ca36f2bc98a52f545ff8b8c56c047f0f4821f967b9228b2b6064890f9b65cde", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6ca36f2bc98a52f545ff8b8c56c047f0f4821f967b9228b2b6064890f9b65cde", kill_on_drop: false }`
[INFO] [stdout] 6ca36f2bc98a52f545ff8b8c56c047f0f4821f967b9228b2b6064890f9b65cde
