1use super::{
4 LinkAddRequest, LinkDelPropRequest, LinkDelRequest, LinkGetRequest,
5 LinkNewPropRequest, LinkSetRequest,
6};
7use crate::{
8 packet_core::{NLM_F_ACK, NLM_F_REQUEST},
9 packet_route::link::LinkMessage,
10 Handle,
11};
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, message: LinkMessage) -> LinkSetRequest {
25 LinkSetRequest::new(self.0.clone(), message)
26 }
27
28 pub fn add(&self, message: LinkMessage) -> LinkAddRequest {
29 LinkAddRequest::new(self.0.clone(), message)
30 }
31
32 pub fn change(&self, message: LinkMessage) -> LinkAddRequest {
34 LinkAddRequest::new(self.0.clone(), message)
35 .set_flags(NLM_F_REQUEST | NLM_F_ACK)
36 }
37
38 pub fn property_add(&self, index: u32) -> LinkNewPropRequest {
39 LinkNewPropRequest::new(self.0.clone(), index)
40 }
41
42 pub fn property_del(&self, index: u32) -> LinkDelPropRequest {
43 LinkDelPropRequest::new(self.0.clone(), index)
44 }
45
46 pub fn del(&self, index: u32) -> LinkDelRequest {
47 LinkDelRequest::new(self.0.clone(), index)
48 }
49
50 pub fn del_with_message(&self, message: LinkMessage) -> LinkDelRequest {
54 LinkDelRequest::new_with_message(self.0.clone(), message)
55 }
56
57 pub fn get(&self) -> LinkGetRequest {
59 LinkGetRequest::new(self.0.clone())
60 }
61
62 pub fn set_port(&self, message: LinkMessage) -> LinkAddRequest {
66 LinkAddRequest::new(self.0.clone(), message)
67 .set_flags(NLM_F_REQUEST | NLM_F_ACK)
68 }
69}