rtnetlink/rule/
handle.rs

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