Fix CPU reporting: MikroTik uses 0x80|pct encoding, add CPU to CSV
All checks were successful
CI / test (push) Successful in 2m9s
All checks were successful
CI / test (push) Successful in 2m9s
- MikroTik encodes CPU as 0x80 | percentage (high bit flag) - Deserialize: mask with 0x7F and cap at 100 - Serialize: set high bit (0x80 | cpu) to match MikroTik format - CSV now includes local_cpu_pct and remote_cpu_pct columns - Both client and server write CPU to CSV Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -12,7 +12,7 @@ use std::time::SystemTime;
|
||||
static CSV_FILE: Mutex<Option<String>> = Mutex::new(None);
|
||||
static QUIET: std::sync::atomic::AtomicBool = std::sync::atomic::AtomicBool::new(false);
|
||||
|
||||
const HEADER: &str = "timestamp,host,port,protocol,direction,duration_s,tx_avg_mbps,rx_avg_mbps,tx_bytes,rx_bytes,lost_packets,auth_type";
|
||||
const HEADER: &str = "timestamp,host,port,protocol,direction,duration_s,tx_avg_mbps,rx_avg_mbps,tx_bytes,rx_bytes,lost_packets,local_cpu_pct,remote_cpu_pct,auth_type";
|
||||
|
||||
/// Initialize CSV output. Creates file with headers if needed.
|
||||
pub fn init(path: &str) -> std::io::Result<()> {
|
||||
@@ -45,6 +45,8 @@ pub fn write_result(
|
||||
tx_bytes: u64,
|
||||
rx_bytes: u64,
|
||||
lost_packets: u64,
|
||||
local_cpu: u8,
|
||||
remote_cpu: u8,
|
||||
auth_type: &str,
|
||||
) {
|
||||
let guard = CSV_FILE.lock().unwrap();
|
||||
@@ -66,9 +68,10 @@ pub fn write_result(
|
||||
.as_secs();
|
||||
|
||||
let row = format!(
|
||||
"{},{},{},{},{},{},{:.2},{:.2},{},{},{},{}",
|
||||
"{},{},{},{},{},{},{:.2},{:.2},{},{},{},{},{},{}",
|
||||
now, host, port, protocol, direction, duration_secs,
|
||||
tx_mbps, rx_mbps, tx_bytes, rx_bytes, lost_packets, auth_type,
|
||||
tx_mbps, rx_mbps, tx_bytes, rx_bytes, lost_packets,
|
||||
local_cpu, remote_cpu, auth_type,
|
||||
);
|
||||
|
||||
if let Ok(mut f) = OpenOptions::new().append(true).open(path) {
|
||||
|
||||
Reference in New Issue
Block a user