xdpsock 0.1.0

Rust bindings for Linux AF_XDP sockets
Documentation
use rand::{distributions::Alphanumeric, thread_rng, Rng};
use veth_util_rs::{add_veth_link, VethConfig};

pub fn run_with_dev<F>(f: F)
where
    F: FnOnce(String, String) + Send + 'static,
{
    let rand_string: String = thread_rng()
        .sample_iter(&Alphanumeric)
        .take(8)
        .map(char::from)
        .collect();

    let dev1_ifname = format!("xsk1_{}", rand_string);
    let dev2_ifname = format!("xsk2_{}", rand_string);

    let veth_config = VethConfig::new(dev1_ifname, dev2_ifname);
    let veth_pair = add_veth_link(&veth_config).expect("failed to build veth pair");

    f(
        veth_pair.dev1().ifname().into(),
        veth_pair.dev2().ifname().into(),
    );
}