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}