rtnetlink/rule/
handle.rs

1// SPDX-License-Identifier: MIT
2
3use crate::{
4    Handle, IpVersion, RuleAddRequest, RuleDelRequest, RuleGetRequest,
5};
6use netlink_packet_route::RuleMessage;
7
8pub struct RuleHandle(Handle);
9
10impl RuleHandle {
11    pub fn new(handle: Handle) -> Self {
12        RuleHandle(handle)
13    }
14
15    /// Retrieve the list of route rule entries (equivalent to `ip rule show`)
16    pub fn get(&self, ip_version: IpVersion) -> RuleGetRequest {
17        RuleGetRequest::new(self.0.clone(), ip_version)
18    }
19
20    /// Add a route rule entry (equivalent to `ip rule add`)
21    pub fn add(&self) -> RuleAddRequest {
22        RuleAddRequest::new(self.0.clone())
23    }
24
25    /// Delete the given route rule entry (equivalent to `ip rule del`)
26    pub fn del(&self, rule: RuleMessage) -> RuleDelRequest {
27        RuleDelRequest::new(self.0.clone(), rule)
28    }
29}