netlink-packet-netfilter 0.4.0

netlink packet types for the netfilter subprotocol
Documentation
// SPDX-License-Identifier: MIT

use netlink_packet_core::{
    NetlinkHeader, NetlinkMessage, NetlinkPayload, NLM_F_ACK, NLM_F_REQUEST,
};

use crate::{message::NetfilterProtoFamily, NetfilterHeader, NetfilterMessage};

use super::{ConfigNla, ULogMessage};

const NFNETLINK_V0: u8 = libc::NFNETLINK_V0 as u8;

pub fn config_request(
    family: NetfilterProtoFamily,
    group_num: u16,
    nlas: Vec<ConfigNla>,
) -> NetlinkMessage<NetfilterMessage> {
    let mut hdr = NetlinkHeader::default();
    hdr.flags = NLM_F_REQUEST | NLM_F_ACK;
    let mut message = NetlinkMessage::new(
        hdr,
        NetlinkPayload::from(NetfilterMessage::new(
            NetfilterHeader::new(family, NFNETLINK_V0, group_num),
            ULogMessage::Config(nlas),
        )),
    );
    message.finalize();
    message
}