rtnetlink/link/wireguard.rs
1// SPDX-License-Identifier: MIT
2
3use crate::{link::LinkMessageBuilder, packet_route::link::InfoKind};
4
5/// Represent wireguard interface.
6/// Example code on creating a wireguard interface
7/// ```no_run
8/// use rtnetlink::{new_connection, LinkWireguard};
9/// #[tokio::main]
10/// async fn main() -> Result<(), String> {
11/// let (connection, handle, _) = new_connection().unwrap();
12/// tokio::spawn(connection);
13///
14/// handle
15/// .link()
16/// .add(LinkWireguard::new("wg0").build())
17/// .execute()
18/// .await
19/// .map_err(|e| format!("{e}"))
20/// }
21/// ```
22///
23/// Please check LinkMessageBuilder::<LinkWireguard> for more detail.
24#[derive(Debug)]
25pub struct LinkWireguard;
26
27impl LinkWireguard {
28 /// Equal to `LinkMessageBuilder::<LinkWireguard>::new()`
29 pub fn new(name: &str) -> LinkMessageBuilder<Self> {
30 LinkMessageBuilder::<LinkWireguard>::new(name)
31 }
32}
33
34impl LinkMessageBuilder<LinkWireguard> {
35 /// Create [LinkMessageBuilder] for wireguard
36 pub fn new(name: &str) -> Self {
37 LinkMessageBuilder::<LinkWireguard>::new_with_info_kind(
38 InfoKind::Wireguard,
39 )
40 .name(name.to_string())
41 }
42}