arp: add statistics counters and netcfg exposure

EthernetLink gains per-interface ARP counters:
- arp_requests: ARP requests sent (incremented in send_arp)
- arp_replies: ARP replies received (incremented on cache insert)
- arp_cache_hits: successful neighbor cache lookups
- arp_cache_misses: cache misses (vacant or expired entries)

LinkDevice trait gains arp_stats() → String method.
EthernetLink implementation: 'requests=N replies=N hits=N misses=N entries=N'

netcfg exposes at /scheme/netcfg/ifaces/eth0/arp/stats:
  echo /scheme/netcfg/ifaces/eth0/arp/stats
  → requests=5 replies=3 hits=142 misses=8 entries=4

Existing arp/list (MAC→IP) and arp/flush (clear) are unchanged.
Useful for monitoring ARP churn, detecting ARP storms, and debugging
neighbor discovery issues.
This commit is contained in:
Red Bear OS
2026-07-08 15:38:49 +03:00
parent faf777b990
commit 27f8e351e6
3 changed files with 39 additions and 1 deletions
+8
View File
@@ -360,6 +360,14 @@ fn mk_root_node(
}
}
},
"stats" => {
ro [devices] || {
match devices.borrow().get("eth0") {
Some(dev) => dev.arp_stats(),
None => "Device not found\n".into(),
}
}
},
"flush" => {
wo [devices] (Option<()>, None)
|_cur_value, _line| {