[INFO] cloning repository https://github.com/vektorprime/RustyBGP
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/vektorprime/RustyBGP" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvektorprime%2FRustyBGP", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvektorprime%2FRustyBGP'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f6a7eeb1b6356d96567d96d414ae4c784536fc3d
[INFO] checking vektorprime/RustyBGP against 5c543b0b8c73c7b72bc8284ced4fb22ead15734d for pr-160186
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvektorprime%2FRustyBGP" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/vektorprime/RustyBGP
[INFO] finished tweaking git repo https://github.com/vektorprime/RustyBGP
[INFO] tweaked toml for git repo https://github.com/vektorprime/RustyBGP written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/vektorprime/RustyBGP on toolchain 5c543b0b8c73c7b72bc8284ced4fb22ead15734d
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/vektorprime/RustyBGP 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" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded default v0.1.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 8b323176c367b05ea851530df4dfcc03895705813c52bfafdf04c8dc36b74460
[INFO] running `Command { std: "docker" "start" "8b323176c367b05ea851530df4dfcc03895705813c52bfafdf04c8dc36b74460", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8b323176c367b05ea851530df4dfcc03895705813c52bfafdf04c8dc36b74460", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8b323176c367b05ea851530df4dfcc03895705813c52bfafdf04c8dc36b74460" "/opt/rustwide/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8b323176c367b05ea851530df4dfcc03895705813c52bfafdf04c8dc36b74460", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8b323176c367b05ea851530df4dfcc03895705813c52bfafdf04c8dc36b74460" "/opt/rustwide/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.178
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking winnow v0.7.14
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]     Checking toml_datetime v0.7.3
[INFO] [stderr]     Checking serde_spanned v1.0.3
[INFO] [stderr]     Checking toml_writer v1.0.4
[INFO] [stderr]     Checking default v0.1.2
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]     Checking signal-hook-registry v1.4.7
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking toml_parser v1.0.4
[INFO] [stderr]     Checking toml v0.9.8
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking bgprtr v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Read` and `Write`
[INFO] [stdout]  --> src/main.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{io::{Read, Write}};
[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::net::Ipv4Addr`
[INFO] [stdout]  --> src/main.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::Ipv4Addr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::keepalive::*`
[INFO] [stdout]  --> src/main.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::messages::keepalive::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::open::*`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::messages::open::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BGPError`
[INFO] [stdout]  --> src/routes.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::errors::{BGPError, ProcessError};
[INFO] [stdout]   |                     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IpAddr`
[INFO] [stdout]  --> src/neighbors.rs:4:16
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::net::{IpAddr, Ipv4Addr};
[INFO] [stdout]   |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::errors::BGPError::Message`
[INFO] [stdout]   --> src/neighbors.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::errors::BGPError::Message;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::errors::EventError::UnhandledEvent`
[INFO] [stdout]   --> src/neighbors.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::errors::EventError::UnhandledEvent;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BGPVersion`
[INFO] [stdout]   --> src/neighbors.rs:25:74
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::messages::{extract_messages_from_rec_data, parse_packet_type, BGPVersion, MessageType};
[INFO] [stdout]    |                                                                          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_neighbor_ipv4_address_from_stream`
[INFO] [stdout]   --> src/neighbors.rs:27:51
[INFO] [stdout]    |
[INFO] [stdout] 27 | use crate::messages::open::{extract_open_message, get_neighbor_ipv4_address_from_stream, send_open, send_update, OpenMessage};
[INFO] [stdout]    |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BGPProcess`
[INFO] [stdout]   --> src/neighbors.rs:28:22
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::process::{BGPProcess, GlobalSettings };
[INFO] [stdout]    |                      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `is_4byte_asn_capability_present`
[INFO] [stdout]   --> src/neighbors.rs:31:44
[INFO] [stdout]    |
[INFO] [stdout] 31 | use crate::messages::optional_parameters::{is_4byte_asn_capability_present, Capability, OptionalParameters};
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::net::TcpStream`
[INFO] [stdout]  --> src/messages.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use tokio::net::TcpStream;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ipv4Addr`
[INFO] [stdout]  --> src/messages/keepalive.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::net::{ Ipv4Addr };
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TcpListener` and `TcpStream`
[INFO] [stdout]  --> src/messages/keepalive.rs:2:18
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tokio::net::{TcpStream, TcpListener};
[INFO] [stdout]   |                  ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncReadExt` and `self`
[INFO] [stdout]  --> src/messages/keepalive.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::io::{self, AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]   |                 ^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TcpListener`
[INFO] [stdout]  --> src/messages/open.rs:2:29
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tokio::net::{TcpStream, TcpListener};
[INFO] [stdout]   |                             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncReadExt` and `self`
[INFO] [stdout]  --> src/messages/open.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tokio::io::{self, AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]   |                 ^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/messages/open.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::MultiProtocolExtensionsConfig`
[INFO] [stdout]  --> src/messages/open.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::config::MultiProtocolExtensionsConfig;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::errors::MessageError::BadMultiProtocolExtValue`
[INFO] [stdout]  --> src/messages/open.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::errors::MessageError::BadMultiProtocolExtValue;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::finite_state_machine::State`
[INFO] [stdout]   --> src/messages/open.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::finite_state_machine::State;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::keepalive::*`
[INFO] [stdout]   --> src/messages/open.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::messages::keepalive::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Neighbor` and `PeerType`
[INFO] [stdout]   --> src/messages/open.rs:15:24
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::neighbors::{Neighbor, PeerType};
[INFO] [stdout]    |                        ^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::routes::NLRI`
[INFO] [stdout]   --> src/messages/open.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::routes::NLRI;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IpAddr`
[INFO] [stdout]  --> src/messages/update.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::net::{ Ipv4Addr, IpAddr};
[INFO] [stdout]   |                           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TcpListener` and `TcpStream`
[INFO] [stdout]  --> src/messages/update.rs:2:18
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tokio::net::{TcpStream, TcpListener};
[INFO] [stdout]   |                  ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Bytes`, `Read`, and `Write`
[INFO] [stdout]  --> src/messages/update.rs:5:15
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io::{Bytes, Read, Write};
[INFO] [stdout]   |               ^^^^^  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/messages/update.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread::current`
[INFO] [stdout]  --> src/messages/update.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::thread::current;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NeighborError`
[INFO] [stdout]  --> src/messages/update.rs:8:21
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::errors::{NeighborError, ProcessError};
[INFO] [stdout]   |                     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::keepalive::*`
[INFO] [stdout]   --> src/messages/update.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::messages::keepalive::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OptionalParameters`
[INFO] [stdout]   --> src/messages/update.rs:12:89
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::messages::optional_parameters::{is_4byte_asn_capability_present, Capability, OptionalParameters};
[INFO] [stdout]    |                                                                                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::neighbors::Neighbor`
[INFO] [stdout]   --> src/messages/update.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::neighbors::Neighbor;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `extract_u32_from_bytes`
[INFO] [stdout]   --> src/messages/update.rs:16:44
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::utils::{extract_u16_from_bytes, extract_u32_from_bytes, extract_u8_from_bytes};
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/messages/update.rs:988:13
[INFO] [stdout]     |
[INFO] [stdout] 988 |             ///
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 989 |             let route_len_bytes = get_route_len_bytes(prefix_len);
[INFO] [stdout]     |             ------------------------------------------------------ rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]     --> src/messages/update.rs:1002:13
[INFO] [stdout]      |
[INFO] [stdout] 1002 |               ///
[INFO] [stdout]      |               ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1005 | /             match NLRI::new(route_u32, prefix_len) {
[INFO] [stdout] 1006 | |                 Ok(nl) => { routes.push(nl); },
[INFO] [stdout] 1007 | |                 Err(e) => {
[INFO] [stdout] 1008 | |                     println!("Error: {:#?}", e);
[INFO] [stdout] 1009 | |                 }
[INFO] [stdout] 1010 | |             }
[INFO] [stdout]      | |_____________- rustdoc does not generate documentation for expressions
[INFO] [stdout]      |
[INFO] [stdout]      = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ipv4Addr`
[INFO] [stdout]  --> src/messages/route_refresh.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::net::{ Ipv4Addr};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TcpListener`
[INFO] [stdout]  --> src/messages/route_refresh.rs:2:29
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tokio::net::{TcpStream, TcpListener};
[INFO] [stdout]   |                             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncReadExt` and `self`
[INFO] [stdout]  --> src/messages/route_refresh.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tokio::io::{self, AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]   |                 ^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::Ipv4Addr`
[INFO] [stdout]  --> src/messages/notification.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::net::Ipv4Addr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BGPVersion`
[INFO] [stdout]  --> src/messages/notification.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::messages::{BGPVersion, MessageType};
[INFO] [stdout]   |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::keepalive::send_keepalive`
[INFO] [stdout]  --> src/messages/notification.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::messages::keepalive::send_keepalive;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::optional_parameters::Capability`
[INFO] [stdout]  --> src/messages/notification.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::messages::optional_parameters::Capability;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Flags`, `PAdata`, `PathAttribute`, `TypeCode`, `UpdateMessage`, and `extract_nlri_from_update_message`
[INFO] [stdout]   --> src/messages/notification.rs:10:31
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::messages::update::{extract_nlri_from_update_message, Flags, PAdata, PathAttribute, TypeCode, UpdateMessage};
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^  ^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::routes::NLRI`
[INFO] [stdout]   --> src/messages/notification.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::routes::NLRI;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `extract_u32_from_bytes` and `extract_u8_from_bytes`
[INFO] [stdout]   --> src/messages/notification.rs:13:44
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::utils::{extract_u16_from_bytes, extract_u32_from_bytes, extract_u8_from_bytes};
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::notification::NotifErrorMsgHdrSubCode`
[INFO] [stdout]   --> src/messages/optional_parameters.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::messages::notification::NotifErrorMsgHdrSubCode;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::update::AS`
[INFO] [stdout]   --> src/messages/optional_parameters.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::messages::update::AS;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `keepalive::*`
[INFO] [stdout]   --> src/messages.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use keepalive::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `open::*`
[INFO] [stdout]   --> src/messages.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use open::*;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `notification::*`
[INFO] [stdout]   --> src/messages.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use notification::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RouteRefreshMessage` and `handle_route_refresh_message`
[INFO] [stdout]   --> src/messages.rs:19:38
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::messages::route_refresh::{handle_route_refresh_message, RouteRefreshMessage};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::neighbors::Neighbor`
[INFO] [stdout]   --> src/messages.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::neighbors::Neighbor;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::process::BGPProcess`
[INFO] [stdout]   --> src/messages.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::process::BGPProcess;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::net::TcpStream`
[INFO] [stdout]  --> src/utils.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tokio::net::TcpStream;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BGPError`
[INFO] [stdout]  --> src/utils.rs:9:21
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::errors::{BGPError, MessageError, NeighborError};
[INFO] [stdout]   |                     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/finite_state_machine.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::errors::BGPError`
[INFO] [stdout]  --> src/finite_state_machine.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::errors::BGPError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `extract_messages_from_rec_data`
[INFO] [stdout]  --> src/finite_state_machine.rs:8:23
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::messages::{extract_messages_from_rec_data};
[INFO] [stdout]   |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::open::get_neighbor_ipv4_address_from_stream`
[INFO] [stdout]  --> src/finite_state_machine.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::messages::open::get_neighbor_ipv4_address_from_stream;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `events::*`
[INFO] [stdout]   --> src/finite_state_machine.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use events::*;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::keepalive::KeepaliveMessage`
[INFO] [stdout]   --> src/finite_state_machine/events.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use crate::messages::keepalive::KeepaliveMessage;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::timers::Timer`
[INFO] [stdout]  --> src/finite_state_machine/session_attributes.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::timers::Timer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IpAddr`
[INFO] [stdout]  --> src/process.rs:3:16
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::net::{IpAddr, Ipv4Addr};
[INFO] [stdout]   |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TcpStream`
[INFO] [stdout]  --> src/process.rs:8:31
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tokio::net::{TcpListener, TcpStream};
[INFO] [stdout]   |                               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::net::tcp::OwnedReadHalf`
[INFO] [stdout]  --> src/process.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tokio::net::tcp::OwnedReadHalf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `broadcast`
[INFO] [stdout]   --> src/process.rs:11:25
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::sync::{mpsc, broadcast};
[INFO] [stdout]    |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::update::AS::AS4`
[INFO] [stdout]   --> src/process.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::messages::update::AS::AS4;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `process`
[INFO] [stdout]   --> src/process.rs:19:24
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::{neighbors, process};
[INFO] [stdout]    |                        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Component::ParentDir`
[INFO] [stdout]  --> src/timers.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::path::Component::ParentDir;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::errors::BGPError::Message`
[INFO] [stdout]  --> src/errors.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::errors::BGPError::Message;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]  --> src/config.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::net::IpAddr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Mul`
[INFO] [stdout]  --> src/config.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ops::Mul;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::neighbors::PeerType`
[INFO] [stdout]  --> src/channels.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::neighbors::PeerType;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read` and `Write`
[INFO] [stdout]  --> src/main.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{io::{Read, Write}};
[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::net::Ipv4Addr`
[INFO] [stdout]  --> src/main.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::Ipv4Addr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::keepalive::*`
[INFO] [stdout]  --> src/main.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::messages::keepalive::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::open::*`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::messages::open::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BGPError`
[INFO] [stdout]  --> src/routes.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::errors::{BGPError, ProcessError};
[INFO] [stdout]   |                     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IpAddr`
[INFO] [stdout]  --> src/neighbors.rs:4:16
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::net::{IpAddr, Ipv4Addr};
[INFO] [stdout]   |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::errors::BGPError::Message`
[INFO] [stdout]   --> src/neighbors.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::errors::BGPError::Message;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::errors::EventError::UnhandledEvent`
[INFO] [stdout]   --> src/neighbors.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::errors::EventError::UnhandledEvent;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BGPVersion`
[INFO] [stdout]   --> src/neighbors.rs:25:74
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::messages::{extract_messages_from_rec_data, parse_packet_type, BGPVersion, MessageType};
[INFO] [stdout]    |                                                                          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_neighbor_ipv4_address_from_stream`
[INFO] [stdout]   --> src/neighbors.rs:27:51
[INFO] [stdout]    |
[INFO] [stdout] 27 | use crate::messages::open::{extract_open_message, get_neighbor_ipv4_address_from_stream, send_open, send_update, OpenMessage};
[INFO] [stdout]    |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BGPProcess`
[INFO] [stdout]   --> src/neighbors.rs:28:22
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::process::{BGPProcess, GlobalSettings };
[INFO] [stdout]    |                      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `is_4byte_asn_capability_present`
[INFO] [stdout]   --> src/neighbors.rs:31:44
[INFO] [stdout]    |
[INFO] [stdout] 31 | use crate::messages::optional_parameters::{is_4byte_asn_capability_present, Capability, OptionalParameters};
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::net::TcpStream`
[INFO] [stdout]  --> src/messages.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use tokio::net::TcpStream;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ipv4Addr`
[INFO] [stdout]  --> src/messages/keepalive.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::net::{ Ipv4Addr };
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TcpListener` and `TcpStream`
[INFO] [stdout]  --> src/messages/keepalive.rs:2:18
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tokio::net::{TcpStream, TcpListener};
[INFO] [stdout]   |                  ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncReadExt` and `self`
[INFO] [stdout]  --> src/messages/keepalive.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::io::{self, AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]   |                 ^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TcpListener`
[INFO] [stdout]  --> src/messages/open.rs:2:29
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tokio::net::{TcpStream, TcpListener};
[INFO] [stdout]   |                             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncReadExt` and `self`
[INFO] [stdout]  --> src/messages/open.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tokio::io::{self, AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]   |                 ^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/messages/open.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::MultiProtocolExtensionsConfig`
[INFO] [stdout]  --> src/messages/open.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::config::MultiProtocolExtensionsConfig;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::errors::MessageError::BadMultiProtocolExtValue`
[INFO] [stdout]  --> src/messages/open.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::errors::MessageError::BadMultiProtocolExtValue;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::finite_state_machine::State`
[INFO] [stdout]   --> src/messages/open.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::finite_state_machine::State;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::keepalive::*`
[INFO] [stdout]   --> src/messages/open.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::messages::keepalive::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Neighbor` and `PeerType`
[INFO] [stdout]   --> src/messages/open.rs:15:24
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::neighbors::{Neighbor, PeerType};
[INFO] [stdout]    |                        ^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::routes::NLRI`
[INFO] [stdout]   --> src/messages/open.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::routes::NLRI;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IpAddr`
[INFO] [stdout]  --> src/messages/update.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::net::{ Ipv4Addr, IpAddr};
[INFO] [stdout]   |                           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TcpListener` and `TcpStream`
[INFO] [stdout]  --> src/messages/update.rs:2:18
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tokio::net::{TcpStream, TcpListener};
[INFO] [stdout]   |                  ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Bytes`, `Read`, and `Write`
[INFO] [stdout]  --> src/messages/update.rs:5:15
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io::{Bytes, Read, Write};
[INFO] [stdout]   |               ^^^^^  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/messages/update.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread::current`
[INFO] [stdout]  --> src/messages/update.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::thread::current;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NeighborError`
[INFO] [stdout]  --> src/messages/update.rs:8:21
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::errors::{NeighborError, ProcessError};
[INFO] [stdout]   |                     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::keepalive::*`
[INFO] [stdout]   --> src/messages/update.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::messages::keepalive::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OptionalParameters`
[INFO] [stdout]   --> src/messages/update.rs:12:89
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::messages::optional_parameters::{is_4byte_asn_capability_present, Capability, OptionalParameters};
[INFO] [stdout]    |                                                                                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::neighbors::Neighbor`
[INFO] [stdout]   --> src/messages/update.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::neighbors::Neighbor;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `extract_u32_from_bytes`
[INFO] [stdout]   --> src/messages/update.rs:16:44
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::utils::{extract_u16_from_bytes, extract_u32_from_bytes, extract_u8_from_bytes};
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/messages/update.rs:988:13
[INFO] [stdout]     |
[INFO] [stdout] 988 |             ///
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 989 |             let route_len_bytes = get_route_len_bytes(prefix_len);
[INFO] [stdout]     |             ------------------------------------------------------ rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]     --> src/messages/update.rs:1002:13
[INFO] [stdout]      |
[INFO] [stdout] 1002 |               ///
[INFO] [stdout]      |               ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1005 | /             match NLRI::new(route_u32, prefix_len) {
[INFO] [stdout] 1006 | |                 Ok(nl) => { routes.push(nl); },
[INFO] [stdout] 1007 | |                 Err(e) => {
[INFO] [stdout] 1008 | |                     println!("Error: {:#?}", e);
[INFO] [stdout] 1009 | |                 }
[INFO] [stdout] 1010 | |             }
[INFO] [stdout]      | |_____________- rustdoc does not generate documentation for expressions
[INFO] [stdout]      |
[INFO] [stdout]      = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ipv4Addr`
[INFO] [stdout]  --> src/messages/route_refresh.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::net::{ Ipv4Addr};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TcpListener`
[INFO] [stdout]  --> src/messages/route_refresh.rs:2:29
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tokio::net::{TcpStream, TcpListener};
[INFO] [stdout]   |                             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncReadExt` and `self`
[INFO] [stdout]  --> src/messages/route_refresh.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tokio::io::{self, AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]   |                 ^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::Ipv4Addr`
[INFO] [stdout]  --> src/messages/notification.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::net::Ipv4Addr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BGPVersion`
[INFO] [stdout]  --> src/messages/notification.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::messages::{BGPVersion, MessageType};
[INFO] [stdout]   |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::keepalive::send_keepalive`
[INFO] [stdout]  --> src/messages/notification.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::messages::keepalive::send_keepalive;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::optional_parameters::Capability`
[INFO] [stdout]  --> src/messages/notification.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::messages::optional_parameters::Capability;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Flags`, `PAdata`, `PathAttribute`, `TypeCode`, `UpdateMessage`, and `extract_nlri_from_update_message`
[INFO] [stdout]   --> src/messages/notification.rs:10:31
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::messages::update::{extract_nlri_from_update_message, Flags, PAdata, PathAttribute, TypeCode, UpdateMessage};
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^  ^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::routes::NLRI`
[INFO] [stdout]   --> src/messages/notification.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::routes::NLRI;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `extract_u32_from_bytes` and `extract_u8_from_bytes`
[INFO] [stdout]   --> src/messages/notification.rs:13:44
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::utils::{extract_u16_from_bytes, extract_u32_from_bytes, extract_u8_from_bytes};
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::notification::NotifErrorMsgHdrSubCode`
[INFO] [stdout]   --> src/messages/optional_parameters.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::messages::notification::NotifErrorMsgHdrSubCode;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::update::AS`
[INFO] [stdout]   --> src/messages/optional_parameters.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::messages::update::AS;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `keepalive::*`
[INFO] [stdout]   --> src/messages.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use keepalive::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `open::*`
[INFO] [stdout]   --> src/messages.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use open::*;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `notification::*`
[INFO] [stdout]   --> src/messages.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use notification::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RouteRefreshMessage` and `handle_route_refresh_message`
[INFO] [stdout]   --> src/messages.rs:19:38
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::messages::route_refresh::{handle_route_refresh_message, RouteRefreshMessage};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::neighbors::Neighbor`
[INFO] [stdout]   --> src/messages.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::neighbors::Neighbor;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::process::BGPProcess`
[INFO] [stdout]   --> src/messages.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::process::BGPProcess;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::net::TcpStream`
[INFO] [stdout]  --> src/utils.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tokio::net::TcpStream;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BGPError`
[INFO] [stdout]  --> src/utils.rs:9:21
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::errors::{BGPError, MessageError, NeighborError};
[INFO] [stdout]   |                     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/finite_state_machine.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::errors::BGPError`
[INFO] [stdout]  --> src/finite_state_machine.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::errors::BGPError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `extract_messages_from_rec_data`
[INFO] [stdout]  --> src/finite_state_machine.rs:8:23
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::messages::{extract_messages_from_rec_data};
[INFO] [stdout]   |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::open::get_neighbor_ipv4_address_from_stream`
[INFO] [stdout]  --> src/finite_state_machine.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::messages::open::get_neighbor_ipv4_address_from_stream;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `events::*`
[INFO] [stdout]   --> src/finite_state_machine.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use events::*;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::keepalive::KeepaliveMessage`
[INFO] [stdout]   --> src/finite_state_machine/events.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use crate::messages::keepalive::KeepaliveMessage;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::timers::Timer`
[INFO] [stdout]  --> src/finite_state_machine/session_attributes.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::timers::Timer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IpAddr`
[INFO] [stdout]  --> src/process.rs:3:16
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::net::{IpAddr, Ipv4Addr};
[INFO] [stdout]   |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TcpStream`
[INFO] [stdout]  --> src/process.rs:8:31
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tokio::net::{TcpListener, TcpStream};
[INFO] [stdout]   |                               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::net::tcp::OwnedReadHalf`
[INFO] [stdout]  --> src/process.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tokio::net::tcp::OwnedReadHalf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `broadcast`
[INFO] [stdout]   --> src/process.rs:11:25
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::sync::{mpsc, broadcast};
[INFO] [stdout]    |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::messages::update::AS::AS4`
[INFO] [stdout]   --> src/process.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::messages::update::AS::AS4;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `process`
[INFO] [stdout]   --> src/process.rs:19:24
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::{neighbors, process};
[INFO] [stdout]    |                        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Component::ParentDir`
[INFO] [stdout]  --> src/timers.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::path::Component::ParentDir;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::errors::BGPError::Message`
[INFO] [stdout]  --> src/errors.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::errors::BGPError::Message;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]  --> src/config.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::net::IpAddr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Mul`
[INFO] [stdout]  --> src/config.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ops::Mul;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::neighbors::PeerType`
[INFO] [stdout]  --> src/channels.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::neighbors::PeerType;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/neighbors.rs:1464:32
[INFO] [stdout]      |
[INFO] [stdout] 1464 | pub async fn run_neighbor_loop(mut tcp_stream: tokio::net::TcpStream, mut neighbor: Neighbor, peer_ip: Ipv4Addr, rx_event_channel_...
[INFO] [stdout]      |                                ----^^^^^^^^^^
[INFO] [stdout]      |                                |
[INFO] [stdout]      |                                help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/neighbors.rs:1474:10
[INFO] [stdout]      |
[INFO] [stdout] 1474 |     let (mut tcp_read, mut tcp_write) = tcp_stream.into_split();
[INFO] [stdout]      |          ----^^^^^^^^
[INFO] [stdout]      |          |
[INFO] [stdout]      |          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/neighbors.rs:1474:24
[INFO] [stdout]      |
[INFO] [stdout] 1474 |     let (mut tcp_read, mut tcp_write) = tcp_stream.into_split();
[INFO] [stdout]      |                        ----^^^^^^^^^
[INFO] [stdout]      |                        |
[INFO] [stdout]      |                        help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/neighbors.rs:1464:32
[INFO] [stdout]      |
[INFO] [stdout] 1464 | pub async fn run_neighbor_loop(mut tcp_stream: tokio::net::TcpStream, mut neighbor: Neighbor, peer_ip: Ipv4Addr, rx_event_channel_...
[INFO] [stdout]      |                                ----^^^^^^^^^^
[INFO] [stdout]      |                                |
[INFO] [stdout]      |                                help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/neighbors.rs:1474:10
[INFO] [stdout]      |
[INFO] [stdout] 1474 |     let (mut tcp_read, mut tcp_write) = tcp_stream.into_split();
[INFO] [stdout]      |          ----^^^^^^^^
[INFO] [stdout]      |          |
[INFO] [stdout]      |          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/neighbors.rs:1474:24
[INFO] [stdout]      |
[INFO] [stdout] 1474 |     let (mut tcp_read, mut tcp_write) = tcp_stream.into_split();
[INFO] [stdout]      |                        ----^^^^^^^^^
[INFO] [stdout]      |                        |
[INFO] [stdout]      |                        help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/process.rs:295:21
[INFO] [stdout]     |
[INFO] [stdout] 295 |                 Ok((mut tcp_stream, sa)) => {
[INFO] [stdout]     |                     ----^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/process.rs:295:21
[INFO] [stdout]     |
[INFO] [stdout] 295 |                 Ok((mut tcp_stream, sa)) => {
[INFO] [stdout]     |                     ----^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/process.rs:760:41
[INFO] [stdout]     |
[INFO] [stdout] 760 | ...                   let mut bgp_proc = bgp_proc_arc.lock().await;
[INFO] [stdout]     |                           ----^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/process.rs:612:86
[INFO] [stdout]     |
[INFO] [stdout] 612 |     pub async fn run_recv_message_channel_loop(bgp_proc_arc: Arc<Mutex<BGPProcess>>, mut all_neighbors_channels_arc: Arc<Mutex<Hash...
[INFO] [stdout]     |                                                                                      ----^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                                                      |
[INFO] [stdout]     |                                                                                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/process.rs:760:41
[INFO] [stdout]     |
[INFO] [stdout] 760 | ...                   let mut bgp_proc = bgp_proc_arc.lock().await;
[INFO] [stdout]     |                           ----^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/process.rs:612:86
[INFO] [stdout]     |
[INFO] [stdout] 612 |     pub async fn run_recv_message_channel_loop(bgp_proc_arc: Arc<Mutex<BGPProcess>>, mut all_neighbors_channels_arc: Arc<Mutex<Hash...
[INFO] [stdout]     |                                                                                      ----^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                                                      |
[INFO] [stdout]     |                                                                                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `peer_ip`
[INFO] [stdout]   --> src/neighbors.rs:78:65
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub async fn run_timer_loop(neighbor_arc: Arc<Mutex<Neighbor>>, peer_ip: Ipv4Addr) {
[INFO] [stdout]    |                                                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peer_ip`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg`
[INFO] [stdout]    --> src/neighbors.rs:928:36
[INFO] [stdout]     |
[INFO] [stdout] 928 |                     Event::OpenMsg(msg) => {
[INFO] [stdout]     |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_msg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg`
[INFO] [stdout]     --> src/neighbors.rs:1068:36
[INFO] [stdout]      |
[INFO] [stdout] 1068 |                     Event::OpenMsg(msg) => {
[INFO] [stdout]      |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_msg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg`
[INFO] [stdout]     --> src/neighbors.rs:1093:37
[INFO] [stdout]      |
[INFO] [stdout] 1093 |                     Event::NotifMsg(msg) => {
[INFO] [stdout]      |                                     ^^^ help: if this is intentional, prefix it with an underscore: `_msg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg`
[INFO] [stdout]     --> src/neighbors.rs:1165:44
[INFO] [stdout]      |
[INFO] [stdout] 1165 |                     Event::RouteRefreshMsg(msg) => {
[INFO] [stdout]      |                                            ^^^ help: if this is intentional, prefix it with an underscore: `_msg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nlri`
[INFO] [stdout]     --> src/neighbors.rs:1196:34
[INFO] [stdout]      |
[INFO] [stdout] 1196 | ...                   for (nlri, route) in &self.adj_rib_out {
[INFO] [stdout]      |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_nlri`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `peer_ip`
[INFO] [stdout]   --> src/neighbors.rs:78:65
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub async fn run_timer_loop(neighbor_arc: Arc<Mutex<Neighbor>>, peer_ip: Ipv4Addr) {
[INFO] [stdout]    |                                                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peer_ip`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg`
[INFO] [stdout]    --> src/neighbors.rs:928:36
[INFO] [stdout]     |
[INFO] [stdout] 928 |                     Event::OpenMsg(msg) => {
[INFO] [stdout]     |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_msg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]     --> src/neighbors.rs:1425:16
[INFO] [stdout]      |
[INFO] [stdout] 1425 |     if let Err(e) = tcp_channel_tx.send(TCPChannelMessage::DropTCP).await {
[INFO] [stdout]      |                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg`
[INFO] [stdout]     --> src/neighbors.rs:1068:36
[INFO] [stdout]      |
[INFO] [stdout] 1068 |                     Event::OpenMsg(msg) => {
[INFO] [stdout]      |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_msg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg`
[INFO] [stdout]     --> src/neighbors.rs:1093:37
[INFO] [stdout]      |
[INFO] [stdout] 1093 |                     Event::NotifMsg(msg) => {
[INFO] [stdout]      |                                     ^^^ help: if this is intentional, prefix it with an underscore: `_msg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg`
[INFO] [stdout]     --> src/neighbors.rs:1165:44
[INFO] [stdout]      |
[INFO] [stdout] 1165 |                     Event::RouteRefreshMsg(msg) => {
[INFO] [stdout]      |                                            ^^^ help: if this is intentional, prefix it with an underscore: `_msg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nlri`
[INFO] [stdout]     --> src/neighbors.rs:1196:34
[INFO] [stdout]      |
[INFO] [stdout] 1196 | ...                   for (nlri, route) in &self.adj_rib_out {
[INFO] [stdout]      |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_nlri`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fsm`
[INFO] [stdout]    --> src/neighbors.rs:157:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |         let fsm = FSM {
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_fsm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]     --> src/neighbors.rs:1425:16
[INFO] [stdout]      |
[INFO] [stdout] 1425 |     if let Err(e) = tcp_channel_tx.send(TCPChannelMessage::DropTCP).await {
[INFO] [stdout]      |                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mp_ex_cap_len`
[INFO] [stdout]   --> src/messages/open.rs:74:21
[INFO] [stdout]    |
[INFO] [stdout] 74 |                 let mp_ex_cap_len = extract_u8_from_bytes(tsbuf, cap_curr_idx, cap_curr_idx + 1)?;
[INFO] [stdout]    |                     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mp_ex_cap_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `as_ex_cap_len`
[INFO] [stdout]   --> src/messages/open.rs:93:21
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let as_ex_cap_len = extract_u8_from_bytes(tsbuf, cap_curr_idx, cap_curr_idx + 1)?;
[INFO] [stdout]    |                     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_as_ex_cap_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cap_curr_idx` is never read
[INFO] [stdout]   --> src/messages/open.rs:97:17
[INFO] [stdout]    |
[INFO] [stdout] 97 |                 cap_curr_idx += 4;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fsm`
[INFO] [stdout]    --> src/neighbors.rs:157:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |         let fsm = FSM {
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_fsm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `as_num`
[INFO] [stdout]    --> src/messages/update.rs:237:21
[INFO] [stdout]     |
[INFO] [stdout] 237 |             AS::AS2(as_num) => Err(ProcessError::AS2Unhandled),
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_as_num`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `as_num`
[INFO] [stdout]    --> src/messages/update.rs:244:21
[INFO] [stdout]     |
[INFO] [stdout] 244 |             AS::AS4(as_num) => Err(ProcessError::AS4Unhandled),
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_as_num`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mp_ex_cap_len`
[INFO] [stdout]   --> src/messages/open.rs:74:21
[INFO] [stdout]    |
[INFO] [stdout] 74 |                 let mp_ex_cap_len = extract_u8_from_bytes(tsbuf, cap_curr_idx, cap_curr_idx + 1)?;
[INFO] [stdout]    |                     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mp_ex_cap_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `as_ex_cap_len`
[INFO] [stdout]   --> src/messages/open.rs:93:21
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let as_ex_cap_len = extract_u8_from_bytes(tsbuf, cap_curr_idx, cap_curr_idx + 1)?;
[INFO] [stdout]    |                     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_as_ex_cap_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cap_curr_idx` is never read
[INFO] [stdout]   --> src/messages/open.rs:97:17
[INFO] [stdout]    |
[INFO] [stdout] 97 |                 cap_curr_idx += 4;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `as_obj`
[INFO] [stdout]    --> src/messages/update.rs:721:21
[INFO] [stdout]     |
[INFO] [stdout] 721 |                 let as_obj = match prev_as {
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_as_obj`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `atomic_agg`
[INFO] [stdout]    --> src/messages/update.rs:865:37
[INFO] [stdout]     |
[INFO] [stdout] 865 |             PAdata::AtomicAggregate(atomic_agg) => {
[INFO] [stdout]     |                                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_atomic_agg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `route_size`
[INFO] [stdout]    --> src/messages/update.rs:976:9
[INFO] [stdout]     |
[INFO] [stdout] 976 |     let route_size = 4;
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_route_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `as_num`
[INFO] [stdout]    --> src/messages/update.rs:237:21
[INFO] [stdout]     |
[INFO] [stdout] 237 |             AS::AS2(as_num) => Err(ProcessError::AS2Unhandled),
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_as_num`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `as_num`
[INFO] [stdout]    --> src/messages/update.rs:244:21
[INFO] [stdout]     |
[INFO] [stdout] 244 |             AS::AS4(as_num) => Err(ProcessError::AS4Unhandled),
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_as_num`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_idx` is never read
[INFO] [stdout]    --> src/messages/update.rs:973:27
[INFO] [stdout]     |
[INFO] [stdout] 973 |     let mut current_idx = 0;
[INFO] [stdout]     |                           ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 982 |             current_idx = base_idx + (route_and_len_size as usize * x);
[INFO] [stdout]     |             ---------------------------------------------------------- `current_idx` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_idx` is never read
[INFO] [stdout]     --> src/messages/update.rs:1012:13
[INFO] [stdout]      |
[INFO] [stdout] 1012 |             current_idx += route_len_bytes;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/messages/update.rs:1139:9
[INFO] [stdout]      |
[INFO] [stdout] 1139 |     let mut route_len_bytes = get_route_len_bytes(prefix_len);
[INFO] [stdout]      |         ----^^^^^^^^^^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message_len`
[INFO] [stdout]     --> src/messages/update.rs:1135:58
[INFO] [stdout]      |
[INFO] [stdout] 1135 | ...ge(tsbuf: &Vec<u8>, message_len: usize, mut current_idx: usize) -> Result<Option<Vec<NLRI>>,MessageError> {
[INFO] [stdout]      |                        ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_idx` is never read
[INFO] [stdout]     --> src/messages/update.rs:1155:5
[INFO] [stdout]      |
[INFO] [stdout] 1155 |     current_idx += route_len_bytes;
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/messages/update.rs:1221:181
[INFO] [stdout]      |
[INFO] [stdout] 1221 | ...16, path_attributes: Option<Vec<PathAttribute>>, mut nlri: Option<Vec<NLRI>>, capabilities: &Option<Vec<Capability>> ) -> Resul...
[INFO] [stdout]      |                                                     ----^^^^
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `as4_capability`
[INFO] [stdout]     --> src/messages/update.rs:1222:13
[INFO] [stdout]      |
[INFO] [stdout] 1222 |         let as4_capability = if let Some(cap) = capabilities {
[INFO] [stdout]      |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_as4_capability`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/messages/update.rs:1306:13
[INFO] [stdout]      |
[INFO] [stdout] 1306 |         let mut nlri_len: u16 = 0;
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nlri_len`
[INFO] [stdout]     --> src/messages/update.rs:1306:13
[INFO] [stdout]      |
[INFO] [stdout] 1306 |         let mut nlri_len: u16 = 0;
[INFO] [stdout]      |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nlri_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tcp_stream`
[INFO] [stdout]   --> src/messages/route_refresh.rs:10:37
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn handle_route_refresh_message(tcp_stream: &mut TcpStream, tsbuf: &Vec<u8>) -> Result<(), MessageError> {
[INFO] [stdout]    |                                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tcp_stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ts`
[INFO] [stdout]   --> src/messages/route_refresh.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 15 |         Some(ts) => {
[INFO] [stdout]    |              ^^ help: if this is intentional, prefix it with an underscore: `_ts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `as_obj`
[INFO] [stdout]    --> src/messages/update.rs:721:21
[INFO] [stdout]     |
[INFO] [stdout] 721 |                 let as_obj = match prev_as {
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_as_obj`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/messages/notification.rs:291:13
[INFO] [stdout]     |
[INFO] [stdout] 291 |         let mut dt = Vec::new();
[INFO] [stdout]     |             ----^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tcp_stream`
[INFO] [stdout]    --> src/messages/notification.rs:308:42
[INFO] [stdout]     |
[INFO] [stdout] 308 | pub async fn handle_notification_message(tcp_stream: &mut TcpStream, tsbuf: &Vec<u8>, bgp_proc: &mut BGPProcess) -> Result<(), Mess...
[INFO] [stdout]     |                                          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tcp_stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tsbuf`
[INFO] [stdout]    --> src/messages/notification.rs:308:70
[INFO] [stdout]     |
[INFO] [stdout] 308 | ...cp_stream: &mut TcpStream, tsbuf: &Vec<u8>, bgp_proc: &mut BGPProcess) -> Result<(), MessageError> {
[INFO] [stdout]     |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_tsbuf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bgp_proc`
[INFO] [stdout]    --> src/messages/notification.rs:308:87
[INFO] [stdout]     |
[INFO] [stdout] 308 | ...tream, tsbuf: &Vec<u8>, bgp_proc: &mut BGPProcess) -> Result<(), MessageError> {
[INFO] [stdout]     |                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bgp_proc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `atomic_agg`
[INFO] [stdout]    --> src/messages/update.rs:865:37
[INFO] [stdout]     |
[INFO] [stdout] 865 |             PAdata::AtomicAggregate(atomic_agg) => {
[INFO] [stdout]     |                                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_atomic_agg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `as4_bytes`
[INFO] [stdout]    --> src/messages/optional_parameters.rs:102:21
[INFO] [stdout]     |
[INFO] [stdout] 102 |                 let as4_bytes = bytes.extend_from_slice(&as_num.to_be_bytes());
[INFO] [stdout]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_as4_bytes`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `route_size`
[INFO] [stdout]    --> src/messages/update.rs:976:9
[INFO] [stdout]     |
[INFO] [stdout] 976 |     let route_size = 4;
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_route_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_idx` is never read
[INFO] [stdout]    --> src/messages/update.rs:973:27
[INFO] [stdout]     |
[INFO] [stdout] 973 |     let mut current_idx = 0;
[INFO] [stdout]     |                           ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 982 |             current_idx = base_idx + (route_and_len_size as usize * x);
[INFO] [stdout]     |             ---------------------------------------------------------- `current_idx` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_idx` is never read
[INFO] [stdout]     --> src/messages/update.rs:1012:13
[INFO] [stdout]      |
[INFO] [stdout] 1012 |             current_idx += route_len_bytes;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/messages/update.rs:1139:9
[INFO] [stdout]      |
[INFO] [stdout] 1139 |     let mut route_len_bytes = get_route_len_bytes(prefix_len);
[INFO] [stdout]      |         ----^^^^^^^^^^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message_len`
[INFO] [stdout]     --> src/messages/update.rs:1135:58
[INFO] [stdout]      |
[INFO] [stdout] 1135 | ...ge(tsbuf: &Vec<u8>, message_len: usize, mut current_idx: usize) -> Result<Option<Vec<NLRI>>,MessageError> {
[INFO] [stdout]      |                        ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_idx` is never read
[INFO] [stdout]     --> src/messages/update.rs:1155:5
[INFO] [stdout]      |
[INFO] [stdout] 1155 |     current_idx += route_len_bytes;
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/messages/update.rs:1221:181
[INFO] [stdout]      |
[INFO] [stdout] 1221 | ...16, path_attributes: Option<Vec<PathAttribute>>, mut nlri: Option<Vec<NLRI>>, capabilities: &Option<Vec<Capability>> ) -> Resul...
[INFO] [stdout]      |                                                     ----^^^^
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `as4_capability`
[INFO] [stdout]     --> src/messages/update.rs:1222:13
[INFO] [stdout]      |
[INFO] [stdout] 1222 |         let as4_capability = if let Some(cap) = capabilities {
[INFO] [stdout]      |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_as4_capability`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/messages/update.rs:1306:13
[INFO] [stdout]      |
[INFO] [stdout] 1306 |         let mut nlri_len: u16 = 0;
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nlri_len`
[INFO] [stdout]     --> src/messages/update.rs:1306:13
[INFO] [stdout]      |
[INFO] [stdout] 1306 |         let mut nlri_len: u16 = 0;
[INFO] [stdout]      |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nlri_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ip6`
[INFO] [stdout]   --> src/utils.rs:55:28
[INFO] [stdout]    |
[INFO] [stdout] 55 |                 IpAddr::V6(ip6) => Err(NeighborError::NeighborIsIPV6)
[INFO] [stdout]    |                            ^^^ help: if this is intentional, prefix it with an underscore: `_ip6`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tcp_stream`
[INFO] [stdout]   --> src/messages/route_refresh.rs:10:37
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn handle_route_refresh_message(tcp_stream: &mut TcpStream, tsbuf: &Vec<u8>) -> Result<(), MessageError> {
[INFO] [stdout]    |                                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tcp_stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ts`
[INFO] [stdout]   --> src/messages/route_refresh.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 15 |         Some(ts) => {
[INFO] [stdout]    |              ^^ help: if this is intentional, prefix it with an underscore: `_ts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fsm`
[INFO] [stdout]   --> src/finite_state_machine.rs:87:16
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn run(fsm: &mut FSM, bgp_proc: Arc<Mutex<BGPProcess>>, tcp_stream: TcpStream) {
[INFO] [stdout]    |                ^^^ help: if this is intentional, prefix it with an underscore: `_fsm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bgp_proc`
[INFO] [stdout]   --> src/finite_state_machine.rs:87:31
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn run(fsm: &mut FSM, bgp_proc: Arc<Mutex<BGPProcess>>, tcp_stream: TcpStream) {
[INFO] [stdout]    |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bgp_proc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tcp_stream`
[INFO] [stdout]   --> src/finite_state_machine.rs:87:65
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn run(fsm: &mut FSM, bgp_proc: Arc<Mutex<BGPProcess>>, tcp_stream: TcpStream) {
[INFO] [stdout]    |                                                                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tcp_stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/messages/notification.rs:291:13
[INFO] [stdout]     |
[INFO] [stdout] 291 |         let mut dt = Vec::new();
[INFO] [stdout]     |             ----^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tcp_stream`
[INFO] [stdout]    --> src/messages/notification.rs:308:42
[INFO] [stdout]     |
[INFO] [stdout] 308 | pub async fn handle_notification_message(tcp_stream: &mut TcpStream, tsbuf: &Vec<u8>, bgp_proc: &mut BGPProcess) -> Result<(), Mess...
[INFO] [stdout]     |                                          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tcp_stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tsbuf`
[INFO] [stdout]    --> src/messages/notification.rs:308:70
[INFO] [stdout]     |
[INFO] [stdout] 308 | ...cp_stream: &mut TcpStream, tsbuf: &Vec<u8>, bgp_proc: &mut BGPProcess) -> Result<(), MessageError> {
[INFO] [stdout]     |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_tsbuf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bgp_proc`
[INFO] [stdout]    --> src/messages/notification.rs:308:87
[INFO] [stdout]     |
[INFO] [stdout] 308 | ...tream, tsbuf: &Vec<u8>, bgp_proc: &mut BGPProcess) -> Result<(), MessageError> {
[INFO] [stdout]     |                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bgp_proc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `as4_bytes`
[INFO] [stdout]    --> src/messages/optional_parameters.rs:102:21
[INFO] [stdout]     |
[INFO] [stdout] 102 |                 let as4_bytes = bytes.extend_from_slice(&as_num.to_be_bytes());
[INFO] [stdout]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_as4_bytes`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `neighbor_ip`
[INFO] [stdout]    --> src/process.rs:707:26
[INFO] [stdout]     |
[INFO] [stdout] 707 |                     for (neighbor_ip, route_channel) in &mut *all_neighbors_channels {
[INFO] [stdout]     |                          ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neighbor_ip`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tcp_stream`
[INFO] [stdout]    --> src/process.rs:767:64
[INFO] [stdout]     |
[INFO] [stdout] 767 | ...                   ChannelMessage::TcpEstablished(tcp_stream) => {
[INFO] [stdout]     |                                                      ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tcp_stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ip6`
[INFO] [stdout]   --> src/utils.rs:55:28
[INFO] [stdout]    |
[INFO] [stdout] 55 |                 IpAddr::V6(ip6) => Err(NeighborError::NeighborIsIPV6)
[INFO] [stdout]    |                            ^^^ help: if this is intentional, prefix it with an underscore: `_ip6`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fsm`
[INFO] [stdout]   --> src/finite_state_machine.rs:87:16
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn run(fsm: &mut FSM, bgp_proc: Arc<Mutex<BGPProcess>>, tcp_stream: TcpStream) {
[INFO] [stdout]    |                ^^^ help: if this is intentional, prefix it with an underscore: `_fsm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bgp_proc`
[INFO] [stdout]   --> src/finite_state_machine.rs:87:31
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn run(fsm: &mut FSM, bgp_proc: Arc<Mutex<BGPProcess>>, tcp_stream: TcpStream) {
[INFO] [stdout]    |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bgp_proc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tcp_stream`
[INFO] [stdout]   --> src/finite_state_machine.rs:87:65
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn run(fsm: &mut FSM, bgp_proc: Arc<Mutex<BGPProcess>>, tcp_stream: TcpStream) {
[INFO] [stdout]    |                                                                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tcp_stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `neighbor_ip`
[INFO] [stdout]    --> src/process.rs:707:26
[INFO] [stdout]     |
[INFO] [stdout] 707 |                     for (neighbor_ip, route_channel) in &mut *all_neighbors_channels {
[INFO] [stdout]     |                          ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neighbor_ip`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tcp_stream`
[INFO] [stdout]    --> src/process.rs:767:64
[INFO] [stdout]     |
[INFO] [stdout] 767 | ...                   ChannelMessage::TcpEstablished(tcp_stream) => {
[INFO] [stdout]     |                                                      ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tcp_stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let mut bgp: Arc<Mutex<BGPProcess>> = Arc::new(Mutex::new(BGPProcess::new("bgp_config.toml")));
[INFO] [stdout]    |         ----^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `BestPathResult` is more private than the item `process::BGPProcess::choose_best_path`
[INFO] [stdout]    --> src/process.rs:121:5
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub fn choose_best_path(curr_best_path: &RouteV4, candidate_path: &RouteV4, default_local_pref: u32) -> BestPathResult {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `process::BGPProcess::choose_best_path` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `BestPathResult` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/process.rs:53:1
[INFO] [stdout]     |
[INFO] [stdout]  53 | enum BestPathResult {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RouteCast` is never used
[INFO] [stdout]   --> src/routes.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum RouteCast {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `V6` is never constructed
[INFO] [stdout]   --> src/neighbors.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub enum IPType {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 35 |     V4,
[INFO] [stdout] 36 |     V6
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IPType` 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 `ip_type` is never read
[INFO] [stdout]   --> src/neighbors.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct Neighbor {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub ip_type: IPType,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Neighbor` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_4byte_asn_negotiated`, `set_keepalive_time`, `set_hold_time`, and `handle_update_message` are never used
[INFO] [stdout]     --> src/neighbors.rs:118:12
[INFO] [stdout]      |
[INFO] [stdout]  117 | impl Neighbor {
[INFO] [stdout]      | ------------- methods in this implementation
[INFO] [stdout]  118 |     pub fn is_4byte_asn_negotiated(&mut self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  131 |     pub fn set_keepalive_time(&mut self, keepalive_time_sec: u16) -> Result<(), MessageError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  139 |     pub fn set_hold_time(&mut self, hold_time_sec: u16) -> Result<(), MessageError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1251 |     pub async fn handle_update_message(&mut self, tsbuf: &Vec<u8>) -> Result<(), BGPError> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `IPv4` and `IPv6` are never constructed
[INFO] [stdout]   --> src/messages.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum AddressFamily {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] 31 |     IPv4,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 32 |     IPv6,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AddressFamily` 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: function `locate_marker_in_message` is never used
[INFO] [stdout]    --> src/messages.rs:138:8
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn locate_marker_in_message(tsbuf: &[u8], migrated_data_len: usize) -> Result<(), MessageError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_neighbor_ipv4_address_from_stream` is never used
[INFO] [stdout]    --> src/messages/open.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub fn get_neighbor_ipv4_address_from_stream(tcp_stream: &TcpStream) -> Result<Ipv4Addr, NeighborError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `AS2_from_vec_u8` and `AS4_from_vec_u8` are never used
[INFO] [stdout]    --> src/messages/update.rs:349:12
[INFO] [stdout]     |
[INFO] [stdout] 264 | impl AsPath {
[INFO] [stdout]     | ----------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 349 |     pub fn AS2_from_vec_u8(bytes: &Vec<u8>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 378 |     pub fn AS4_from_vec_u8(bytes: &Vec<u8>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_next_hop_from_ipv4`, `new_as_path_from_as_list`, `new_origin_from_type`, and `get_pa_data_from_pa` are never used
[INFO] [stdout]    --> src/messages/update.rs:625:12
[INFO] [stdout]     |
[INFO] [stdout] 598 | impl PathAttribute {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 625 |     pub fn new_next_hop_from_ipv4(nhp_ip: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 673 |     pub fn new_as_path_from_as_list(as_list_vec: Vec<u32>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 774 |     pub fn new_origin_from_type(origin_type: OriginType) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 876 |     pub fn get_pa_data_from_pa(&self, type_code: TypeCode) -> Option<PAdata> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_route_refresh_message` is never used
[INFO] [stdout]   --> src/messages/route_refresh.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn handle_route_refresh_message(tcp_stream: &mut TcpStream, tsbuf: &Vec<u8>) -> Result<(), MessageError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_route_refresh` is never used
[INFO] [stdout]   --> src/messages/route_refresh.rs:34:14
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub async fn send_route_refresh(stream: &mut TcpStream, afi: AddressFamily, safi: SAFI) -> Result<(), MessageError> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Unicast` and `Multicast` are never constructed
[INFO] [stdout]   --> src/messages/route_refresh.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub enum SAFI {
[INFO] [stdout]    |          ---- variants in this enum
[INFO] [stdout] 46 |     Unicast,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 47 |     Multicast
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SAFI` 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` and `convert_to_bytes` are never used
[INFO] [stdout]   --> src/messages/route_refresh.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | impl RouteRefreshMessage {
[INFO] [stdout]    | ------------------------ associated items in this implementation
[INFO] [stdout] 61 |     pub fn new(afi: AddressFamily, safi: SAFI) -> Result<Self, MessageError> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn convert_to_bytes(&self) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_notification_message` is never used
[INFO] [stdout]    --> src/messages/notification.rs:308:14
[INFO] [stdout]     |
[INFO] [stdout] 308 | pub async fn handle_notification_message(tcp_stream: &mut TcpStream, tsbuf: &Vec<u8>, bgp_proc: &mut BGPProcess) -> Result<(), Mess...
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_slice_from_bytes` is never used
[INFO] [stdout]   --> src/utils.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn extract_slice_from_bytes<'a>(tsbuf: &'a Vec<u8>, start_index: usize, end_index:usize) -> Result<&'a [u8], MessageError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_neighbor_ipv4_address` is never used
[INFO] [stdout]   --> src/utils.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn get_neighbor_ipv4_address(peer_ip: IpAddr) -> Result<Ipv4Addr, NeighborError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `allow_automatic_start`, `allow_automatic_stop`, `accept_connections_unconfigured_peers`, and `track_tcp_state` are never read
[INFO] [stdout]   --> src/finite_state_machine.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct FSM {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub allow_automatic_start: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 41 |     pub allow_automatic_stop: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub accept_connections_unconfigured_peers: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 46 |     pub passive_tcp_establishment: bool,
[INFO] [stdout] 47 |     pub track_tcp_state: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FSM` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `run` is never used
[INFO] [stdout]   --> src/finite_state_machine.rs:87:12
[INFO] [stdout]    |
[INFO] [stdout] 84 | impl FSM {
[INFO] [stdout]    | -------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn run(fsm: &mut FSM, bgp_proc: Arc<Mutex<BGPProcess>>, tcp_stream: TcpStream) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/finite_state_machine/events.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub enum Event {
[INFO] [stdout]    |          ----- variants in this enum
[INFO] [stdout] 37 |     // Administrative events
[INFO] [stdout] 38 |     ManualStart,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 39 |     ManualStop,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 40 |     AutomaticStart,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 41 |     ManualStartWithPassiveTcpEstablishment,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 42 |     AutomaticStartWithPassiveTcpEstablishment,
[INFO] [stdout] 43 |     AutomaticStartWithDampPeerOscillations,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 44 |     AutomaticStartWithDampPeerOscillationsAndPassiveTcpEstablishment,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 45 |     AutomaticStop,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     TcpConnectionValid,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 54 |     TcpCRInvalid,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 55 |     TcpCRAcked,
[INFO] [stdout] 56 |     TcpConnectionConfirmed,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     BGPOpenWithDelayOpenTimerRunning,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 61 |     BGPHeaderErr,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 62 |     BGPOpenMsgErr,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 63 |     OpenCollisionDump,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     NotifMsgVerErr,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     RouteRefreshMsg(RouteRefreshMessage), // custom event I added to handle the message type
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 69 |     UpdateMsgErr,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Event` 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 `has_updates` is never read
[INFO] [stdout]   --> src/process.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct RIB {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] 61 |     routes: HashMap<NLRI, Vec<RouteV4>>,
[INFO] [stdout] 62 |     pub has_updates: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RIB` 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 `get_neighbor_config` is never used
[INFO] [stdout]    --> src/process.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout]  87 | impl BGPProcess {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn get_neighbor_config(&self, ipv4addr: Ipv4Addr) -> Result<NeighborConfig, NeighborError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_max_time` is never used
[INFO] [stdout]   --> src/timers.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Timer {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn set_max_time(&mut self, max_time_sec: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `KeepaliveGreaterThanHoldTime`, `KeepaliveEqualToHoldTime`, `NeighborIPNotEstablished`, `NeighborAlreadyEstablished`, `UnableToRemoveNeighbor`, and `ConfiguredNeighborNotFound` are never constructed
[INFO] [stdout]   --> src/errors.rs:5:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum NeighborError {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout]  5 |     KeepaliveGreaterThanHoldTime,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  6 |     KeepaliveEqualToHoldTime,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 10 |     NeighborIPNotEstablished,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     NeighborAlreadyEstablished,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 12 |     UnableToRemoveNeighbor,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     ConfiguredNeighborNotFound,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NeighborError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `NoLenFound`, `RouteRefreshMissingAFI`, `PeerIPNotEstablished`, and `BadNotifErrorSubCode` are never constructed
[INFO] [stdout]   --> src/errors.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub enum MessageError {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 25 |     NoMarkerFound,
[INFO] [stdout] 26 |     NoLenFound,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     RouteRefreshMissingAFI,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     PeerIPNotEstablished,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     BadNotifErrorSubCode,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MessageError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Down` and `Full` are never constructed
[INFO] [stdout]   --> src/errors.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub enum ChannelError {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 74 |     Down,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 75 |     Full,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ChannelError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/config.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | impl MultiProtocolExtensionsConfig {
[INFO] [stdout]    | ---------------------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn new(afi: u16, safi: u8) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NeighborChannelWatcher` is never constructed
[INFO] [stdout]  --> src/channels.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct NeighborChannelWatcher {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NoMessageWaiting` is never constructed
[INFO] [stdout]   --> src/channels.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum ChannelWatcherMessage {
[INFO] [stdout]    |          --------------------- variant in this enum
[INFO] [stdout] 18 |     MessageWaiting,
[INFO] [stdout] 19 |     NoMessageWaiting
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ChannelWatcherMessage` 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: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let mut bgp: Arc<Mutex<BGPProcess>> = Arc::new(Mutex::new(BGPProcess::new("bgp_config.toml")));
[INFO] [stdout]    |         ----^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/neighbors.rs:343:25
[INFO] [stdout]     |
[INFO] [stdout] 343 |                         self.generate_event(Event::AutomaticStartWithPassiveTcpEstablishment);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 343 |                         let _ = self.generate_event(Event::AutomaticStartWithPassiveTcpEstablishment);
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1274:13
[INFO] [stdout]      |
[INFO] [stdout] 1274 |             self.generate_event(Event::ConnectRetryTimerExpires);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1274 |             let _ = self.generate_event(Event::ConnectRetryTimerExpires);
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1278:13
[INFO] [stdout]      |
[INFO] [stdout] 1278 |             self.generate_event(Event::HoldTimerExpires);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1278 |             let _ = self.generate_event(Event::HoldTimerExpires);
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1282:13
[INFO] [stdout]      |
[INFO] [stdout] 1282 |             self.generate_event(Event::KeepaliveTimerExpires);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1282 |             let _ = self.generate_event(Event::KeepaliveTimerExpires);
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1286:13
[INFO] [stdout]      |
[INFO] [stdout] 1286 |             self.generate_event(Event::DelayOpenTimerExpires);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1286 |             let _ = self.generate_event(Event::DelayOpenTimerExpires);
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1290:13
[INFO] [stdout]      |
[INFO] [stdout] 1290 |             self.generate_event(Event::IdleHoldTimerExpires);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1290 |             let _ = self.generate_event(Event::IdleHoldTimerExpires);
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1319:17
[INFO] [stdout]      |
[INFO] [stdout] 1319 |                 self.generate_event(Event::OpenMsg(received_msg));
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1319 |                 let _ = self.generate_event(Event::OpenMsg(received_msg));
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1324:17
[INFO] [stdout]      |
[INFO] [stdout] 1324 |                 self.generate_event(Event::UpdateMsg(received_msg));
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1324 |                 let _ = self.generate_event(Event::UpdateMsg(received_msg));
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1330:17
[INFO] [stdout]      |
[INFO] [stdout] 1330 |                 self.generate_event(Event::NotifMsg(received_msg));
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1330 |                 let _ = self.generate_event(Event::NotifMsg(received_msg));
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1334:17
[INFO] [stdout]      |
[INFO] [stdout] 1334 |                 self.generate_event(Event::KeepAliveMsg);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1334 |                 let _ = self.generate_event(Event::KeepAliveMsg);
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1348:9
[INFO] [stdout]      |
[INFO] [stdout] 1348 |         self.generate_event(Event::SendUpdateMsg);
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1348 |         let _ = self.generate_event(Event::SendUpdateMsg);
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1370:13
[INFO] [stdout]      |
[INFO] [stdout] 1370 |             self.generate_event(Event::TcpConnectionFails);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1370 |             let _ = self.generate_event(Event::TcpConnectionFails);
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1373:13
[INFO] [stdout]      |
[INFO] [stdout] 1373 |             self.generate_event(Event::AutomaticStartWithPassiveTcpEstablishment);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1373 |             let _ = self.generate_event(Event::AutomaticStartWithPassiveTcpEstablishment);
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1523:17
[INFO] [stdout]      |
[INFO] [stdout] 1523 |                 n.generate_event(Event::TcpCRAcked);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1523 |                 let _ = n.generate_event(Event::TcpCRAcked);
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1593:37
[INFO] [stdout]      |
[INFO] [stdout] 1593 | ...                   neighbor.generate_event(Event::TcpConnectionFails);
[INFO] [stdout]      |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1593 |                                     let _ = neighbor.generate_event(Event::TcpConnectionFails);
[INFO] [stdout]      |                                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1596:37
[INFO] [stdout]      |
[INFO] [stdout] 1596 | ...                   neighbor.generate_event(Event::AutomaticStartWithPassiveTcpEstablishment);
[INFO] [stdout]      |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1596 |                                     let _ = neighbor.generate_event(Event::AutomaticStartWithPassiveTcpEstablishment);
[INFO] [stdout]      |                                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `AS2_from_vec_u8` should have a snake case name
[INFO] [stdout]    --> src/messages/update.rs:349:12
[INFO] [stdout]     |
[INFO] [stdout] 349 |     pub fn AS2_from_vec_u8(bytes: &Vec<u8>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `as2_from_vec_u8`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `AS4_from_vec_u8` should have a snake case name
[INFO] [stdout]    --> src/messages/update.rs:378:12
[INFO] [stdout]     |
[INFO] [stdout] 378 |     pub fn AS4_from_vec_u8(bytes: &Vec<u8>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `as4_from_vec_u8`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/process.rs:335:21
[INFO] [stdout]     |
[INFO] [stdout] 335 |                     neighbor.generate_event(Event::TcpCRAcked);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 335 |                     let _ = neighbor.generate_event(Event::TcpCRAcked);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `BestPathResult` is more private than the item `process::BGPProcess::choose_best_path`
[INFO] [stdout]    --> src/process.rs:121:5
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub fn choose_best_path(curr_best_path: &RouteV4, candidate_path: &RouteV4, default_local_pref: u32) -> BestPathResult {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `process::BGPProcess::choose_best_path` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `BestPathResult` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/process.rs:53:1
[INFO] [stdout]     |
[INFO] [stdout]  53 | enum BestPathResult {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RouteCast` is never used
[INFO] [stdout]   --> src/routes.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum RouteCast {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `V6` is never constructed
[INFO] [stdout]   --> src/neighbors.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub enum IPType {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 35 |     V4,
[INFO] [stdout] 36 |     V6
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IPType` 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 `ip_type` is never read
[INFO] [stdout]   --> src/neighbors.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct Neighbor {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub ip_type: IPType,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Neighbor` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_4byte_asn_negotiated`, `set_keepalive_time`, `set_hold_time`, and `handle_update_message` are never used
[INFO] [stdout]     --> src/neighbors.rs:118:12
[INFO] [stdout]      |
[INFO] [stdout]  117 | impl Neighbor {
[INFO] [stdout]      | ------------- methods in this implementation
[INFO] [stdout]  118 |     pub fn is_4byte_asn_negotiated(&mut self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  131 |     pub fn set_keepalive_time(&mut self, keepalive_time_sec: u16) -> Result<(), MessageError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  139 |     pub fn set_hold_time(&mut self, hold_time_sec: u16) -> Result<(), MessageError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1251 |     pub async fn handle_update_message(&mut self, tsbuf: &Vec<u8>) -> Result<(), BGPError> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `IPv4` and `IPv6` are never constructed
[INFO] [stdout]   --> src/messages.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum AddressFamily {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] 31 |     IPv4,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 32 |     IPv6,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AddressFamily` 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: function `locate_marker_in_message` is never used
[INFO] [stdout]    --> src/messages.rs:138:8
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn locate_marker_in_message(tsbuf: &[u8], migrated_data_len: usize) -> Result<(), MessageError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_neighbor_ipv4_address_from_stream` is never used
[INFO] [stdout]    --> src/messages/open.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub fn get_neighbor_ipv4_address_from_stream(tcp_stream: &TcpStream) -> Result<Ipv4Addr, NeighborError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `AS2_from_vec_u8` and `AS4_from_vec_u8` are never used
[INFO] [stdout]    --> src/messages/update.rs:349:12
[INFO] [stdout]     |
[INFO] [stdout] 264 | impl AsPath {
[INFO] [stdout]     | ----------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 349 |     pub fn AS2_from_vec_u8(bytes: &Vec<u8>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 378 |     pub fn AS4_from_vec_u8(bytes: &Vec<u8>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_next_hop_from_ipv4`, `new_as_path_from_as_list`, `new_origin_from_type`, and `get_pa_data_from_pa` are never used
[INFO] [stdout]    --> src/messages/update.rs:625:12
[INFO] [stdout]     |
[INFO] [stdout] 598 | impl PathAttribute {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 625 |     pub fn new_next_hop_from_ipv4(nhp_ip: Ipv4Addr) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 673 |     pub fn new_as_path_from_as_list(as_list_vec: Vec<u32>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 774 |     pub fn new_origin_from_type(origin_type: OriginType) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 876 |     pub fn get_pa_data_from_pa(&self, type_code: TypeCode) -> Option<PAdata> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_route_refresh_message` is never used
[INFO] [stdout]   --> src/messages/route_refresh.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn handle_route_refresh_message(tcp_stream: &mut TcpStream, tsbuf: &Vec<u8>) -> Result<(), MessageError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_route_refresh` is never used
[INFO] [stdout]   --> src/messages/route_refresh.rs:34:14
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub async fn send_route_refresh(stream: &mut TcpStream, afi: AddressFamily, safi: SAFI) -> Result<(), MessageError> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Unicast` and `Multicast` are never constructed
[INFO] [stdout]   --> src/messages/route_refresh.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub enum SAFI {
[INFO] [stdout]    |          ---- variants in this enum
[INFO] [stdout] 46 |     Unicast,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 47 |     Multicast
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SAFI` 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` and `convert_to_bytes` are never used
[INFO] [stdout]   --> src/messages/route_refresh.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | impl RouteRefreshMessage {
[INFO] [stdout]    | ------------------------ associated items in this implementation
[INFO] [stdout] 61 |     pub fn new(afi: AddressFamily, safi: SAFI) -> Result<Self, MessageError> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn convert_to_bytes(&self) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_notification_message` is never used
[INFO] [stdout]    --> src/messages/notification.rs:308:14
[INFO] [stdout]     |
[INFO] [stdout] 308 | pub async fn handle_notification_message(tcp_stream: &mut TcpStream, tsbuf: &Vec<u8>, bgp_proc: &mut BGPProcess) -> Result<(), Mess...
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_slice_from_bytes` is never used
[INFO] [stdout]   --> src/utils.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn extract_slice_from_bytes<'a>(tsbuf: &'a Vec<u8>, start_index: usize, end_index:usize) -> Result<&'a [u8], MessageError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_neighbor_ipv4_address` is never used
[INFO] [stdout]   --> src/utils.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn get_neighbor_ipv4_address(peer_ip: IpAddr) -> Result<Ipv4Addr, NeighborError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `allow_automatic_start`, `allow_automatic_stop`, `accept_connections_unconfigured_peers`, and `track_tcp_state` are never read
[INFO] [stdout]   --> src/finite_state_machine.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct FSM {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub allow_automatic_start: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 41 |     pub allow_automatic_stop: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub accept_connections_unconfigured_peers: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 46 |     pub passive_tcp_establishment: bool,
[INFO] [stdout] 47 |     pub track_tcp_state: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FSM` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `run` is never used
[INFO] [stdout]   --> src/finite_state_machine.rs:87:12
[INFO] [stdout]    |
[INFO] [stdout] 84 | impl FSM {
[INFO] [stdout]    | -------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn run(fsm: &mut FSM, bgp_proc: Arc<Mutex<BGPProcess>>, tcp_stream: TcpStream) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/finite_state_machine/events.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub enum Event {
[INFO] [stdout]    |          ----- variants in this enum
[INFO] [stdout] 37 |     // Administrative events
[INFO] [stdout] 38 |     ManualStart,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 39 |     ManualStop,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 40 |     AutomaticStart,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 41 |     ManualStartWithPassiveTcpEstablishment,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 42 |     AutomaticStartWithPassiveTcpEstablishment,
[INFO] [stdout] 43 |     AutomaticStartWithDampPeerOscillations,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 44 |     AutomaticStartWithDampPeerOscillationsAndPassiveTcpEstablishment,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 45 |     AutomaticStop,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     TcpConnectionValid,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 54 |     TcpCRInvalid,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 55 |     TcpCRAcked,
[INFO] [stdout] 56 |     TcpConnectionConfirmed,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     BGPOpenWithDelayOpenTimerRunning,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 61 |     BGPHeaderErr,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 62 |     BGPOpenMsgErr,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 63 |     OpenCollisionDump,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     NotifMsgVerErr,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     RouteRefreshMsg(RouteRefreshMessage), // custom event I added to handle the message type
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 69 |     UpdateMsgErr,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Event` 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 `has_updates` is never read
[INFO] [stdout]   --> src/process.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct RIB {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] 61 |     routes: HashMap<NLRI, Vec<RouteV4>>,
[INFO] [stdout] 62 |     pub has_updates: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RIB` 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 `get_neighbor_config` is never used
[INFO] [stdout]    --> src/process.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout]  87 | impl BGPProcess {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn get_neighbor_config(&self, ipv4addr: Ipv4Addr) -> Result<NeighborConfig, NeighborError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_max_time` is never used
[INFO] [stdout]   --> src/timers.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Timer {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn set_max_time(&mut self, max_time_sec: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `KeepaliveGreaterThanHoldTime`, `KeepaliveEqualToHoldTime`, `NeighborIPNotEstablished`, `NeighborAlreadyEstablished`, `UnableToRemoveNeighbor`, and `ConfiguredNeighborNotFound` are never constructed
[INFO] [stdout]   --> src/errors.rs:5:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum NeighborError {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout]  5 |     KeepaliveGreaterThanHoldTime,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  6 |     KeepaliveEqualToHoldTime,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 10 |     NeighborIPNotEstablished,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     NeighborAlreadyEstablished,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 12 |     UnableToRemoveNeighbor,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     ConfiguredNeighborNotFound,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NeighborError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `NoLenFound`, `RouteRefreshMissingAFI`, `PeerIPNotEstablished`, and `BadNotifErrorSubCode` are never constructed
[INFO] [stdout]   --> src/errors.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub enum MessageError {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 25 |     NoMarkerFound,
[INFO] [stdout] 26 |     NoLenFound,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     RouteRefreshMissingAFI,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     PeerIPNotEstablished,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     BadNotifErrorSubCode,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MessageError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Down` and `Full` are never constructed
[INFO] [stdout]   --> src/errors.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub enum ChannelError {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 74 |     Down,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 75 |     Full,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ChannelError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/config.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | impl MultiProtocolExtensionsConfig {
[INFO] [stdout]    | ---------------------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn new(afi: u16, safi: u8) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NeighborChannelWatcher` is never constructed
[INFO] [stdout]  --> src/channels.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct NeighborChannelWatcher {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NoMessageWaiting` is never constructed
[INFO] [stdout]   --> src/channels.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum ChannelWatcherMessage {
[INFO] [stdout]    |          --------------------- variant in this enum
[INFO] [stdout] 18 |     MessageWaiting,
[INFO] [stdout] 19 |     NoMessageWaiting
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ChannelWatcherMessage` 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: unused `Result` that must be used
[INFO] [stdout]    --> src/neighbors.rs:343:25
[INFO] [stdout]     |
[INFO] [stdout] 343 |                         self.generate_event(Event::AutomaticStartWithPassiveTcpEstablishment);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 343 |                         let _ = self.generate_event(Event::AutomaticStartWithPassiveTcpEstablishment);
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1274:13
[INFO] [stdout]      |
[INFO] [stdout] 1274 |             self.generate_event(Event::ConnectRetryTimerExpires);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1274 |             let _ = self.generate_event(Event::ConnectRetryTimerExpires);
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1278:13
[INFO] [stdout]      |
[INFO] [stdout] 1278 |             self.generate_event(Event::HoldTimerExpires);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1278 |             let _ = self.generate_event(Event::HoldTimerExpires);
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1282:13
[INFO] [stdout]      |
[INFO] [stdout] 1282 |             self.generate_event(Event::KeepaliveTimerExpires);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1282 |             let _ = self.generate_event(Event::KeepaliveTimerExpires);
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1286:13
[INFO] [stdout]      |
[INFO] [stdout] 1286 |             self.generate_event(Event::DelayOpenTimerExpires);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1286 |             let _ = self.generate_event(Event::DelayOpenTimerExpires);
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1290:13
[INFO] [stdout]      |
[INFO] [stdout] 1290 |             self.generate_event(Event::IdleHoldTimerExpires);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1290 |             let _ = self.generate_event(Event::IdleHoldTimerExpires);
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1319:17
[INFO] [stdout]      |
[INFO] [stdout] 1319 |                 self.generate_event(Event::OpenMsg(received_msg));
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1319 |                 let _ = self.generate_event(Event::OpenMsg(received_msg));
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1324:17
[INFO] [stdout]      |
[INFO] [stdout] 1324 |                 self.generate_event(Event::UpdateMsg(received_msg));
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1324 |                 let _ = self.generate_event(Event::UpdateMsg(received_msg));
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1330:17
[INFO] [stdout]      |
[INFO] [stdout] 1330 |                 self.generate_event(Event::NotifMsg(received_msg));
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1330 |                 let _ = self.generate_event(Event::NotifMsg(received_msg));
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1334:17
[INFO] [stdout]      |
[INFO] [stdout] 1334 |                 self.generate_event(Event::KeepAliveMsg);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1334 |                 let _ = self.generate_event(Event::KeepAliveMsg);
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1348:9
[INFO] [stdout]      |
[INFO] [stdout] 1348 |         self.generate_event(Event::SendUpdateMsg);
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1348 |         let _ = self.generate_event(Event::SendUpdateMsg);
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1370:13
[INFO] [stdout]      |
[INFO] [stdout] 1370 |             self.generate_event(Event::TcpConnectionFails);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1370 |             let _ = self.generate_event(Event::TcpConnectionFails);
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1373:13
[INFO] [stdout]      |
[INFO] [stdout] 1373 |             self.generate_event(Event::AutomaticStartWithPassiveTcpEstablishment);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1373 |             let _ = self.generate_event(Event::AutomaticStartWithPassiveTcpEstablishment);
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1523:17
[INFO] [stdout]      |
[INFO] [stdout] 1523 |                 n.generate_event(Event::TcpCRAcked);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1523 |                 let _ = n.generate_event(Event::TcpCRAcked);
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1593:37
[INFO] [stdout]      |
[INFO] [stdout] 1593 | ...                   neighbor.generate_event(Event::TcpConnectionFails);
[INFO] [stdout]      |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1593 |                                     let _ = neighbor.generate_event(Event::TcpConnectionFails);
[INFO] [stdout]      |                                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/neighbors.rs:1596:37
[INFO] [stdout]      |
[INFO] [stdout] 1596 | ...                   neighbor.generate_event(Event::AutomaticStartWithPassiveTcpEstablishment);
[INFO] [stdout]      |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1596 |                                     let _ = neighbor.generate_event(Event::AutomaticStartWithPassiveTcpEstablishment);
[INFO] [stdout]      |                                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `AS2_from_vec_u8` should have a snake case name
[INFO] [stdout]    --> src/messages/update.rs:349:12
[INFO] [stdout]     |
[INFO] [stdout] 349 |     pub fn AS2_from_vec_u8(bytes: &Vec<u8>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `as2_from_vec_u8`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `AS4_from_vec_u8` should have a snake case name
[INFO] [stdout]    --> src/messages/update.rs:378:12
[INFO] [stdout]     |
[INFO] [stdout] 378 |     pub fn AS4_from_vec_u8(bytes: &Vec<u8>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `as4_from_vec_u8`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/process.rs:335:21
[INFO] [stdout]     |
[INFO] [stdout] 335 |                     neighbor.generate_event(Event::TcpCRAcked);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 335 |                     let _ = neighbor.generate_event(Event::TcpCRAcked);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 21.24s
[INFO] running `Command { std: "docker" "inspect" "8b323176c367b05ea851530df4dfcc03895705813c52bfafdf04c8dc36b74460", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8b323176c367b05ea851530df4dfcc03895705813c52bfafdf04c8dc36b74460", kill_on_drop: false }`
[INFO] [stdout] 8b323176c367b05ea851530df4dfcc03895705813c52bfafdf04c8dc36b74460
