#[allow(missing_docs)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[derive(Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub enum MultipleProgramIdentifiers
{
#[allow(missing_docs)]
Generic(ExtendedBpfProgramIdentifier),
#[allow(missing_docs)]
Native(ExtendedBpfProgramIdentifier),
#[allow(missing_docs)]
Offloaded(ExtendedBpfProgramIdentifier),
#[allow(missing_docs)]
GenericAndNative(ExtendedBpfProgramIdentifier, ExtendedBpfProgramIdentifier),
#[allow(missing_docs)]
GenericAndOffloaded(ExtendedBpfProgramIdentifier, ExtendedBpfProgramIdentifier),
#[allow(missing_docs)]
NativeAndOffloaded(ExtendedBpfProgramIdentifier, ExtendedBpfProgramIdentifier),
#[allow(missing_docs)]
GenericAndNativeAndOffloaded(ExtendedBpfProgramIdentifier, ExtendedBpfProgramIdentifier, ExtendedBpfProgramIdentifier),
}
impl MultipleProgramIdentifiers
{
#[allow(missing_docs)]
#[inline(always)]
pub fn choose_most_performant(self) -> (ExtendedBpfProgramIdentifier, AttachMode)
{
use self::MultipleProgramIdentifiers::*;
match self
{
Generic(extended_bpf_program_identifier) => (extended_bpf_program_identifier, AttachMode::Generic),
Native(extended_bpf_program_identifier) => (extended_bpf_program_identifier, AttachMode::Native),
Offloaded(extended_bpf_program_identifier) => (extended_bpf_program_identifier, AttachMode::Offloaded),
GenericAndNative(_, extended_bpf_program_identifier) => (extended_bpf_program_identifier, AttachMode::Native),
GenericAndOffloaded(_, extended_bpf_program_identifier) => (extended_bpf_program_identifier, AttachMode::Offloaded),
NativeAndOffloaded(_, extended_bpf_program_identifier) => (extended_bpf_program_identifier, AttachMode::Offloaded),
GenericAndNativeAndOffloaded(_, _, extended_bpf_program_identifier) => (extended_bpf_program_identifier, AttachMode::Offloaded),
}
}
}