[INFO] cloning repository https://github.com/gucoi/fowarder [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/gucoi/fowarder" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgucoi%2Ffowarder", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgucoi%2Ffowarder'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 941c8f2c1d2be37ad8eb8b3d060bcfa092a4bfcc [INFO] checking gucoi/fowarder against master#ba412a6e70ac84641be7764d088acabd0eb3fa39 for pr-145457 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgucoi%2Ffowarder" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/gucoi/fowarder [INFO] finished tweaking git repo https://github.com/gucoi/fowarder [INFO] tweaked toml for git repo https://github.com/gucoi/fowarder written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/gucoi/fowarder on toolchain ba412a6e70ac84641be7764d088acabd0eb3fa39 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ba412a6e70ac84641be7764d088acabd0eb3fa39" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/gucoi/fowarder 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" "+ba412a6e70ac84641be7764d088acabd0eb3fa39" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded dircpy v0.3.19 [INFO] [stderr] Downloaded zmq-sys v0.12.0 [INFO] [stderr] Downloaded zmq v0.10.0 [INFO] [stderr] Downloaded pcap v1.3.0 [INFO] [stderr] Downloaded zeromq-src v0.2.6+4.3.4 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+ba412a6e70ac84641be7764d088acabd0eb3fa39" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] d42404203e7aa50deff64807ec178095c2b75ec0f8ca0aff0f9ca7729da35967 [INFO] running `Command { std: "docker" "start" "-a" "d42404203e7aa50deff64807ec178095c2b75ec0f8ca0aff0f9ca7729da35967", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "d42404203e7aa50deff64807ec178095c2b75ec0f8ca0aff0f9ca7729da35967", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d42404203e7aa50deff64807ec178095c2b75ec0f8ca0aff0f9ca7729da35967", kill_on_drop: false }` [INFO] [stdout] d42404203e7aa50deff64807ec178095c2b75ec0f8ca0aff0f9ca7729da35967 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+ba412a6e70ac84641be7764d088acabd0eb3fa39" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] bd13f5eef8d56680b082513356560b63b2cb0da8da5b2ec91dcddeda0693e72a [INFO] running `Command { std: "docker" "start" "-a" "bd13f5eef8d56680b082513356560b63b2cb0da8da5b2ec91dcddeda0693e72a", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.94 [INFO] [stderr] Compiling unicode-ident v1.0.18 [INFO] [stderr] Compiling libc v0.2.171 [INFO] [stderr] Compiling autocfg v1.4.0 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling memchr v2.7.4 [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Checking cfg-if v1.0.0 [INFO] [stderr] Compiling rayon-core v1.12.1 [INFO] [stderr] Compiling thiserror v2.0.12 [INFO] [stderr] Compiling target-lexicon v0.12.16 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling pkg-config v0.3.32 [INFO] [stderr] Compiling hashbrown v0.15.2 [INFO] [stderr] Compiling regex-syntax v0.8.5 [INFO] [stderr] Compiling equivalent v1.0.2 [INFO] [stderr] Compiling same-file v1.0.6 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Compiling winnow v0.7.4 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling walkdir v2.5.0 [INFO] [stderr] Compiling log v0.4.26 [INFO] [stderr] Compiling shlex v1.3.0 [INFO] [stderr] Checking pin-project-lite v0.2.16 [INFO] [stderr] Compiling crossbeam-epoch v0.9.18 [INFO] [stderr] Compiling crossbeam-queue v0.3.12 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Compiling crossbeam-channel v0.5.14 [INFO] [stderr] Compiling crossbeam-deque v0.8.6 [INFO] [stderr] Compiling syn v2.0.100 [INFO] [stderr] Compiling aho-corasick v1.1.3 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Compiling smallvec v1.14.0 [INFO] [stderr] Checking futures-core v0.3.31 [INFO] [stderr] Compiling lock_api v0.4.12 [INFO] [stderr] Checking no-std-net v0.6.0 [INFO] [stderr] Compiling version-compare v0.2.0 [INFO] [stderr] Compiling ucd-trie v0.1.7 [INFO] [stderr] Compiling cfg-expr v0.15.8 [INFO] [stderr] Compiling parking_lot_core v0.9.10 [INFO] [stderr] Compiling ahash v0.7.8 [INFO] [stderr] Compiling indexmap v2.8.0 [INFO] [stderr] Compiling crossbeam v0.8.4 [INFO] [stderr] Checking pnet_base v0.33.0 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Checking once_cell v1.21.1 [INFO] [stderr] Checking scopeguard v1.2.0 [INFO] [stderr] Compiling rayon v1.10.0 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling jobserver v0.1.32 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Checking utf8parse v0.2.2 [INFO] [stderr] Checking bitflags v1.3.2 [INFO] [stderr] Checking futures-sink v0.3.31 [INFO] [stderr] Compiling cc v1.2.16 [INFO] [stderr] Checking futures-channel v0.3.31 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Checking anstyle-parse v0.2.6 [INFO] [stderr] Checking hashbrown v0.12.3 [INFO] [stderr] Checking signal-hook-registry v1.4.2 [INFO] [stderr] Checking socket2 v0.5.9 [INFO] [stderr] Checking pnet_sys v0.33.0 [INFO] [stderr] Checking mio v1.0.3 [INFO] [stderr] Checking pnet_macros_support v0.33.0 [INFO] [stderr] Compiling libloading v0.6.7 [INFO] [stderr] Checking bytes v1.10.1 [INFO] [stderr] Checking anstyle-query v1.1.2 [INFO] [stderr] Checking futures-task v0.3.31 [INFO] [stderr] Checking colorchoice v1.0.3 [INFO] [stderr] Checking ryu v1.0.20 [INFO] [stderr] Checking futures-io v0.3.31 [INFO] [stderr] Checking pin-utils v0.1.0 [INFO] [stderr] Checking anstyle v1.0.10 [INFO] [stderr] Checking dlv-list v0.3.0 [INFO] [stderr] Checking itoa v1.0.15 [INFO] [stderr] Checking is_terminal_polyfill v1.70.1 [INFO] [stderr] Compiling serde_json v1.0.140 [INFO] [stderr] Checking clap_lex v0.7.4 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Checking anstream v0.6.18 [INFO] [stderr] Compiling jwalk v0.8.1 [INFO] [stderr] Checking ordered-multimap v0.4.3 [INFO] [stderr] Compiling anyhow v1.0.97 [INFO] [stderr] Compiling zmq v0.10.0 [INFO] [stderr] Checking predicates-core v1.0.9 [INFO] [stderr] Checking minimal-lexical v0.2.1 [INFO] [stderr] Compiling regex-automata v0.4.9 [INFO] [stderr] Checking linked-hash-map v0.5.6 [INFO] [stderr] Checking lazy_static v1.5.0 [INFO] [stderr] Checking strsim v0.11.1 [INFO] [stderr] Compiling pnet v0.33.0 [INFO] [stderr] Checking base64 v0.13.1 [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Checking yaml-rust v0.4.5 [INFO] [stderr] Checking itertools v0.10.5 [INFO] [stderr] Checking clap_builder v4.5.32 [INFO] [stderr] Checking is-terminal v0.4.16 [INFO] [stderr] Checking errno v0.2.8 [INFO] [stderr] Checking normalize-line-endings v0.3.0 [INFO] [stderr] Compiling dircpy v0.3.19 [INFO] [stderr] Checking rust-ini v0.18.0 [INFO] [stderr] Checking float-cmp v0.9.0 [INFO] [stderr] Checking termcolor v1.4.1 [INFO] [stderr] Checking unsafe-libyaml v0.2.11 [INFO] [stderr] Checking termtree v0.5.1 [INFO] [stderr] Checking arrayvec v0.7.6 [INFO] [stderr] Checking difflib v0.4.0 [INFO] [stderr] Checking humantime v2.2.0 [INFO] [stderr] Checking pathdiff v0.2.3 [INFO] [stderr] Checking predicates-tree v1.0.12 [INFO] [stderr] Checking num_cpus v1.16.0 [INFO] [stderr] Checking etherparse v0.13.0 [INFO] [stderr] Checking downcast v0.11.0 [INFO] [stderr] Checking fragile v2.0.0 [INFO] [stderr] Compiling zeromq-src v0.2.6+4.3.4 [INFO] [stderr] Compiling toml_datetime v0.6.8 [INFO] [stderr] Compiling serde_spanned v0.6.8 [INFO] [stderr] Compiling toml_edit v0.22.24 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling thiserror-impl v2.0.12 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Compiling async-trait v0.1.88 [INFO] [stderr] Compiling clap_derive v4.5.32 [INFO] [stderr] Compiling async-stream-impl v0.3.6 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Checking async-stream v0.3.6 [INFO] [stderr] Checking tokio v1.44.1 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Checking predicates v2.1.5 [INFO] [stderr] Checking env_logger v0.10.2 [INFO] [stderr] Checking clap v4.5.32 [INFO] [stderr] Compiling mockall_derive v0.11.4 [INFO] [stderr] Compiling pest v2.7.15 [INFO] [stderr] Compiling pnet_macros v0.33.0 [INFO] [stderr] Compiling pcap v1.3.0 [INFO] [stderr] Compiling toml v0.8.20 [INFO] [stderr] Compiling system-deps v6.2.2 [INFO] [stderr] Compiling zmq-sys v0.12.0 [INFO] [stderr] Checking pnet_packet v0.33.0 [INFO] [stderr] Compiling pest_meta v2.7.15 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking mockall v0.11.4 [INFO] [stderr] Compiling pest_generator v2.7.15 [INFO] [stderr] Checking ipnetwork v0.20.0 [INFO] [stderr] Checking pnet_datalink v0.33.0 [INFO] [stderr] Checking toml v0.5.11 [INFO] [stderr] Checking ron v0.7.1 [INFO] [stderr] Checking tokio-stream v0.1.17 [INFO] [stderr] Compiling pest_derive v2.7.15 [INFO] [stderr] Checking json5 v0.4.1 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Checking tokio-test v0.4.4 [INFO] [stderr] Checking config v0.13.4 [INFO] [stderr] Checking pnet_transport v0.33.0 [INFO] [stderr] Checking dragent_rs v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `config::ConfigError` [INFO] [stdout] --> src/cli.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use config::ConfigError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `future::Join` [INFO] [stdout] --> src/error.rs:1:15 [INFO] [stdout] | [INFO] [stdout] 1 | use futures::{future::Join, io}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/error.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `mpsc` [INFO] [stdout] --> src/capture/packet.rs:11:19 [INFO] [stdout] | [INFO] [stdout] 11 | use tokio::sync::{mpsc, broadcast, watch}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PacketStats` [INFO] [stdout] --> src/forwarder/base.rs:3:142 [INFO] [stdout] | [INFO] [stdout] 3 | ...esult}, forwarder::state::ForwarderState, protocol::common::{PacketStats, PacketStatsSnapshot} [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::os::fd::AsFd` [INFO] [stdout] --> src/forwarder/gre.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::os::fd::AsFd; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `libc` [INFO] [stdout] --> src/forwarder/vxlan.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use libc; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `packet_to_bytes` [INFO] [stdout] --> src/forwarder/vxlan.rs:13:42 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::capture::packet::{PacketInfo, packet_to_bytes}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `vxlan::VxlanForwarder` [INFO] [stdout] --> src/forwarder/mod.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub use vxlan::VxlanForwarder; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `packet_to_bytes` [INFO] [stdout] --> src/protocol/vxlan.rs:5:42 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::capture::packet::{PacketInfo, packet_to_bytes}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `linux::*` [INFO] [stdout] --> src/platform/mod.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | pub use linux::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `config::ConfigError` [INFO] [stdout] --> src/cli.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use config::ConfigError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `future::Join` [INFO] [stdout] --> src/error.rs:1:15 [INFO] [stdout] | [INFO] [stdout] 1 | use futures::{future::Join, io}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/error.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `mpsc` [INFO] [stdout] --> src/capture/packet.rs:11:19 [INFO] [stdout] | [INFO] [stdout] 11 | use tokio::sync::{mpsc, broadcast, watch}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PacketStats` [INFO] [stdout] --> src/forwarder/base.rs:3:142 [INFO] [stdout] | [INFO] [stdout] 3 | ...esult}, forwarder::state::ForwarderState, protocol::common::{PacketStats, PacketStatsSnapshot} [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::os::fd::AsFd` [INFO] [stdout] --> src/forwarder/gre.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::os::fd::AsFd; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `libc` [INFO] [stdout] --> src/forwarder/vxlan.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use libc; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `vxlan::VxlanForwarder` [INFO] [stdout] --> src/forwarder/mod.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub use vxlan::VxlanForwarder; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Ipv6Addr` [INFO] [stdout] --> src/protocol/common.rs:229:30 [INFO] [stdout] | [INFO] [stdout] 229 | use std::net::{Ipv4Addr, Ipv6Addr}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `linux::*` [INFO] [stdout] --> src/platform/mod.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | pub use linux::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/forwarder/zmq.rs:84:37 [INFO] [stdout] | [INFO] [stdout] 84 | async fn send_with_retry(&self, data: &[u8], retries: u32) -> Result<()> { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `retries` [INFO] [stdout] --> src/forwarder/zmq.rs:84:50 [INFO] [stdout] | [INFO] [stdout] 84 | async fn send_with_retry(&self, data: &[u8], retries: u32) -> Result<()> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_retries` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/forwarder/zmq.rs:84:37 [INFO] [stdout] | [INFO] [stdout] 84 | async fn send_with_retry(&self, data: &[u8], retries: u32) -> Result<()> { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `retries` [INFO] [stdout] --> src/forwarder/zmq.rs:84:50 [INFO] [stdout] | [INFO] [stdout] 84 | async fn send_with_retry(&self, data: &[u8], retries: u32) -> Result<()> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_retries` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `enable` [INFO] [stdout] --> src/capture/interface.rs:22:35 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn set_promiscuous(&self, enable: bool) -> Result<()> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_enable` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `packet` [INFO] [stdout] --> src/capture/packet.rs:27:24 [INFO] [stdout] | [INFO] [stdout] 27 | pub fn packet_to_bytes(packet: &PacketInfo) -> Bytes { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_packet` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `error` [INFO] [stdout] --> src/forwarder/base.rs:39:34 [INFO] [stdout] | [INFO] [stdout] 39 | async fn handle_error(&self, error: ForwarderError) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_error` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/forwarder/gre.rs:116:81 [INFO] [stdout] | [INFO] [stdout] 116 | let ip_addr = forwarder_config.destination.parse::().map_err(|e| { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `enable` [INFO] [stdout] --> src/capture/interface.rs:22:35 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn set_promiscuous(&self, enable: bool) -> Result<()> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_enable` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `packet` [INFO] [stdout] --> src/capture/packet.rs:27:24 [INFO] [stdout] | [INFO] [stdout] 27 | pub fn packet_to_bytes(packet: &PacketInfo) -> Bytes { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_packet` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stop_handle` [INFO] [stdout] --> src/capture/packet.rs:404:13 [INFO] [stdout] | [INFO] [stdout] 404 | let stop_handle = tokio::spawn(async move { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stop_handle` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `error` [INFO] [stdout] --> src/forwarder/base.rs:39:34 [INFO] [stdout] | [INFO] [stdout] 39 | async fn handle_error(&self, error: ForwarderError) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_error` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/forwarder/gre.rs:116:81 [INFO] [stdout] | [INFO] [stdout] 116 | let ip_addr = forwarder_config.destination.parse::().map_err(|e| { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `log_level` is never read [INFO] [stdout] --> src/cli.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 33 | pub struct Config { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 40 | pub log_level: LoggingConfig, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Config` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `validate`, `validate_interface`, and `validate_forwarder` are never used [INFO] [stdout] --> src/cli.rs:52:12 [INFO] [stdout] | [INFO] [stdout] 43 | impl Config { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 52 | pub fn validate(&self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | fn validate_interface(&self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | fn validate_forwarder(&self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `max_packet_size` is never read [INFO] [stdout] --> src/cli.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 81 | pub struct ForwarderConfig { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 85 | pub max_packet_size: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ForwarderConfig` 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: fields `buffer_size` and `client_ip` are never read [INFO] [stdout] --> src/cli.rs:94:9 [INFO] [stdout] | [INFO] [stdout] 91 | pub struct InterfaceConfig { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 94 | pub buffer_size: usize, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 95 | pub client_ip: Ipv4Addr, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `InterfaceConfig` 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: fields `level` and `file` are never read [INFO] [stdout] --> src/cli.rs:100:9 [INFO] [stdout] | [INFO] [stdout] 99 | pub struct LoggingConfig { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 100 | pub level: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 101 | pub file: Option, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LoggingConfig` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/error.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub enum ForwarderError { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 15 | Protocol(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | Parse(String), [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | PacketFormat(String), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | BufferOverflow { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | InvalidChecksum, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | PermissionDenied(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | Connection(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | NotFound(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | Unsupported(String), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ForwarderError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CaptureConfig` is never constructed [INFO] [stdout] --> src/capture/mod.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct CaptureConfig { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CaptureManager` is never constructed [INFO] [stdout] --> src/capture/mod.rs:44:12 [INFO] [stdout] | [INFO] [stdout] 44 | pub struct CaptureManager { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `start_capture`, `stop_capture`, and `get_interface` are never used [INFO] [stdout] --> src/capture/mod.rs:52:12 [INFO] [stdout] | [INFO] [stdout] 50 | impl CaptureManager { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 51 | /// 创建新的捕获管理器 [INFO] [stdout] 52 | pub fn new(config: CaptureConfig) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub async fn start_capture(&mut self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub async fn stop_capture(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub fn get_interface(&self) -> &NetworkInterface { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `vni` is never read [INFO] [stdout] --> src/capture/packet.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct PacketInfo { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 24 | pub vni: Option, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PacketInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `packet_to_bytes` is never used [INFO] [stdout] --> src/capture/packet.rs:27:8 [INFO] [stdout] | [INFO] [stdout] 27 | pub fn packet_to_bytes(packet: &PacketInfo) -> Bytes { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `protocol`, `src_port`, and `dst_port` are never read [INFO] [stdout] --> src/capture/packet.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 52 | pub struct PacketHeader { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 55 | pub protocol: ProtocolType, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 56 | pub src_port: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 57 | pub dst_port: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PacketHeader` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `stop_tx` is never read [INFO] [stdout] --> src/capture/packet.rs:110:5 [INFO] [stdout] | [INFO] [stdout] 104 | pub struct PacketCapture { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 110 | stop_tx: watch::Sender, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `packets_dropped` and `packets_if_dropped` are never read [INFO] [stdout] --> src/capture/packet.rs:115:5 [INFO] [stdout] | [INFO] [stdout] 113 | pub struct CaptureStats { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 114 | packets_received: AtomicU64, [INFO] [stdout] 115 | packets_dropped: AtomicU64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 116 | packets_if_dropped: AtomicU64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_stats` is never used [INFO] [stdout] --> src/capture/packet.rs:130:8 [INFO] [stdout] | [INFO] [stdout] 129 | impl CaptureStats { [INFO] [stdout] | ----------------- method in this implementation [INFO] [stdout] 130 | fn get_stats(&self) -> (u64, u64, u64) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_stats_handler`, `break_loop`, `clone_with_stop`, `get_stats`, and `set_filter` are never used [INFO] [stdout] --> src/capture/packet.rs:178:12 [INFO] [stdout] | [INFO] [stdout] 139 | impl PacketCapture { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 178 | pub fn get_stats_handler(&self) -> Arc { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 182 | pub fn break_loop(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | pub fn clone_with_stop(&self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 338 | pub fn get_stats(&self) -> &CaptureStats { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 343 | pub fn set_filter(&mut self, filter: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `list_interfaces` is never used [INFO] [stdout] --> src/capture/packet.rs:351:8 [INFO] [stdout] | [INFO] [stdout] 351 | pub fn list_interfaces() -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ForwarderFactory` is never constructed [INFO] [stdout] --> src/forwarder/mod.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 22 | pub struct ForwarderFactory; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `create` is never used [INFO] [stdout] --> src/forwarder/mod.rs:26:18 [INFO] [stdout] | [INFO] [stdout] 24 | impl ForwarderFactory { [INFO] [stdout] | --------------------- associated function in this implementation [INFO] [stdout] 25 | /// 创建新的转发器实例 [INFO] [stdout] 26 | pub async fn create(config: ForwarderConfig) -> Result>> { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ForwardingStats` is never constructed [INFO] [stdout] --> src/forwarder/mod.rs:43:12 [INFO] [stdout] | [INFO] [stdout] 43 | pub struct ForwardingStats { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ForwardingMonitor` is never constructed [INFO] [stdout] --> src/forwarder/mod.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 55 | pub struct ForwardingMonitor { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `update_stats`, and `get_stats` are never used [INFO] [stdout] --> src/forwarder/mod.rs:60:12 [INFO] [stdout] | [INFO] [stdout] 59 | impl ForwardingMonitor { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 60 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | pub async fn update_stats(&self, bytes: usize, success: bool) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub async fn get_stats(&self) -> ForwardingStats { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/forwarder/base.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 7 | pub trait PacketForwarder: Send + Sync { [INFO] [stdout] | --------------- methods in this trait [INFO] [stdout] 8 | /// 获取转发器类型 [INFO] [stdout] 9 | fn forwarder_type(&self) -> &str; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 12 | async fn init(&mut self) -> Result<()>; [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | async fn get_stats(&self) -> Result; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | async fn get_state(&self) -> ForwarderState; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | async fn pause(&mut self) -> Result<()>; [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | async fn resume(&mut self) -> Result<()>; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | async fn shutdown(&mut self) -> Result<()>; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | fn suggested_batch_size(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | async fn handle_error(&self, error: ForwarderError) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | async fn cleanup(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `stats` and `state` are never read [INFO] [stdout] --> src/forwarder/gre.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct GreForwarder { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | stats: Arc, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 24 | state: Arc, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SocketForwarder` is never constructed [INFO] [stdout] --> src/forwarder/socket.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | pub struct SocketForwarder { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VxlanForwarder` is never constructed [INFO] [stdout] --> src/forwarder/vxlan.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 22 | pub struct VxlanForwarder { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/forwarder/vxlan.rs:30:18 [INFO] [stdout] | [INFO] [stdout] 29 | impl VxlanForwarder { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] 30 | pub async fn new(config: &ForwarderConfig) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ZmqForwarder` is never constructed [INFO] [stdout] --> src/forwarder/zmq.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct ZmqForwarder { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `update_stats`, `batch_forward`, `try_reconnect`, and `send_with_retry` are never used [INFO] [stdout] --> src/forwarder/zmq.rs:31:12 [INFO] [stdout] | [INFO] [stdout] 30 | impl ZmqForwarder { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 31 | pub fn new(destination: String, port: u16) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | async fn update_stats(&self, bytes_sent: usize) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | async fn batch_forward(&mut self, packets: Vec<&PacketInfo>) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | async fn try_reconnect(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | async fn send_with_retry(&self, data: &[u8], retries: u32) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ForwarderStatus` is never constructed [INFO] [stdout] --> src/forwarder/state.rs:31:12 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct ForwarderStatus { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/forwarder/state.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 41 | impl ForwarderStatus { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] 42 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Ipv6` is never constructed [INFO] [stdout] --> src/protocol/common.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum ProtocolType { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 13 | Ipv6 = 0x86DD, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ProtocolType` 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: methods `protocol_type`, `total_len`, `compute_checksum`, `cache_key`, and `needs_optimization` are never used [INFO] [stdout] --> src/protocol/common.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 21 | pub trait Protocol { [INFO] [stdout] | -------- methods in this trait [INFO] [stdout] 22 | /// 获取协议类型 [INFO] [stdout] 23 | fn protocol_type(&self) -> ProtocolType; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | fn total_len(&self) -> usize; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | fn compute_checksum(&self) -> u16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | fn cache_key(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | fn needs_optimization(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `read_from` is never used [INFO] [stdout] --> src/protocol/common.rs:51:8 [INFO] [stdout] | [INFO] [stdout] 46 | pub trait Header: Protocol { [INFO] [stdout] | ------ associated function in this trait [INFO] [stdout] ... [INFO] [stdout] 51 | fn read_from(buf: &mut Bytes) -> crate::error::Result where Self: Sized; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AddressInfo` is never constructed [INFO] [stdout] --> src/protocol/common.rs:56:12 [INFO] [stdout] | [INFO] [stdout] 56 | pub struct AddressInfo { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `update_cache`, and `get_hash` are never used [INFO] [stdout] --> src/protocol/common.rs:65:12 [INFO] [stdout] | [INFO] [stdout] 64 | impl AddressInfo { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 65 | pub fn new(src_ip: IpAddr, dst_ip: IpAddr, src_port: Option, dst_port: Option) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | fn update_cache(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub fn get_hash(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/protocol/common.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 106 | pub struct PacketStats { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 107 | total_packets: AtomicU64, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 108 | total_bytes: AtomicU64, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 109 | error_packets: AtomicU64, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 110 | last_update: std::sync::atomic::AtomicU64, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 111 | avg_packet_size: AtomicU64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 112 | throughput_bps: AtomicU64, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 113 | // 添加批量统计缓存,减少原子操作 [INFO] [stdout] 114 | batch_stats: parking_lot::RwLock, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `packet_count`, `byte_count`, and `last_update` are never read [INFO] [stdout] --> src/protocol/common.rs:119:5 [INFO] [stdout] | [INFO] [stdout] 118 | struct BatchStats { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 119 | packet_count: u32, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 120 | byte_count: u64, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 121 | last_update: Instant, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/protocol/common.rs:135:12 [INFO] [stdout] | [INFO] [stdout] 134 | impl PacketStats { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] 135 | pub fn increment_packets(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | pub fn add_bytes(&self, bytes: u64) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | pub fn increment_errors(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 147 | pub fn update_metrics(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 171 | pub fn get_throughput(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn get_avg_packet_size(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 180 | pub fn batch_update(&self, packets: u32, bytes: u64) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 194 | pub fn snapshot(&self) -> PacketStatsSnapshot { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PacketStatsSnapshot` is never constructed [INFO] [stdout] --> src/protocol/common.rs:205:12 [INFO] [stdout] | [INFO] [stdout] 205 | pub struct PacketStatsSnapshot { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_bits` is never used [INFO] [stdout] --> src/protocol/gre.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 34 | impl GreFlags { [INFO] [stdout] | ------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 47 | pub fn from_bits(bits: u16) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `with_key` and `with_checksum` are never used [INFO] [stdout] --> src/protocol/gre.rs:82:12 [INFO] [stdout] | [INFO] [stdout] 71 | impl GreHeader { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn with_key(mut self, key: u32) -> Self{ [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn with_checksum(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `inner_ip_header` and `payload` are never read [INFO] [stdout] --> src/protocol/gre.rs:221:5 [INFO] [stdout] | [INFO] [stdout] 217 | pub struct GrePacketBuilder { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 221 | inner_ip_header: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 222 | /// 负载数据 [INFO] [stdout] 223 | payload: Option, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `key`, `with_checksum`, `sequence`, `inner_ip`, and `payload` are never used [INFO] [stdout] --> src/protocol/gre.rs:240:12 [INFO] [stdout] | [INFO] [stdout] 228 | impl GrePacketBuilder { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 240 | pub fn key(mut self, key: u32) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 246 | pub fn with_checksum(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 253 | pub fn sequence(mut self, seq: u32) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 260 | pub fn inner_ip(mut self, src: Ipv4Addr, dst: Ipv4Addr) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 266 | pub fn payload(mut self, payload: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VxlanFlags` is never constructed [INFO] [stdout] --> src/protocol/vxlan.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct VxlanFlags { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_bits` and `from_bits` are never used [INFO] [stdout] --> src/protocol/vxlan.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl VxlanFlags { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 15 | pub fn to_bits(&self) -> u8 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | pub fn from_bits(bits: u8) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VxlanHeader` is never constructed [INFO] [stdout] --> src/protocol/vxlan.rs:31:12 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct VxlanHeader { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VxlanEndpoint` is never constructed [INFO] [stdout] --> src/protocol/vxlan.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 94 | pub struct VxlanEndpoint { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VxlanPacketBuilder` is never constructed [INFO] [stdout] --> src/protocol/vxlan.rs:103:12 [INFO] [stdout] | [INFO] [stdout] 103 | pub struct VxlanPacketBuilder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `build`, `set_vni`, and `set_endpoint` are never used [INFO] [stdout] --> src/protocol/vxlan.rs:108:12 [INFO] [stdout] | [INFO] [stdout] 107 | impl VxlanPacketBuilder { [INFO] [stdout] | ----------------------- associated items in this implementation [INFO] [stdout] 108 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | pub fn build(&mut self, packet: &PacketInfo) -> Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | pub fn set_vni(&mut self, vni: u32) -> &mut Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 138 | pub fn set_endpoint(&mut self, endpoint: &VxlanEndpoint) -> &mut Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/protocol/ipv4.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Ipv4Header { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 7 | version: u8, // 4 bits - IPv4 version [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 8 | ihl: u8, // 4 bits - Internet Header Length [INFO] [stdout] | ^^^ [INFO] [stdout] 9 | dscp: u8, // 6 bits - Differentiated Services Code Point [INFO] [stdout] | ^^^^ [INFO] [stdout] 10 | ecn: u8, // 2 bits - Explicit Congestion Notification [INFO] [stdout] | ^^^ [INFO] [stdout] 11 | total_length: u16, // 16 bits - Total Length [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 12 | identification: u16, // 16 bits - Identification [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 13 | flags: u8, // 3 bits - Flags [INFO] [stdout] | ^^^^^ [INFO] [stdout] 14 | fragment_offset: u16, // 13 bits - Fragment Offset [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 15 | ttl: u8, // 8 bits - Time To Live [INFO] [stdout] | ^^^ [INFO] [stdout] 16 | protocol: u8, // 8 bits - Protocol [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 17 | checksum: u16, // 16 bits - Header Checksum [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 18 | source: Ipv4Addr, // 32 bits - Source IP Address [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 19 | destination: Ipv4Addr, // 32 bits - Destination IP Address [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 20 | options: Vec, // Variable length - Options (if any) [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Ipv4Header` 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] --> src/protocol/ipv4.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 23 | impl Ipv4Header { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 24 | /// Create a new IPv4 header with default values [INFO] [stdout] 25 | pub fn new(src: Ipv4Addr, dst: Ipv4Addr) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub fn header_len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub fn write_to(&self, buf: &mut BytesMut) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn set_protocol(&mut self, protocol: u8) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 101 | pub fn set_ttl(&mut self, ttl: u8) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn set_total_length(&mut self, length: u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 111 | pub fn add_option(&mut self, option: u8) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn calculate_checksum(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 162 | pub fn to_bytes(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 203 | pub fn from_bytes(bytes: &[u8]) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated constants are never used [INFO] [stdout] --> src/protocol/ipv4.rs:246:15 [INFO] [stdout] | [INFO] [stdout] 245 | impl Ipv4Header { [INFO] [stdout] | --------------- associated constants in this implementation [INFO] [stdout] 246 | pub const VERSION: u8 = 4; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 247 | pub const MIN_HEADER_LENGTH: u8 = 20; // 5 * 4 bytes [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 250 | pub const ICMP: u8 = 1; [INFO] [stdout] | ^^^^ [INFO] [stdout] 251 | pub const TCP: u8 = 6; [INFO] [stdout] | ^^^ [INFO] [stdout] 252 | pub const UDP: u8 = 17; [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 255 | pub const DONT_FRAGMENT: u8 = 0x40; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 256 | pub const MORE_FRAGMENTS: u8 = 0x20; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_interface_index` and `get_available_interface` are never used [INFO] [stdout] --> src/platform/interface.rs:13:8 [INFO] [stdout] | [INFO] [stdout] 11 | pub trait NetworkInterface: Send + Sync { [INFO] [stdout] | ---------------- methods in this trait [INFO] [stdout] 12 | fn bind_to_interface(&self, sock: &Socket, interface_name: &str) -> Result<()>; [INFO] [stdout] 13 | fn get_interface_index(&self, interface_name: &str) -> Result; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 14 | fn get_available_interface(&self) -> Result>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `log_level` is never read [INFO] [stdout] --> src/cli.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 33 | pub struct Config { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 40 | pub log_level: LoggingConfig, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Config` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `max_packet_size` is never read [INFO] [stdout] --> src/cli.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 81 | pub struct ForwarderConfig { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 85 | pub max_packet_size: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ForwarderConfig` 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: field `client_ip` is never read [INFO] [stdout] --> src/cli.rs:95:9 [INFO] [stdout] | [INFO] [stdout] 91 | pub struct InterfaceConfig { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 95 | pub client_ip: Ipv4Addr, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `InterfaceConfig` 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: fields `level` and `file` are never read [INFO] [stdout] --> src/cli.rs:100:9 [INFO] [stdout] | [INFO] [stdout] 99 | pub struct LoggingConfig { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 100 | pub level: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 101 | pub file: Option, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LoggingConfig` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/error.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub enum ForwarderError { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 27 | Parse(String), [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | BufferOverflow { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | InvalidChecksum, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | PermissionDenied(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | Connection(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | NotFound(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | Unsupported(String), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ForwarderError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `max_packet_size` is never read [INFO] [stdout] --> src/capture/mod.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct CaptureConfig { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 28 | pub max_packet_size: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CaptureConfig` 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: method `get_interface` is never used [INFO] [stdout] --> src/capture/mod.rs:89:12 [INFO] [stdout] | [INFO] [stdout] 50 | impl CaptureManager { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 89 | pub fn get_interface(&self) -> &NetworkInterface { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `protocol`, `src_port`, and `dst_port` are never read [INFO] [stdout] --> src/capture/packet.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 52 | pub struct PacketHeader { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 55 | pub protocol: ProtocolType, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 56 | pub src_port: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 57 | pub dst_port: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PacketHeader` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_stats` and `set_filter` are never used [INFO] [stdout] --> src/capture/packet.rs:338:12 [INFO] [stdout] | [INFO] [stdout] 139 | impl PacketCapture { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 338 | pub fn get_stats(&self) -> &CaptureStats { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 343 | pub fn set_filter(&mut self, filter: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/forwarder/base.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 7 | pub trait PacketForwarder: Send + Sync { [INFO] [stdout] | --------------- methods in this trait [INFO] [stdout] 8 | /// 获取转发器类型 [INFO] [stdout] 9 | fn forwarder_type(&self) -> &str; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | async fn get_stats(&self) -> Result; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | async fn get_state(&self) -> ForwarderState; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | async fn pause(&mut self) -> Result<()>; [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | async fn resume(&mut self) -> Result<()>; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | fn suggested_batch_size(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | async fn handle_error(&self, error: ForwarderError) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | async fn cleanup(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `stats` and `state` are never read [INFO] [stdout] --> src/forwarder/gre.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct GreForwarder { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | stats: Arc, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 24 | state: Arc, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SocketForwarder` is never constructed [INFO] [stdout] --> src/forwarder/socket.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | pub struct SocketForwarder { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `stats` and `state` are never read [INFO] [stdout] --> src/forwarder/vxlan.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 22 | pub struct VxlanForwarder { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 25 | stats: Arc, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 26 | state: Arc, // 使用原子状态替代 Mutex [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/forwarder/zmq.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct ZmqForwarder { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 19 | state: Arc, // 使用原子状态替代 Mutex [INFO] [stdout] | ^^^^^ [INFO] [stdout] 20 | batch_size: usize, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 21 | batch_timeout: Duration, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 22 | destination: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 23 | port: u16, [INFO] [stdout] | ^^^^ [INFO] [stdout] 24 | // 添加连接状态监控 [INFO] [stdout] 25 | connection_state: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 26 | // 添加重连机制 [INFO] [stdout] 27 | reconnect_timeout: Duration, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `batch_forward`, `try_reconnect`, and `send_with_retry` are never used [INFO] [stdout] --> src/forwarder/zmq.rs:60:14 [INFO] [stdout] | [INFO] [stdout] 30 | impl ZmqForwarder { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 60 | async fn batch_forward(&mut self, packets: Vec<&PacketInfo>) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | async fn try_reconnect(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | async fn send_with_retry(&self, data: &[u8], retries: u32) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ForwarderStatus` is never constructed [INFO] [stdout] --> src/forwarder/state.rs:31:12 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct ForwarderStatus { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/forwarder/state.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 41 | impl ForwarderStatus { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] 42 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `protocol_type`, `total_len`, `compute_checksum`, `cache_key`, and `needs_optimization` are never used [INFO] [stdout] --> src/protocol/common.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 21 | pub trait Protocol { [INFO] [stdout] | -------- methods in this trait [INFO] [stdout] 22 | /// 获取协议类型 [INFO] [stdout] 23 | fn protocol_type(&self) -> ProtocolType; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | fn total_len(&self) -> usize; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | fn compute_checksum(&self) -> u16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | fn cache_key(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | fn needs_optimization(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `src_ip`, `dst_ip`, and `cached_hash` are never read [INFO] [stdout] --> src/protocol/common.rs:57:9 [INFO] [stdout] | [INFO] [stdout] 56 | pub struct AddressInfo { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 57 | pub src_ip: IpAddr, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 58 | pub dst_ip: IpAddr, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | cached_hash: Option, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AddressInfo` 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: associated items `new`, `update_cache`, and `get_hash` are never used [INFO] [stdout] --> src/protocol/common.rs:65:12 [INFO] [stdout] | [INFO] [stdout] 64 | impl AddressInfo { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 65 | pub fn new(src_ip: IpAddr, dst_ip: IpAddr, src_port: Option, dst_port: Option) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | fn update_cache(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub fn get_hash(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `last_update`, `avg_packet_size`, `throughput_bps`, and `batch_stats` are never read [INFO] [stdout] --> src/protocol/common.rs:110:5 [INFO] [stdout] | [INFO] [stdout] 106 | pub struct PacketStats { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 110 | last_update: std::sync::atomic::AtomicU64, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 111 | avg_packet_size: AtomicU64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 112 | throughput_bps: AtomicU64, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 113 | // 添加批量统计缓存,减少原子操作 [INFO] [stdout] 114 | batch_stats: parking_lot::RwLock, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `packet_count`, `byte_count`, and `last_update` are never read [INFO] [stdout] --> src/protocol/common.rs:119:5 [INFO] [stdout] | [INFO] [stdout] 118 | struct BatchStats { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 119 | packet_count: u32, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 120 | byte_count: u64, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 121 | last_update: Instant, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `update_metrics`, `get_throughput`, `get_avg_packet_size`, `batch_update`, and `snapshot` are never used [INFO] [stdout] --> src/protocol/common.rs:147:12 [INFO] [stdout] | [INFO] [stdout] 134 | impl PacketStats { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 147 | pub fn update_metrics(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 171 | pub fn get_throughput(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn get_avg_packet_size(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 180 | pub fn batch_update(&self, packets: u32, bytes: u64) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 194 | pub fn snapshot(&self) -> PacketStatsSnapshot { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PacketStatsSnapshot` is never constructed [INFO] [stdout] --> src/protocol/common.rs:205:12 [INFO] [stdout] | [INFO] [stdout] 205 | pub struct PacketStatsSnapshot { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `with_key` and `with_checksum` are never used [INFO] [stdout] --> src/protocol/gre.rs:82:12 [INFO] [stdout] | [INFO] [stdout] 71 | impl GreHeader { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn with_key(mut self, key: u32) -> Self{ [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn with_checksum(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `inner_ip_header` and `payload` are never read [INFO] [stdout] --> src/protocol/gre.rs:221:5 [INFO] [stdout] | [INFO] [stdout] 217 | pub struct GrePacketBuilder { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 221 | inner_ip_header: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 222 | /// 负载数据 [INFO] [stdout] 223 | payload: Option, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `key`, `with_checksum`, `sequence`, `inner_ip`, and `payload` are never used [INFO] [stdout] --> src/protocol/gre.rs:240:12 [INFO] [stdout] | [INFO] [stdout] 228 | impl GrePacketBuilder { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 240 | pub fn key(mut self, key: u32) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 246 | pub fn with_checksum(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 253 | pub fn sequence(mut self, seq: u32) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 260 | pub fn inner_ip(mut self, src: Ipv4Addr, dst: Ipv4Addr) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 266 | pub fn payload(mut self, payload: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `reserved` is never read [INFO] [stdout] --> src/protocol/vxlan.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct VxlanFlags { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 10 | pub vni_present: bool, [INFO] [stdout] 11 | pub reserved: u32, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VxlanFlags` 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: field `reserved` is never read [INFO] [stdout] --> src/protocol/vxlan.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct VxlanHeader { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 34 | pub reserved: u32, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VxlanHeader` 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: struct `VxlanEndpoint` is never constructed [INFO] [stdout] --> src/protocol/vxlan.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 94 | pub struct VxlanEndpoint { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_vni` and `set_endpoint` are never used [INFO] [stdout] --> src/protocol/vxlan.rs:132:12 [INFO] [stdout] | [INFO] [stdout] 107 | impl VxlanPacketBuilder { [INFO] [stdout] | ----------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 132 | pub fn set_vni(&mut self, vni: u32) -> &mut Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 138 | pub fn set_endpoint(&mut self, endpoint: &VxlanEndpoint) -> &mut Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `header_len`, `write_to`, `set_ttl`, `set_total_length`, `add_option`, and `calculate_checksum` are never used [INFO] [stdout] --> src/protocol/ipv4.rs:44:12 [INFO] [stdout] | [INFO] [stdout] 23 | impl Ipv4Header { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 44 | pub fn header_len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub fn write_to(&self, buf: &mut BytesMut) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 101 | pub fn set_ttl(&mut self, ttl: u8) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn set_total_length(&mut self, length: u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 111 | pub fn add_option(&mut self, option: u8) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn calculate_checksum(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated constants `VERSION`, `MIN_HEADER_LENGTH`, `ICMP`, `UDP`, `DONT_FRAGMENT`, and `MORE_FRAGMENTS` are never used [INFO] [stdout] --> src/protocol/ipv4.rs:246:15 [INFO] [stdout] | [INFO] [stdout] 245 | impl Ipv4Header { [INFO] [stdout] | --------------- associated constants in this implementation [INFO] [stdout] 246 | pub const VERSION: u8 = 4; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 247 | pub const MIN_HEADER_LENGTH: u8 = 20; // 5 * 4 bytes [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 250 | pub const ICMP: u8 = 1; [INFO] [stdout] | ^^^^ [INFO] [stdout] 251 | pub const TCP: u8 = 6; [INFO] [stdout] 252 | pub const UDP: u8 = 17; [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 255 | pub const DONT_FRAGMENT: u8 = 0x40; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 256 | pub const MORE_FRAGMENTS: u8 = 0x20; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_interface_index` and `get_available_interface` are never used [INFO] [stdout] --> src/platform/interface.rs:13:8 [INFO] [stdout] | [INFO] [stdout] 11 | pub trait NetworkInterface: Send + Sync { [INFO] [stdout] | ---------------- methods in this trait [INFO] [stdout] 12 | fn bind_to_interface(&self, sock: &Socket, interface_name: &str) -> Result<()>; [INFO] [stdout] 13 | fn get_interface_index(&self, interface_name: &str) -> Result; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 14 | fn get_available_interface(&self) -> Result>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison is useless due to type limits [INFO] [stdout] --> src/capture/packet.rs:458:17 [INFO] [stdout] | [INFO] [stdout] 458 | assert!(packets_received >= 0, "Should have valid packet count"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_comparisons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 26s [INFO] running `Command { std: "docker" "inspect" "bd13f5eef8d56680b082513356560b63b2cb0da8da5b2ec91dcddeda0693e72a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "bd13f5eef8d56680b082513356560b63b2cb0da8da5b2ec91dcddeda0693e72a", kill_on_drop: false }` [INFO] [stdout] bd13f5eef8d56680b082513356560b63b2cb0da8da5b2ec91dcddeda0693e72a