rtnetlink/addr/
handle.rs

1// SPDX-License-Identifier: MIT
2
3use std::net::IpAddr;
4
5use netlink_packet_route::address::AddressMessage;
6
7use super::{AddressAddRequest, AddressDelRequest, AddressGetRequest};
8use crate::Handle;
9
10pub struct AddressHandle(Handle);
11
12impl AddressHandle {
13    pub fn new(handle: Handle) -> Self {
14        AddressHandle(handle)
15    }
16
17    /// Retrieve the list of ip addresses (equivalent to `ip addr show`)
18    pub fn get(&self) -> AddressGetRequest {
19        AddressGetRequest::new(self.0.clone())
20    }
21
22    /// Add an ip address on an interface (equivalent to `ip addr add`)
23    pub fn add(
24        &self,
25        index: u32,
26        address: IpAddr,
27        prefix_len: u8,
28    ) -> AddressAddRequest {
29        AddressAddRequest::new(self.0.clone(), index, address, prefix_len)
30    }
31
32    /// Delete the given address
33    pub fn del(&self, address: AddressMessage) -> AddressDelRequest {
34        AddressDelRequest::new(self.0.clone(), address)
35    }
36}