#[derive(Default, Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)]
#[derive(Serialize, Deserialize)]
#[repr(transparent)]
pub struct InternetProtocolVersion4OptionNumber(u8);
impl TryFrom<u8> for InternetProtocolVersion4OptionNumber
{
type Error = ();
#[inline(always)]
fn try_from(value: u8) -> Result<Self, Self::Error>
{
if value > InternetProtocolVersion4OptionKind::FiveBitNumberField
{
Err(())
}
else
{
Ok(InternetProtocolVersion4OptionNumber(value))
}
}
}
impl Into<u8> for InternetProtocolVersion4OptionNumber
{
#[inline(always)]
fn into(self) -> u8
{
self.0
}
}
impl InternetProtocolVersion4OptionNumber
{
pub const EndOfOptionsList: Self = InternetProtocolVersion4OptionNumber(0);
pub const NoOperation: Self = InternetProtocolVersion4OptionNumber(1);
pub const BasicSecurity: Self = InternetProtocolVersion4OptionNumber(2);
pub const LooseSourceRouteAndRecordRoute: Self = InternetProtocolVersion4OptionNumber(3);
pub const InternetTimestamp: Self = InternetProtocolVersion4OptionNumber(4);
pub const ExtendedSecurity: Self = InternetProtocolVersion4OptionNumber(5);
pub const CommercialSecurity: Self = InternetProtocolVersion4OptionNumber(6);
pub const RecordRoute: Self = InternetProtocolVersion4OptionNumber(7);
pub const StreamIdentifier: Self = InternetProtocolVersion4OptionNumber(8);
pub const StrictSourceRouteAndRecordRoute: Self = InternetProtocolVersion4OptionNumber(9);
pub const ExperimentalMeasurement: Self = InternetProtocolVersion4OptionNumber(10);
pub const ProbeMaximumTransmissionUnit: Self = InternetProtocolVersion4OptionNumber(11);
pub const ReplyMaximumTransmissionUnit: Self = InternetProtocolVersion4OptionNumber(12);
pub const ExperimentalFlowControl: Self = InternetProtocolVersion4OptionNumber(13);
pub const ExperimentalAccessControl: Self = InternetProtocolVersion4OptionNumber(14);
pub const ENCODE: Self = InternetProtocolVersion4OptionNumber(15);
pub const ImiTrafficDescriptor: Self = InternetProtocolVersion4OptionNumber(16);
pub const ExtendedInternetProtocol: Self = InternetProtocolVersion4OptionNumber(17);
pub const Traceroute: Self = InternetProtocolVersion4OptionNumber(18);
pub const AddressExtension: Self = InternetProtocolVersion4OptionNumber(19);
pub const RouterAlert: Self = InternetProtocolVersion4OptionNumber(20);
pub const SenderDirectedMultiDestinationDelivery: Self = InternetProtocolVersion4OptionNumber(21);
pub const _150: Self = InternetProtocolVersion4OptionNumber(22);
pub const DynamicPacketState: Self = InternetProtocolVersion4OptionNumber(23);
pub const UpstreamMulticastPacket: Self = InternetProtocolVersion4OptionNumber(24);
pub const QuickStart: Self = InternetProtocolVersion4OptionNumber(25);
pub const Rfc3692StyleExperiment: Self = InternetProtocolVersion4OptionNumber(30);
#[inline(always)]
pub fn is_assigned_or_previously_assigned(self) -> bool
{
self.0 <= 25 || self.0 == 30
}
}