Trait netlink_packet_core::NetlinkSerializable

source ·
pub trait NetlinkSerializable {
    // Required methods
    fn message_type(&self) -> u16;
    fn buffer_len(&self) -> usize;
    fn serialize(&self, buffer: &mut [u8]);
}

Required Methods§

source

fn message_type(&self) -> u16

source

fn buffer_len(&self) -> usize

Return the length of the serialized data.

Most netlink messages are encoded following a TLV scheme and this library takes advantage of this by pre-allocating buffers of the appropriate size when serializing messages, which is why buffer_len is needed.

source

fn serialize(&self, buffer: &mut [u8])

Serialize this types and write the serialized data into the given buffer. buffer’s length is exactly InnerMessage::buffer_len(). It means that if InnerMessage::buffer_len() is buggy and does not return the appropriate length, bad things can happen:

  • if buffer_len() returns a value smaller than the actual data, emit() may panics
  • if buffer_len() returns a value bigger than the actual data, the buffer will contain garbage
§Panic

This method panics if the buffer is not big enough.

Implementors§