netlink_packet_route/link/
link_mode.rs1const IF_LINK_MODE_DEFAULT: u8 = 0;
4const IF_LINK_MODE_DORMANT: u8 = 1;
5const IF_LINK_MODE_TESTING: u8 = 2;
6
7#[derive(Debug, PartialEq, Eq, Clone, Copy, Default)]
8#[non_exhaustive]
9pub enum LinkMode {
10 #[default]
11 Default,
12 Dormant,
14 Testing,
16 Other(u8),
17}
18
19impl From<u8> for LinkMode {
20 fn from(d: u8) -> Self {
21 match d {
22 IF_LINK_MODE_DEFAULT => Self::Default,
23 IF_LINK_MODE_DORMANT => Self::Dormant,
24 IF_LINK_MODE_TESTING => Self::Testing,
25 _ => Self::Other(d),
26 }
27 }
28}
29
30impl From<LinkMode> for u8 {
31 fn from(v: LinkMode) -> u8 {
32 match v {
33 LinkMode::Default => IF_LINK_MODE_DEFAULT,
34 LinkMode::Dormant => IF_LINK_MODE_DORMANT,
35 LinkMode::Testing => IF_LINK_MODE_TESTING,
36 LinkMode::Other(d) => d,
37 }
38 }
39}
40
41impl std::fmt::Display for LinkMode {
42 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
43 match self {
44 Self::Default => write!(f, "DEFAULT"),
45 Self::Dormant => write!(f, "DORMANT"),
46 Self::Testing => write!(f, "TESTING"),
47 Self::Other(d) => write!(f, "UNKNOWN:{d}"),
48 }
49 }
50}