openconnect_core/
stats.rs1use crate::VpnClient;
2use openconnect_sys::oc_stats;
3
4#[derive(Debug)]
5pub struct Stats {
6 pub rx_bytes: u64,
7 pub tx_bytes: u64,
8 pub rx_pkts: u64,
9 pub tx_pkts: u64,
10}
11
12pub(crate) extern "C" fn stats_fn(privdata: *mut ::std::os::raw::c_void, stats: *const oc_stats) {
13 println!("stats_fn");
14 let client = unsafe { VpnClient::ref_from_raw(privdata) };
15 let dlts = client.get_dlts_cipher();
16
17 let stats: Option<Stats> = if !stats.is_null() {
18 let stats = unsafe { &*stats };
19 Some(Stats {
20 rx_bytes: stats.rx_bytes,
21 tx_bytes: stats.tx_bytes,
22 rx_pkts: stats.rx_pkts,
23 tx_pkts: stats.tx_pkts,
24 })
25 } else {
26 None
27 };
28
29 client.handle_stats((dlts, stats));
30}