rtnetlink/rule/
handle.rs

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