use xdpsock::{socket::*, umem::*, xsk::Xsk, xsk::Xsk2}; mod veth_setup; pub fn run_test( dev1_umem_config: Option, dev1_socket_config: Option, dev2_umem_config: Option, dev2_socket_config: Option, test: F, ) where F: Fn(Xsk, Xsk) + Send + 'static, { env_logger::init(); let inner = move |dev1_if_name: String, dev2_if_name: String| { // Create the socket for the first interfaace let dev1_umem_config = dev1_umem_config.unwrap_or_default(); let dev2_umem_config = dev2_umem_config.unwrap_or_default(); let dev1_socket_config = dev1_socket_config.unwrap_or_default(); let dev2_socket_config = dev2_socket_config.unwrap_or_default(); let dev1_n_tx_frames = dev1_umem_config.frame_count() / 2; let dev2_n_tx_frames = dev2_umem_config.frame_count() / 2; let xsk1 = Xsk::new( &dev1_if_name, 0, dev1_umem_config, dev1_socket_config, dev1_n_tx_frames as usize, ); let xsk2 = Xsk::new( &dev2_if_name, 0, dev2_umem_config, dev2_socket_config, dev2_n_tx_frames as usize, ); test(xsk1, xsk2) }; veth_setup::run_with_dev(inner); } pub fn run_test_2( dev1_umem_config: Option, dev1_socket_config: Option, dev2_umem_config: Option, dev2_socket_config: Option, test: F, ) where F: Fn(Xsk2, Xsk2) + Send + 'static, { env_logger::init(); let inner = move |dev1_if_name: String, dev2_if_name: String| { // Create the socket for the first interfaace let dev1_umem_config = dev1_umem_config.unwrap_or_default(); let dev2_umem_config = dev2_umem_config.unwrap_or_default(); let dev1_socket_config = dev1_socket_config.unwrap_or_default(); let dev2_socket_config = dev2_socket_config.unwrap_or_default(); let dev1_n_tx_frames = dev1_umem_config.frame_count() / 2; let dev2_n_tx_frames = dev2_umem_config.frame_count() / 2; let xsk1 = Xsk2::new( &dev1_if_name, 0, dev1_umem_config, dev1_socket_config, dev1_n_tx_frames as usize, ); let xsk2 = Xsk2::new( &dev2_if_name, 0, dev2_umem_config, dev2_socket_config, dev2_n_tx_frames as usize, ); test(xsk1, xsk2) }; veth_setup::run_with_dev(inner); }