rtnetlink/route/
handle.rs

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