use rtnetlink::{
new_connection,
packet_route::link::{NetkitMode, NetkitPolicy, NetkitScrub},
LinkNetkit,
};
#[tokio::main]
async fn main() -> Result<(), String> {
let (connection, handle, _) = new_connection().unwrap();
tokio::spawn(connection);
handle
.link()
.add(
LinkNetkit::new("netkit0", "netkit0-peer", NetkitMode::L3)
.policy(NetkitPolicy::Pass) .peer_policy(NetkitPolicy::Pass) .scrub(NetkitScrub::Default) .peer_scrub(NetkitScrub::Default) .headroom(256) .tailroom(128) .up() .build(),
)
.execute()
.await
.map_err(|e| format!("{e}"))?;
println!("Created netkit pair: netkit0 <-> netkit0-peer");
println!(" Mode: L3 (IP mode)");
println!(" Policy: Pass (Forward)");
println!(" Scrub: Default");
println!(" Headroom: 256 bytes");
println!(" Tailroom: 128 bytes");
Ok(())
}