From 3384cc1162ebf360eea12be5b97f58fab40313c4 Mon Sep 17 00:00:00 2001 From: KKRainbow <5665404+KKRainbow@users.noreply.github.com> Date: Fri, 16 Oct 2026 19:12:16 +0800 Subject: [PATCH] test: synchronize BPF veth initialization before sending (#2712) --- easytier/src/socket/fake_tcp/netfilter/linux_bpf.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/easytier/src/socket/fake_tcp/netfilter/linux_bpf.rs b/easytier/src/socket/fake_tcp/netfilter/linux_bpf.rs index 4ae106cc..af6d9cd2 100644 --- a/easytier/src/socket/fake_tcp/netfilter/linux_bpf.rs +++ b/easytier/src/socket/fake_tcp/netfilter/linux_bpf.rs @@ -870,20 +870,28 @@ mod tests { let suffix = rand::thread_rng().gen_range(10000..99999); let capture_name = format!("elbc{suffix}"); let sender_name = format!("elbs{suffix}"); + // Assign MACs at creation so udev does not replace them after readback. run_ip(&[ "link", "add", &capture_name, + "address", + "02:00:00:00:00:01", "type", "veth", "peer", "name", &sender_name, + "address", + "02:00:00:00:00:02", ])?; let setup_result = (|| { run_ip(&["link", "set", "dev", &capture_name, "up"])?; run_ip(&["link", "set", "dev", &sender_name, "up"])?; + // A single-device GETLINK synchronizes pending linkwatch work, + // activating the first endpoint's TX queue before any test sends. + run_ip(&["link", "show", "dev", &capture_name])?; let interfaces = datalink::interfaces(); let find_mac = |name: &str| { interfaces