use core::marker::PhantomData;
#[doc(alias = "Ikev2ExchangeType")]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum IkeExchange {
SaInit,
Auth,
CreateChildSa,
Informational,
}
#[doc(alias = "IKEV2")]
#[doc(alias = "IKEv2")]
#[doc(alias = "RFC 7296")]
#[doc(alias = "RFC7296")]
#[doc(alias = "ISAKMP")]
#[doc(alias = "500")]
#[doc(alias = "EXCHANGE")]
#[doc(alias = "SA_INIT")]
#[doc(alias = "AUTH")]
#[doc(alias = "CREATE_CHILD_SA")]
#[doc(alias = "INFORMATIONAL")]
#[doc(alias = "INITIATOR_SPI")]
#[doc(alias = "RESPONDER_SPI")]
#[doc(alias = "MSGID")]
#[doc(alias = "FLAGS")]
#[doc(alias = "NEXT_HEADER")]
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct Ikev2Spec<'a> {
pub initiator_spi: Option<u64>,
pub responder_spi: Option<u64>,
pub exchange: Option<IkeExchange>,
pub msgid: Option<u32>,
pub flags: Option<u8>,
pub next_payload: Option<u8>,
pub _marker: PhantomData<&'a ()>,
}