From d6e2e73d6872c8b101ece82296bcea33dbde4caa Mon Sep 17 00:00:00 2001 From: Yann Dirson Date: Tue, 21 Nov 2023 14:03:43 +0100 Subject: [PATCH] net: add some debug-level traces Should help digging precisely why a given event gets dropped. Signed-off-by: Yann Dirson --- src/collector_net_netlink.rs | 4 ++++ src/main.rs | 2 ++ src/vif_detect_freebsd.rs | 5 ++++- src/vif_detect_linux.rs | 10 ++++++++-- src/xenstore_schema_std.rs | 8 ++++++-- 5 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/collector_net_netlink.rs b/src/collector_net_netlink.rs index 396cfb0..c63634e 100644 --- a/src/collector_net_netlink.rs +++ b/src/collector_net_netlink.rs @@ -103,19 +103,23 @@ fn netevent_from_rtnetlink(nl_msg: &RtnlMessage) -> io::Result { let event = match nl_msg { RtnlMessage::NewLink(link_msg) => { let (iface, mac_address) = nl_linkmessage_decode(link_msg)?; + log::debug!("NewLink({iface:?} {mac_address})"); NetEvent{iface, op: NetEventOp::AddMac(mac_address)} }, RtnlMessage::DelLink(link_msg) => { let (iface, mac_address) = nl_linkmessage_decode(link_msg)?; + log::debug!("DelLink({iface:?} {mac_address})"); NetEvent{iface, op: NetEventOp::RmMac(mac_address)} }, RtnlMessage::NewAddress(address_msg) => { // FIXME does not distinguish when IP is on DOWN iface let (iface, address) = nl_addressmessage_decode(address_msg)?; + log::debug!("NewAddress({iface:?} {address})"); NetEvent{iface, op: NetEventOp::AddIp(address)} }, RtnlMessage::DelAddress(address_msg) => { let (iface, address) = nl_addressmessage_decode(address_msg)?; + log::debug!("DelAddress({iface:?} {address})"); NetEvent{iface, op: NetEventOp::RmIp(address)} }, _ => { diff --git a/src/main.rs b/src/main.rs index 7107f09..7c3dd13 100644 --- a/src/main.rs +++ b/src/main.rs @@ -83,6 +83,8 @@ async fn main() -> Result<(), Box> { vif_detect::add_vif_info(&mut event); if REPORT_INTERNAL_NICS || ! event.iface.toolstack_iface.is_none() { publisher.publish_netevent(&event)?; + } else { + log::debug!("no toolstack iface in {event:?}"); } }, // FIXME can't we handle those in `select!` directly? diff --git a/src/vif_detect_freebsd.rs b/src/vif_detect_freebsd.rs index d8f1ce0..f97245a 100644 --- a/src/vif_detect_freebsd.rs +++ b/src/vif_detect_freebsd.rs @@ -4,7 +4,10 @@ use crate::datastructs::{NetEvent, ToolstackNetInterface}; pub fn add_vif_info(event: &mut NetEvent) -> () { const PREFIX: &str = "xn"; - if ! event.iface.name.starts_with(PREFIX) { return; } + if ! event.iface.name.starts_with(PREFIX) { + log::debug!("ignoring interface {} as not starting with '{PREFIX}'", event.iface.name); + return; + } if let Ok(index) = event.iface.name[PREFIX.len()..].parse() { event.iface.toolstack_iface = ToolstackNetInterface::Vif(index); } diff --git a/src/vif_detect_linux.rs b/src/vif_detect_linux.rs index 2ea0439..8af5260 100644 --- a/src/vif_detect_linux.rs +++ b/src/vif_detect_linux.rs @@ -11,11 +11,17 @@ pub fn add_vif_info(event: &mut NetEvent) { let device_path = format!("/sys/class/net/{}/device", event.iface.name); if let Ok(devtype) = fs::read_to_string(format!("{device_path}/devtype")) { let devtype = devtype.trim(); - if devtype != "vif" { return; } + if devtype != "vif" { + log::debug!("ignoring device {device_path}, devtype {devtype:?} not 'vif'"); + return; + } if let Ok(nodename) = fs::read_to_string(format!("{device_path}/nodename")) { let nodename = nodename.trim(); const PREFIX: &str = "device/vif/"; - if ! nodename.starts_with(PREFIX) { return; } // FIXME warn? + if ! nodename.starts_with(PREFIX) { + log::debug!("ignoring interface {nodename} as not under {PREFIX}"); + return; + } let vif_id = nodename[PREFIX.len()..].parse().unwrap(); event.iface.toolstack_iface = ToolstackNetInterface::Vif(vif_id); } diff --git a/src/xenstore_schema_std.rs b/src/xenstore_schema_std.rs index 40642aa..30d0591 100644 --- a/src/xenstore_schema_std.rs +++ b/src/xenstore_schema_std.rs @@ -120,8 +120,12 @@ impl XenstoreSchema for Schema { }, // FIXME extend IfaceIpStruct for this - NetEventOp::AddMac(_mac_address) => {}, - NetEventOp::RmMac(_mac_address) => {}, + NetEventOp::AddMac(_mac_address) => { + log::debug!("AddMac not applied"); + }, + NetEventOp::RmMac(_mac_address) => { + log::debug!("RmMac not applied"); + }, } Ok(()) } -- 2.39.5