rtnetlink/route/
handle.rs

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