abol-codegen 0.1.0

Code generation tools and RADIUS dictionary definitions for Abol.
Documentation
use abol_core::packet::Packet;
pub const ACCT_STATUS_TYPE_TYPE: u8 = 40u8;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u32)]
pub enum AcctStatusType {
    Start,
    Stop,
    Alive,
    InterimUpdate,
    AccountingOn,
    AccountingOff,
    Failed,
    Unknown(u32),
}
impl From<u32> for AcctStatusType {
    fn from(v: u32) -> Self {
        match v {
            1u32 => Self::Start,
            2u32 => Self::Stop,
            3u32 => Self::Alive,
            7u32 => Self::AccountingOn,
            8u32 => Self::AccountingOff,
            15u32 => Self::Failed,
            other => Self::Unknown(other),
        }
    }
}
impl From<AcctStatusType> for u32 {
    fn from(e: AcctStatusType) -> Self {
        match e {
            AcctStatusType::Start => 1u32,
            AcctStatusType::Stop => 2u32,
            AcctStatusType::Alive => 3u32,
            AcctStatusType::InterimUpdate => 3u32,
            AcctStatusType::AccountingOn => 7u32,
            AcctStatusType::AccountingOff => 8u32,
            AcctStatusType::Failed => 15u32,
            AcctStatusType::Unknown(v) => v,
        }
    }
}
pub const ACCT_DELAY_TIME_TYPE: u8 = 41u8;
pub const ACCT_INPUT_OCTETS_TYPE: u8 = 42u8;
pub const ACCT_OUTPUT_OCTETS_TYPE: u8 = 43u8;
pub const ACCT_SESSION_ID_TYPE: u8 = 44u8;
pub const ACCT_AUTHENTIC_TYPE: u8 = 45u8;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u32)]
pub enum AcctAuthentic {
    Radius,
    Local,
    Remote,
    Diameter,
    Unknown(u32),
}
impl From<u32> for AcctAuthentic {
    fn from(v: u32) -> Self {
        match v {
            1u32 => Self::Radius,
            2u32 => Self::Local,
            3u32 => Self::Remote,
            4u32 => Self::Diameter,
            other => Self::Unknown(other),
        }
    }
}
impl From<AcctAuthentic> for u32 {
    fn from(e: AcctAuthentic) -> Self {
        match e {
            AcctAuthentic::Radius => 1u32,
            AcctAuthentic::Local => 2u32,
            AcctAuthentic::Remote => 3u32,
            AcctAuthentic::Diameter => 4u32,
            AcctAuthentic::Unknown(v) => v,
        }
    }
}
pub const ACCT_SESSION_TIME_TYPE: u8 = 46u8;
pub const ACCT_INPUT_PACKETS_TYPE: u8 = 47u8;
pub const ACCT_OUTPUT_PACKETS_TYPE: u8 = 48u8;
pub const ACCT_TERMINATE_CAUSE_TYPE: u8 = 49u8;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u32)]
pub enum AcctTerminateCause {
    UserRequest,
    LostCarrier,
    LostService,
    IdleTimeout,
    SessionTimeout,
    AdminReset,
    AdminReboot,
    PortError,
    NasError,
    NasRequest,
    NasReboot,
    PortUnneeded,
    PortPreempted,
    PortSuspended,
    ServiceUnavailable,
    Callback,
    UserError,
    HostRequest,
    Unknown(u32),
}
impl From<u32> for AcctTerminateCause {
    fn from(v: u32) -> Self {
        match v {
            1u32 => Self::UserRequest,
            2u32 => Self::LostCarrier,
            3u32 => Self::LostService,
            4u32 => Self::IdleTimeout,
            5u32 => Self::SessionTimeout,
            6u32 => Self::AdminReset,
            7u32 => Self::AdminReboot,
            8u32 => Self::PortError,
            9u32 => Self::NasError,
            10u32 => Self::NasRequest,
            11u32 => Self::NasReboot,
            12u32 => Self::PortUnneeded,
            13u32 => Self::PortPreempted,
            14u32 => Self::PortSuspended,
            15u32 => Self::ServiceUnavailable,
            16u32 => Self::Callback,
            17u32 => Self::UserError,
            18u32 => Self::HostRequest,
            other => Self::Unknown(other),
        }
    }
}
impl From<AcctTerminateCause> for u32 {
    fn from(e: AcctTerminateCause) -> Self {
        match e {
            AcctTerminateCause::UserRequest => 1u32,
            AcctTerminateCause::LostCarrier => 2u32,
            AcctTerminateCause::LostService => 3u32,
            AcctTerminateCause::IdleTimeout => 4u32,
            AcctTerminateCause::SessionTimeout => 5u32,
            AcctTerminateCause::AdminReset => 6u32,
            AcctTerminateCause::AdminReboot => 7u32,
            AcctTerminateCause::PortError => 8u32,
            AcctTerminateCause::NasError => 9u32,
            AcctTerminateCause::NasRequest => 10u32,
            AcctTerminateCause::NasReboot => 11u32,
            AcctTerminateCause::PortUnneeded => 12u32,
            AcctTerminateCause::PortPreempted => 13u32,
            AcctTerminateCause::PortSuspended => 14u32,
            AcctTerminateCause::ServiceUnavailable => 15u32,
            AcctTerminateCause::Callback => 16u32,
            AcctTerminateCause::UserError => 17u32,
            AcctTerminateCause::HostRequest => 18u32,
            AcctTerminateCause::Unknown(v) => v,
        }
    }
}
pub const ACCT_MULTI_SESSION_ID_TYPE: u8 = 50u8;
pub const ACCT_LINK_COUNT_TYPE: u8 = 51u8;
pub trait Rfc2866Ext {
    fn get_acct_status_type(&self) -> Option<AcctStatusType>;
    fn set_acct_status_type(&mut self, value: AcctStatusType);
    fn get_acct_delay_time(&self) -> Option<u32>;
    fn set_acct_delay_time(&mut self, value: u32);
    fn get_acct_input_octets(&self) -> Option<u32>;
    fn set_acct_input_octets(&mut self, value: u32);
    fn get_acct_output_octets(&self) -> Option<u32>;
    fn set_acct_output_octets(&mut self, value: u32);
    fn get_acct_session_id(&self) -> Option<String>;
    fn set_acct_session_id(&mut self, value: impl Into<String>);
    fn get_acct_authentic(&self) -> Option<AcctAuthentic>;
    fn set_acct_authentic(&mut self, value: AcctAuthentic);
    fn get_acct_session_time(&self) -> Option<u32>;
    fn set_acct_session_time(&mut self, value: u32);
    fn get_acct_input_packets(&self) -> Option<u32>;
    fn set_acct_input_packets(&mut self, value: u32);
    fn get_acct_output_packets(&self) -> Option<u32>;
    fn set_acct_output_packets(&mut self, value: u32);
    fn get_acct_terminate_cause(&self) -> Option<AcctTerminateCause>;
    fn set_acct_terminate_cause(&mut self, value: AcctTerminateCause);
    fn get_acct_multi_session_id(&self) -> Option<String>;
    fn set_acct_multi_session_id(&mut self, value: impl Into<String>);
    fn get_acct_link_count(&self) -> Option<u32>;
    fn set_acct_link_count(&mut self, value: u32);
}
impl Rfc2866Ext for Packet {
    fn get_acct_status_type(&self) -> Option<AcctStatusType> {
        self.get_attribute_as::<u32>(ACCT_STATUS_TYPE_TYPE)
            .map(AcctStatusType::from)
    }
    fn set_acct_status_type(&mut self, value: AcctStatusType) {
        let wire_val: u32 = value.into();
        self.set_attribute_as::<u32>(ACCT_STATUS_TYPE_TYPE, wire_val);
    }
    fn get_acct_delay_time(&self) -> Option<u32> {
        self.get_attribute_as::<u32>(ACCT_DELAY_TIME_TYPE)
    }
    fn set_acct_delay_time(&mut self, value: u32) {
        let wire_val = value;
        self.set_attribute_as::<u32>(ACCT_DELAY_TIME_TYPE, wire_val);
    }
    fn get_acct_input_octets(&self) -> Option<u32> {
        self.get_attribute_as::<u32>(ACCT_INPUT_OCTETS_TYPE)
    }
    fn set_acct_input_octets(&mut self, value: u32) {
        let wire_val = value;
        self.set_attribute_as::<u32>(ACCT_INPUT_OCTETS_TYPE, wire_val);
    }
    fn get_acct_output_octets(&self) -> Option<u32> {
        self.get_attribute_as::<u32>(ACCT_OUTPUT_OCTETS_TYPE)
    }
    fn set_acct_output_octets(&mut self, value: u32) {
        let wire_val = value;
        self.set_attribute_as::<u32>(ACCT_OUTPUT_OCTETS_TYPE, wire_val);
    }
    fn get_acct_session_id(&self) -> Option<String> {
        self.get_attribute_as::<String>(ACCT_SESSION_ID_TYPE)
    }
    fn set_acct_session_id(&mut self, value: impl Into<String>) {
        let wire_val: String = value.into();
        self.set_attribute_as::<String>(ACCT_SESSION_ID_TYPE, wire_val);
    }
    fn get_acct_authentic(&self) -> Option<AcctAuthentic> {
        self.get_attribute_as::<u32>(ACCT_AUTHENTIC_TYPE)
            .map(AcctAuthentic::from)
    }
    fn set_acct_authentic(&mut self, value: AcctAuthentic) {
        let wire_val: u32 = value.into();
        self.set_attribute_as::<u32>(ACCT_AUTHENTIC_TYPE, wire_val);
    }
    fn get_acct_session_time(&self) -> Option<u32> {
        self.get_attribute_as::<u32>(ACCT_SESSION_TIME_TYPE)
    }
    fn set_acct_session_time(&mut self, value: u32) {
        let wire_val = value;
        self.set_attribute_as::<u32>(ACCT_SESSION_TIME_TYPE, wire_val);
    }
    fn get_acct_input_packets(&self) -> Option<u32> {
        self.get_attribute_as::<u32>(ACCT_INPUT_PACKETS_TYPE)
    }
    fn set_acct_input_packets(&mut self, value: u32) {
        let wire_val = value;
        self.set_attribute_as::<u32>(ACCT_INPUT_PACKETS_TYPE, wire_val);
    }
    fn get_acct_output_packets(&self) -> Option<u32> {
        self.get_attribute_as::<u32>(ACCT_OUTPUT_PACKETS_TYPE)
    }
    fn set_acct_output_packets(&mut self, value: u32) {
        let wire_val = value;
        self.set_attribute_as::<u32>(ACCT_OUTPUT_PACKETS_TYPE, wire_val);
    }
    fn get_acct_terminate_cause(&self) -> Option<AcctTerminateCause> {
        self.get_attribute_as::<u32>(ACCT_TERMINATE_CAUSE_TYPE)
            .map(AcctTerminateCause::from)
    }
    fn set_acct_terminate_cause(&mut self, value: AcctTerminateCause) {
        let wire_val: u32 = value.into();
        self.set_attribute_as::<u32>(ACCT_TERMINATE_CAUSE_TYPE, wire_val);
    }
    fn get_acct_multi_session_id(&self) -> Option<String> {
        self.get_attribute_as::<String>(ACCT_MULTI_SESSION_ID_TYPE)
    }
    fn set_acct_multi_session_id(&mut self, value: impl Into<String>) {
        let wire_val: String = value.into();
        self.set_attribute_as::<String>(ACCT_MULTI_SESSION_ID_TYPE, wire_val);
    }
    fn get_acct_link_count(&self) -> Option<u32> {
        self.get_attribute_as::<u32>(ACCT_LINK_COUNT_TYPE)
    }
    fn set_acct_link_count(&mut self, value: u32) {
        let wire_val = value;
        self.set_attribute_as::<u32>(ACCT_LINK_COUNT_TYPE, wire_val);
    }
}