rtnetlink/link/
handle.rs

1// SPDX-License-Identifier: MIT
2
3use super::{
4    LinkAddRequest,
5    LinkDelPropRequest,
6    LinkDelRequest,
7    LinkGetRequest,
8    LinkNewPropRequest,
9    LinkSetRequest,
10};
11use crate::Handle;
12
13pub struct LinkHandle(Handle);
14
15impl LinkHandle {
16    pub fn new(handle: Handle) -> Self {
17        LinkHandle(handle)
18    }
19
20    pub fn set(&self, index: u32) -> LinkSetRequest {
21        LinkSetRequest::new(self.0.clone(), index)
22    }
23
24    pub fn add(&self) -> LinkAddRequest {
25        LinkAddRequest::new(self.0.clone())
26    }
27
28    pub fn property_add(&self, index: u32) -> LinkNewPropRequest {
29        LinkNewPropRequest::new(self.0.clone(), index)
30    }
31
32    pub fn property_del(&self, index: u32) -> LinkDelPropRequest {
33        LinkDelPropRequest::new(self.0.clone(), index)
34    }
35
36    pub fn del(&mut self, index: u32) -> LinkDelRequest {
37        LinkDelRequest::new(self.0.clone(), index)
38    }
39
40    /// Retrieve the list of links (equivalent to `ip link show`)
41    pub fn get(&mut self) -> LinkGetRequest {
42        LinkGetRequest::new(self.0.clone())
43    }
44}