#[derive(Default, Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)]
#[derive(Serialize, Deserialize)]
#[repr(transparent)]
pub struct InternetProtocolVersion4OptionKind(u8);
impl From<u8> for InternetProtocolVersion4OptionKind
{
#[inline(always)]
fn from(value: u8) -> Self
{
InternetProtocolVersion4OptionKind(value)
}
}
impl Into<u8> for InternetProtocolVersion4OptionKind
{
#[inline(always)]
fn into(self) -> u8
{
self.0
}
}
impl InternetProtocolVersion4OptionKind
{
const OneBitCopyField: u8 = 0b1000_0000;
const TwoBitClassField: u8 = 0b0110_0000;
const FiveBitNumberField: u8 = 0b0001_1111;
pub const EndOfOptionsList: Self = InternetProtocolVersion4OptionKind(0);
pub const NoOperation: Self = InternetProtocolVersion4OptionKind(1);
pub const BasicSecurity: Self = InternetProtocolVersion4OptionKind(130);
pub const LooseSourceRouteAndRecordRoute: Self = InternetProtocolVersion4OptionKind(131);
pub const InternetTimestamp: Self = InternetProtocolVersion4OptionKind(68);
pub const ExtendedSecurity: Self = InternetProtocolVersion4OptionKind(133);
pub const CommercialSecurity: Self = InternetProtocolVersion4OptionKind(134);
pub const RecordRoute: Self = InternetProtocolVersion4OptionKind(7);
pub const StreamIdentifier: Self = InternetProtocolVersion4OptionKind(136);
pub const StrictSourceRouteAndRecordRoute: Self = InternetProtocolVersion4OptionKind(137);
pub const ExperimentalMeasurement: Self = InternetProtocolVersion4OptionKind(10);
pub const ProbeMaximumTransmissionUnit: Self = InternetProtocolVersion4OptionKind(11);
pub const ReplyMaximumTransmissionUnit: Self = InternetProtocolVersion4OptionKind(12);
pub const ExperimentalFlowControl: Self = InternetProtocolVersion4OptionKind(205);
pub const ExperimentalAccessControl: Self = InternetProtocolVersion4OptionKind(142);
pub const ENCODE: Self = InternetProtocolVersion4OptionKind(15);
pub const ImiTrafficDescriptor: Self = InternetProtocolVersion4OptionKind(144);
pub const ExtendedInternetProtocol: Self = InternetProtocolVersion4OptionKind(145);
pub const Traceroute: Self = InternetProtocolVersion4OptionKind(82);
pub const AddressExtension: Self = InternetProtocolVersion4OptionKind(147);
pub const RouterAlert: Self = InternetProtocolVersion4OptionKind(148);
pub const SenderDirectedMultiDestinationDelivery: Self = InternetProtocolVersion4OptionKind(149);
pub const _150: Self = InternetProtocolVersion4OptionKind(150);
pub const DynamicPacketState: Self = InternetProtocolVersion4OptionKind(151);
pub const UpstreamMulticastPacket: Self = InternetProtocolVersion4OptionKind(152);
pub const QuickStart: Self = InternetProtocolVersion4OptionKind(25);
pub const Rfc3692StyleExperiment1: Self = InternetProtocolVersion4OptionKind(30);
pub const Rfc3692StyleExperiment2: Self = InternetProtocolVersion4OptionKind(94);
pub const Rfc3692StyleExperiment3: Self = InternetProtocolVersion4OptionKind(158);
pub const Rfc3692StyleExperiment4: Self = InternetProtocolVersion4OptionKind(222);
#[inline(always)]
pub fn copied_onto_all_fragments(self) -> bool
{
self.0 & Self::OneBitCopyField != 0
}
#[inline(always)]
pub fn should_not_be_copied_onto_fragments(self) -> bool
{
self.0 & Self::OneBitCopyField == 0
}
#[inline(always)]
pub fn class(self) -> InternetProtocolVersion4OptionClass
{
unsafe { transmute(self.0 & Self::TwoBitClassField >> 5) }
}
#[inline(always)]
pub fn number(self) -> InternetProtocolVersion4OptionNumber
{
InternetProtocolVersion4OptionNumber(self.0 & Self::FiveBitNumberField)
}
}