rtnetlink/neighbour/
del.rs1use futures::stream::StreamExt;
4
5use netlink_packet_route::{
6 constants::*,
7 neighbour::NeighbourMessage,
8 NetlinkPayload,
9 RtnlMessage,
10};
11
12use netlink_proto::packet::NetlinkMessage;
13
14use crate::{Error, Handle};
15
16pub struct NeighbourDelRequest {
17 handle: Handle,
18 message: NeighbourMessage,
19}
20
21impl NeighbourDelRequest {
22 pub(crate) fn new(handle: Handle, message: NeighbourMessage) -> Self {
23 NeighbourDelRequest { handle, message }
24 }
25
26 pub async fn execute(self) -> Result<(), Error> {
28 let NeighbourDelRequest {
29 mut handle,
30 message,
31 } = self;
32
33 let mut req = NetlinkMessage::from(RtnlMessage::DelNeighbour(message));
34 req.header.flags = NLM_F_REQUEST | NLM_F_ACK;
35 let mut response = handle.request(req)?;
36 while let Some(msg) = response.next().await {
37 if let NetlinkPayload::Error(e) = msg.payload {
38 return Err(Error::NetlinkError(e));
39 }
40 }
41 Ok(())
42 }
43
44 pub fn message_mut(&mut self) -> &mut NeighbourMessage {
45 &mut self.message
46 }
47}