openconnect-core 0.1.5

A library for interacting with OpenConnect VPN
Documentation
use crate::VpnClient;
use openconnect_sys::oc_stats;

#[derive(Debug)]
pub struct Stats {
    pub rx_bytes: u64,
    pub tx_bytes: u64,
    pub rx_pkts: u64,
    pub tx_pkts: u64,
}

pub(crate) extern "C" fn stats_fn(privdata: *mut ::std::os::raw::c_void, stats: *const oc_stats) {
    println!("stats_fn");
    let client = unsafe { VpnClient::ref_from_raw(privdata) };
    let dlts = client.get_dlts_cipher();

    let stats: Option<Stats> = if !stats.is_null() {
        let stats = unsafe { &*stats };
        Some(Stats {
            rx_bytes: stats.rx_bytes,
            tx_bytes: stats.tx_bytes,
            rx_pkts: stats.rx_pkts,
            tx_pkts: stats.tx_pkts,
        })
    } else {
        None
    };

    client.handle_stats((dlts, stats));
}