pub mod msg;
pub mod socket;
use crate::netlink::msg::NlMsgHeader;
pub trait GenericMessageBuilder<'a>: Sized {
type Buffer: std::io::Write;
type Input;
type Output;
type ParseError;
fn new(
buffer: &'a mut Self::Buffer,
family_id: u16,
seq: u32,
input: Self::Input,
) -> (Self, u32) {
(
Self::new_with_header(
buffer,
NlMsgHeader::new_with_seq_and_pid(seq, crate::netlink::socket::NL_SOCKET_AUTOPID),
family_id,
input,
),
seq,
)
}
fn new_with_header(
buffer: &'a mut Self::Buffer,
nl_msg_header: NlMsgHeader,
family: u16,
input: Self::Input,
) -> Self;
fn build(self) -> Result<(&'a mut Self::Buffer, usize), std::io::Error>;
fn parse_response(
reader: &mut impl std::io::Read,
) -> Result<Self::Output, crate::ResponseError<Self::ParseError>>;
}