1use futures::stream::StreamExt;
4
5use crate::{
6 packet::{NetlinkMessage, RtnlMessage, RuleMessage, NLM_F_ACK, NLM_F_REQUEST},
7 try_nl,
8 Error,
9 Handle,
10};
11
12pub struct RuleDelRequest {
13 handle: Handle,
14 message: RuleMessage,
15}
16
17impl RuleDelRequest {
18 pub(crate) fn new(handle: Handle, message: RuleMessage) -> Self {
19 RuleDelRequest { handle, message }
20 }
21
22 pub async fn execute(self) -> Result<(), Error> {
24 let RuleDelRequest {
25 mut handle,
26 message,
27 } = self;
28
29 let mut req = NetlinkMessage::from(RtnlMessage::DelRule(message));
30 req.header.flags = NLM_F_REQUEST | NLM_F_ACK;
31 let mut response = handle.request(req)?;
32 while let Some(msg) = response.next().await {
33 try_nl!(msg);
34 }
35 Ok(())
36 }
37
38 pub fn message_mut(&mut self) -> &mut RuleMessage {
39 &mut self.message
40 }
41}