rtnetlink/addr/
handle.rs

1// SPDX-License-Identifier: MIT
2
3use std::net::IpAddr;
4
5use super::{AddressAddRequest, AddressDelRequest, AddressGetRequest};
6use crate::Handle;
7
8use netlink_packet_route::AddressMessage;
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(&self, index: u32, address: IpAddr, prefix_len: u8) -> AddressAddRequest {
24        AddressAddRequest::new(self.0.clone(), index, address, prefix_len)
25    }
26
27    /// Delete the given address
28    pub fn del(&self, address: AddressMessage) -> AddressDelRequest {
29        AddressDelRequest::new(self.0.clone(), address)
30    }
31}