1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
// SPDX-License-Identifier: MIT
//! Traits for implementing generic netlink family
/// Provide the definition for generic netlink family
///
/// Family payload type should implement this trait to provide necessary
/// informations in order to build the packet headers (`nlmsghdr` and `genlmsghdr`).
///
/// If you are looking for an example implementation, you can refer to the
/// [`crate::ctrl`] module.
pub trait GenlFamily {
/// Return the unique family name registered in the kernel
///
/// Let the resolver lookup the dynamically assigned ID
fn family_name() -> &'static str;
/// Return the assigned family ID
///
/// # Note
/// The implementation of generic family should assign the ID to `GENL_ID_GENERATE` (0x0).
/// So the controller can dynamically assign the family ID.
///
/// Regarding to the reason above, you should not have to implement the function
/// unless the family uses static ID.
fn family_id(&self) -> u16 {
0
}
/// Return the command type of the current message
fn command(&self) -> u8;
/// Indicate the protocol version
fn version(&self) -> u8;
}