I couldn't compile it because it rnetlink deps are not satisfied. I tried to prepare an NMU today but the rnetlink changes are beyond my rust skills.
For what it's worth, the attatched debdiff will make rust-if-watch build and pass it's autopkgtests in current sid.
diff -Nru rust-if-watch-3.2.1/debian/changelog rust-if-watch-3.2.1/debian/changelog --- rust-if-watch-3.2.1/debian/changelog 2025-02-07 07:36:11.000000000 +0000 +++ rust-if-watch-3.2.1/debian/changelog 2025-03-08 03:59:15.000000000 +0000 @@ -1,3 +1,12 @@ +rust-if-watch (3.2.1-8.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Add patches to support new versions of rtnetlink, netlink-packet-route + if-addrs crates, update Debian build-dependencies accordingly. + (Closes: #1099780) + + -- Peter Michael Green <plugw...@debian.org> Sat, 08 Mar 2025 03:59:15 +0000 + rust-if-watch (3.2.1-8) unstable; urgency=medium * add metadata about upstream project diff -Nru rust-if-watch-3.2.1/debian/control rust-if-watch-3.2.1/debian/control --- rust-if-watch-3.2.1/debian/control 2025-01-01 13:00:36.000000000 +0000 +++ rust-if-watch-3.2.1/debian/control 2025-03-08 03:59:01.000000000 +0000 @@ -7,19 +7,19 @@ debhelper-compat (= 13), dh-sequence-rust, librust-async-io-2+default-dev, - librust-env-logger-0.11+default-dev, + librust-env-logger-0.7+default-dev, librust-fnv-1+default-dev, librust-futures-0.3+default-dev, - librust-if-addrs-0.10+default-dev, + librust-if-addrs-0.13+default-dev, librust-ipnet-2+default-dev, librust-log-0.4+default-dev, librust-netlink-sys-0.8-dev, librust-netlink-packet-core-0.7-dev, - librust-netlink-packet-route-0.17-dev, + librust-netlink-packet-route-0.19-dev, librust-netlink-proto-0.11-dev, librust-netlink-sys-0.8-dev, - librust-rtnetlink-0.13+smol-socket-dev, - librust-rtnetlink-0.13+tokio-socket-dev, + librust-rtnetlink-0.14+smol-socket-dev, + librust-rtnetlink-0.14+tokio-socket-dev, librust-smol-2+default-dev, librust-tokio-1+default-dev, librust-tokio-1+macros-dev, @@ -36,15 +36,15 @@ librust-async-io-2+default-dev, librust-fnv-1+default-dev, librust-futures-0.3+default-dev, - librust-if-addrs-0.10+default-dev, + librust-if-addrs-0.13+default-dev, librust-ipnet-2+default-dev, librust-log-0.4+default-dev, librust-netlink-sys-0.8-dev, librust-netlink-packet-core-0.7-dev, - librust-netlink-packet-route-0.17-dev, + librust-netlink-packet-route-0.19-dev, librust-netlink-proto-0.11-dev, - librust-rtnetlink-0.13+smol-socket-dev, - librust-rtnetlink-0.13+tokio-socket-dev, + librust-rtnetlink-0.14+smol-socket-dev, + librust-rtnetlink-0.14+tokio-socket-dev, librust-smol-2+default-dev, librust-tokio-1+default-dev, librust-tokio-1+macros-dev, diff -Nru rust-if-watch-3.2.1/debian/patches/1004_netlink.patch rust-if-watch-3.2.1/debian/patches/1004_netlink.patch --- rust-if-watch-3.2.1/debian/patches/1004_netlink.patch 1970-01-01 00:00:00.000000000 +0000 +++ rust-if-watch-3.2.1/debian/patches/1004_netlink.patch 2025-03-08 03:55:37.000000000 +0000 @@ -0,0 +1,110 @@ +Description: support newer versions of netlink crates. + This patch updates the code to use the latest version of rtnetlink + and the corresponding version of netlink-packet-route. +Author: Peter Michael Green <plugw...@debian.org> +Forwarded: no +Last-Update: 2024-03-08 +Index: rust-if-watch-3.2.1/Cargo.toml +=================================================================== +--- rust-if-watch-3.2.1.orig/Cargo.toml ++++ rust-if-watch-3.2.1/Cargo.toml +@@ -24,9 +24,9 @@ log = "0.4.14" + [target.'cfg(target_os = "linux")'.dependencies] + netlink-sys = { version = "0.8.0", default-features = false } + netlink-packet-core = { version = "0.7.0", default-features = false } +-netlink-packet-route = { version = "0.17.0", default-features = false } ++netlink-packet-route = { version = "0.19.0", default-features = false } + netlink-proto = { version = "0.11.0", default-features = false } +-rtnetlink = { version = "0.13.0", default-features = false } ++rtnetlink = { version = "0.14.0", default-features = false } + + [target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies] + core-foundation = "0.9.2" +Index: rust-if-watch-3.2.1/src/linux.rs +=================================================================== +--- rust-if-watch-3.2.1.orig/src/linux.rs ++++ rust-if-watch-3.2.1/src/linux.rs +@@ -4,15 +4,16 @@ use futures::ready; + use futures::stream::{FusedStream, Stream, TryStreamExt}; + use futures::StreamExt; + use netlink_packet_core::NetlinkPayload; +-use netlink_packet_route::rtnl::address::nlas::Nla; +-use netlink_packet_route::rtnl::{AddressMessage, RtnlMessage}; ++use netlink_packet_route::RouteNetlinkMessage; ++use netlink_packet_route::address::AddressMessage; ++use netlink_packet_route::address::AddressAttribute; + use netlink_proto::Connection; + use netlink_sys::{AsyncSocket, SocketAddr}; + use rtnetlink::constants::{RTMGRP_IPV4_IFADDR, RTMGRP_IPV6_IFADDR}; + use std::collections::VecDeque; + use std::future::Future; + use std::io::{Error, ErrorKind, Result}; +-use std::net::{Ipv4Addr, Ipv6Addr}; ++use std::net::{Ipv4Addr, Ipv6Addr, IpAddr}; + use std::pin::Pin; + use std::task::{Context, Poll}; + +@@ -35,8 +36,8 @@ pub mod smol { + } + + pub struct IfWatcher<T> { +- conn: Connection<RtnlMessage, T>, +- messages: Pin<Box<dyn Stream<Item = Result<RtnlMessage>> + Send>>, ++ conn: Connection<RouteNetlinkMessage, T>, ++ messages: Pin<Box<dyn Stream<Item = Result<RouteNetlinkMessage>> + Send>>, + addrs: FnvHashSet<IpNet>, + queue: VecDeque<IfEvent>, + } +@@ -63,7 +64,7 @@ where + .address() + .get() + .execute() +- .map_ok(RtnlMessage::NewAddress) ++ .map_ok(RouteNetlinkMessage::NewAddress) + .map_err(|err| Error::new(ErrorKind::Other, err)); + let msg_stream = messages.filter_map(|(msg, _)| async { + match msg.payload { +@@ -129,8 +130,8 @@ where + } + }; + match message { +- RtnlMessage::NewAddress(msg) => self.add_address(msg), +- RtnlMessage::DelAddress(msg) => self.rem_address(msg), ++ RouteNetlinkMessage::NewAddress(msg) => self.add_address(msg), ++ RouteNetlinkMessage::DelAddress(msg) => self.rem_address(msg), + _ => {} + } + } +@@ -143,25 +144,19 @@ fn socket_err(error: &str) -> std::io::E + + fn iter_nets(msg: AddressMessage) -> impl Iterator<Item = IpNet> { + let prefix = msg.header.prefix_len; +- let family = msg.header.family; +- msg.nlas.into_iter().filter_map(move |nla| { +- if let Nla::Address(octets) = nla { +- match family { +- 2 => { +- let mut addr = [0; 4]; +- addr.copy_from_slice(&octets); ++ msg.attributes.into_iter().filter_map(move |attribute| { ++ if let AddressAttribute::Address(addr) = attribute { ++ match addr { ++ IpAddr::V4(addr) => { + Some(IpNet::V4( +- Ipv4Net::new(Ipv4Addr::from(addr), prefix).unwrap(), ++ Ipv4Net::new(addr, prefix).unwrap(), + )) + } +- 10 => { +- let mut addr = [0; 16]; +- addr.copy_from_slice(&octets); ++ IpAddr::V6(addr) => { + Some(IpNet::V6( +- Ipv6Net::new(Ipv6Addr::from(addr), prefix).unwrap(), ++ Ipv6Net::new(addr, prefix).unwrap(), + )) + } +- _ => None, + } + } else { + None diff -Nru rust-if-watch-3.2.1/debian/patches/1005_if_addrs.patch rust-if-watch-3.2.1/debian/patches/1005_if_addrs.patch --- rust-if-watch-3.2.1/debian/patches/1005_if_addrs.patch 1970-01-01 00:00:00.000000000 +0000 +++ rust-if-watch-3.2.1/debian/patches/1005_if_addrs.patch 2025-03-08 03:52:07.000000000 +0000 @@ -0,0 +1,19 @@ +Description: support newer versions of netlink crates. + This patch updates the code to use the latest version of rtnetlink + and the corresponding version of netlink-packet-route. +Author: Peter Michael Green <plugw...@debian.org> +Forwarded: no +Last-Update: 2024-03-08 +Index: rust-if-watch-3.2.1/Cargo.toml +=================================================================== +--- rust-if-watch-3.2.1.orig/Cargo.toml ++++ rust-if-watch-3.2.1/Cargo.toml +@@ -33,7 +33,7 @@ smol = { version = "2", optional = true + + [target.'cfg(not(any(target_os = "ios", target_os = "linux", target_os = "macos", target_os = "windows")))'.dependencies] + async-io = "2.0.0" +-if-addrs = "0.10.0" ++if-addrs = "0.13.0" + + [dev-dependencies] + env_logger = ">= 0.10.0, <= 0.11" diff -Nru rust-if-watch-3.2.1/debian/patches/2002_no_mac.patch rust-if-watch-3.2.1/debian/patches/2002_no_mac.patch --- rust-if-watch-3.2.1/debian/patches/2002_no_mac.patch 2024-11-28 22:48:40.000000000 +0000 +++ rust-if-watch-3.2.1/debian/patches/2002_no_mac.patch 2025-03-08 03:56:34.000000000 +0000 @@ -7,11 +7,13 @@ Last-Update: 2024-01-02 --- This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ ---- a/Cargo.toml -+++ b/Cargo.toml -@@ -28,10 +28,6 @@ +Index: rust-if-watch-3.2.1/Cargo.toml +=================================================================== +--- rust-if-watch-3.2.1.orig/Cargo.toml ++++ rust-if-watch-3.2.1/Cargo.toml +@@ -28,10 +28,6 @@ netlink-packet-route = { version = "0.19 netlink-proto = { version = "0.11.0", default-features = false } - rtnetlink = { version = "0.13.0", default-features = false } + rtnetlink = { version = "0.14.0", default-features = false } -[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies] -core-foundation = "0.9.2" diff -Nru rust-if-watch-3.2.1/debian/patches/2002_no_windows.patch rust-if-watch-3.2.1/debian/patches/2002_no_windows.patch --- rust-if-watch-3.2.1/debian/patches/2002_no_windows.patch 2024-11-28 22:48:41.000000000 +0000 +++ rust-if-watch-3.2.1/debian/patches/2002_no_windows.patch 2025-03-08 03:56:38.000000000 +0000 @@ -4,9 +4,11 @@ Last-Update: 2024-01-02 --- This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ ---- a/Cargo.toml -+++ b/Cargo.toml -@@ -31,10 +31,6 @@ +Index: rust-if-watch-3.2.1/Cargo.toml +=================================================================== +--- rust-if-watch-3.2.1.orig/Cargo.toml ++++ rust-if-watch-3.2.1/Cargo.toml +@@ -31,10 +31,6 @@ rtnetlink = { version = "0.14.0", defaul tokio = { version = "1.21.2", features = ["rt"], optional = true } smol = { version = "2", optional = true } @@ -16,4 +18,4 @@ - [target.'cfg(not(any(target_os = "ios", target_os = "linux", target_os = "macos", target_os = "windows")))'.dependencies] async-io = "2.0.0" - if-addrs = "0.10.0" + if-addrs = "0.13.0" diff -Nru rust-if-watch-3.2.1/debian/patches/series rust-if-watch-3.2.1/debian/patches/series --- rust-if-watch-3.2.1/debian/patches/series 2025-01-01 13:01:04.000000000 +0000 +++ rust-if-watch-3.2.1/debian/patches/series 2025-03-08 03:54:12.000000000 +0000 @@ -1,5 +1,7 @@ 1001_dead_code.patch 1002_fence_tests.patch 1003_env_logger.patch +1004_netlink.patch +1005_if_addrs.patch 2002_no_mac.patch 2002_no_windows.patch