abol-codegen 0.1.0

Code generation tools and RADIUS dictionary definitions for Abol.
Documentation
use abol_core::{attribute::ToRadiusAttribute, packet::Packet};
use std::time::SystemTime;
pub const ACCT_INPUT_GIGAWORDS_TYPE: u8 = 52u8;
pub const ACCT_OUTPUT_GIGAWORDS_TYPE: u8 = 53u8;
pub const EVENT_TIMESTAMP_TYPE: u8 = 55u8;
pub const ARAP_PASSWORD_TYPE: u8 = 70u8;
pub const ARAP_FEATURES_TYPE: u8 = 71u8;
pub const ARAP_ZONE_ACCESS_TYPE: u8 = 72u8;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u32)]
pub enum ArapZoneAccess {
    DefaultZone,
    ZoneFilterInclusive,
    ZoneFilterExclusive,
    Unknown(u32),
}
impl From<u32> for ArapZoneAccess {
    fn from(v: u32) -> Self {
        match v {
            1u32 => Self::DefaultZone,
            2u32 => Self::ZoneFilterInclusive,
            4u32 => Self::ZoneFilterExclusive,
            other => Self::Unknown(other),
        }
    }
}
impl From<ArapZoneAccess> for u32 {
    fn from(e: ArapZoneAccess) -> Self {
        match e {
            ArapZoneAccess::DefaultZone => 1u32,
            ArapZoneAccess::ZoneFilterInclusive => 2u32,
            ArapZoneAccess::ZoneFilterExclusive => 4u32,
            ArapZoneAccess::Unknown(v) => v,
        }
    }
}
pub const ARAP_SECURITY_TYPE: u8 = 73u8;
pub const ARAP_SECURITY_DATA_TYPE: u8 = 74u8;
pub const PASSWORD_RETRY_TYPE: u8 = 75u8;
pub const PROMPT_TYPE: u8 = 76u8;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u32)]
pub enum Prompt {
    NoEcho,
    Echo,
    Unknown(u32),
}
impl From<u32> for Prompt {
    fn from(v: u32) -> Self {
        match v {
            0u32 => Self::NoEcho,
            1u32 => Self::Echo,
            other => Self::Unknown(other),
        }
    }
}
impl From<Prompt> for u32 {
    fn from(e: Prompt) -> Self {
        match e {
            Prompt::NoEcho => 0u32,
            Prompt::Echo => 1u32,
            Prompt::Unknown(v) => v,
        }
    }
}
pub const CONNECT_INFO_TYPE: u8 = 77u8;
pub const CONFIGURATION_TOKEN_TYPE: u8 = 78u8;
pub const EAP_MESSAGE_TYPE: u8 = 79u8;
pub const MESSAGE_AUTHENTICATOR_TYPE: u8 = 80u8;
pub const ARAP_CHALLENGE_RESPONSE_TYPE: u8 = 84u8;
pub const ACCT_INTERIM_INTERVAL_TYPE: u8 = 85u8;
pub const NAS_PORT_ID_TYPE: u8 = 87u8;
pub const FRAMED_POOL_TYPE: u8 = 88u8;
pub trait Rfc2869Ext {
    fn get_acct_input_gigawords(&self) -> Option<u32>;
    fn set_acct_input_gigawords(&mut self, value: u32);
    fn get_acct_output_gigawords(&self) -> Option<u32>;
    fn set_acct_output_gigawords(&mut self, value: u32);
    fn get_event_timestamp(&self) -> Option<SystemTime>;
    fn set_event_timestamp(&mut self, value: SystemTime);
    fn get_arap_password(&self) -> Option<Vec<u8>>;
    fn set_arap_password(&mut self, value: impl Into<Vec<u8>>);
    fn get_arap_features(&self) -> Option<Vec<u8>>;
    fn set_arap_features(&mut self, value: impl Into<Vec<u8>>);
    fn get_arap_zone_access(&self) -> Option<ArapZoneAccess>;
    fn set_arap_zone_access(&mut self, value: ArapZoneAccess);
    fn get_arap_security(&self) -> Option<u32>;
    fn set_arap_security(&mut self, value: u32);
    fn get_arap_security_data(&self) -> Option<String>;
    fn set_arap_security_data(&mut self, value: impl Into<String>);
    fn get_password_retry(&self) -> Option<u32>;
    fn set_password_retry(&mut self, value: u32);
    fn get_prompt(&self) -> Option<Prompt>;
    fn set_prompt(&mut self, value: Prompt);
    fn get_connect_info(&self) -> Option<String>;
    fn set_connect_info(&mut self, value: impl Into<String>);
    fn get_configuration_token(&self) -> Option<String>;
    fn set_configuration_token(&mut self, value: impl Into<String>);
    fn get_eap_message(&self) -> Option<Vec<u8>>;
    fn set_eap_message(&mut self, value: impl Into<Vec<u8>>);
    fn get_message_authenticator(&self) -> Option<Vec<u8>>;
    fn set_message_authenticator(&mut self, value: impl Into<Vec<u8>>);
    fn get_arap_challenge_response(&self) -> Option<Vec<u8>>;
    fn set_arap_challenge_response(&mut self, value: impl Into<Vec<u8>>);
    fn get_acct_interim_interval(&self) -> Option<u32>;
    fn set_acct_interim_interval(&mut self, value: u32);
    fn get_nas_port_id(&self) -> Option<String>;
    fn set_nas_port_id(&mut self, value: impl Into<String>);
    fn get_framed_pool(&self) -> Option<String>;
    fn set_framed_pool(&mut self, value: impl Into<String>);
}
impl Rfc2869Ext for Packet {
    fn get_acct_input_gigawords(&self) -> Option<u32> {
        self.get_attribute_as::<u32>(ACCT_INPUT_GIGAWORDS_TYPE)
    }
    fn set_acct_input_gigawords(&mut self, value: u32) {
        let wire_val = value;
        self.set_attribute_as::<u32>(ACCT_INPUT_GIGAWORDS_TYPE, wire_val);
    }
    fn get_acct_output_gigawords(&self) -> Option<u32> {
        self.get_attribute_as::<u32>(ACCT_OUTPUT_GIGAWORDS_TYPE)
    }
    fn set_acct_output_gigawords(&mut self, value: u32) {
        let wire_val = value;
        self.set_attribute_as::<u32>(ACCT_OUTPUT_GIGAWORDS_TYPE, wire_val);
    }
    fn get_event_timestamp(&self) -> Option<SystemTime> {
        self.get_attribute_as::<SystemTime>(EVENT_TIMESTAMP_TYPE)
    }
    fn set_event_timestamp(&mut self, value: SystemTime) {
        let wire_val = value;
        self.set_attribute_as::<SystemTime>(EVENT_TIMESTAMP_TYPE, wire_val);
    }
    fn get_arap_password(&self) -> Option<Vec<u8>> {
        self.get_attribute_as::<Vec<u8>>(ARAP_PASSWORD_TYPE)
    }
    fn set_arap_password(&mut self, value: impl Into<Vec<u8>>) {
        let wire_val: Vec<u8> = value.into();
        if ToRadiusAttribute::to_bytes(&wire_val).len() != 16u32 as usize {
            return;
        }
        self.set_attribute_as::<Vec<u8>>(ARAP_PASSWORD_TYPE, wire_val);
    }
    fn get_arap_features(&self) -> Option<Vec<u8>> {
        self.get_attribute_as::<Vec<u8>>(ARAP_FEATURES_TYPE)
    }
    fn set_arap_features(&mut self, value: impl Into<Vec<u8>>) {
        let wire_val: Vec<u8> = value.into();
        if ToRadiusAttribute::to_bytes(&wire_val).len() != 14u32 as usize {
            return;
        }
        self.set_attribute_as::<Vec<u8>>(ARAP_FEATURES_TYPE, wire_val);
    }
    fn get_arap_zone_access(&self) -> Option<ArapZoneAccess> {
        self.get_attribute_as::<u32>(ARAP_ZONE_ACCESS_TYPE)
            .map(ArapZoneAccess::from)
    }
    fn set_arap_zone_access(&mut self, value: ArapZoneAccess) {
        let wire_val: u32 = value.into();
        self.set_attribute_as::<u32>(ARAP_ZONE_ACCESS_TYPE, wire_val);
    }
    fn get_arap_security(&self) -> Option<u32> {
        self.get_attribute_as::<u32>(ARAP_SECURITY_TYPE)
    }
    fn set_arap_security(&mut self, value: u32) {
        let wire_val = value;
        self.set_attribute_as::<u32>(ARAP_SECURITY_TYPE, wire_val);
    }
    fn get_arap_security_data(&self) -> Option<String> {
        self.get_attribute_as::<String>(ARAP_SECURITY_DATA_TYPE)
    }
    fn set_arap_security_data(&mut self, value: impl Into<String>) {
        let wire_val: String = value.into();
        self.set_attribute_as::<String>(ARAP_SECURITY_DATA_TYPE, wire_val);
    }
    fn get_password_retry(&self) -> Option<u32> {
        self.get_attribute_as::<u32>(PASSWORD_RETRY_TYPE)
    }
    fn set_password_retry(&mut self, value: u32) {
        let wire_val = value;
        self.set_attribute_as::<u32>(PASSWORD_RETRY_TYPE, wire_val);
    }
    fn get_prompt(&self) -> Option<Prompt> {
        self.get_attribute_as::<u32>(PROMPT_TYPE).map(Prompt::from)
    }
    fn set_prompt(&mut self, value: Prompt) {
        let wire_val: u32 = value.into();
        self.set_attribute_as::<u32>(PROMPT_TYPE, wire_val);
    }
    fn get_connect_info(&self) -> Option<String> {
        self.get_attribute_as::<String>(CONNECT_INFO_TYPE)
    }
    fn set_connect_info(&mut self, value: impl Into<String>) {
        let wire_val: String = value.into();
        self.set_attribute_as::<String>(CONNECT_INFO_TYPE, wire_val);
    }
    fn get_configuration_token(&self) -> Option<String> {
        self.get_attribute_as::<String>(CONFIGURATION_TOKEN_TYPE)
    }
    fn set_configuration_token(&mut self, value: impl Into<String>) {
        let wire_val: String = value.into();
        self.set_attribute_as::<String>(CONFIGURATION_TOKEN_TYPE, wire_val);
    }
    fn get_eap_message(&self) -> Option<Vec<u8>> {
        self.get_attribute_as::<Vec<u8>>(EAP_MESSAGE_TYPE)
    }
    fn set_eap_message(&mut self, value: impl Into<Vec<u8>>) {
        let wire_val: Vec<u8> = value.into();
        self.set_attribute_as::<Vec<u8>>(EAP_MESSAGE_TYPE, wire_val);
    }
    fn get_message_authenticator(&self) -> Option<Vec<u8>> {
        self.get_attribute_as::<Vec<u8>>(MESSAGE_AUTHENTICATOR_TYPE)
    }
    fn set_message_authenticator(&mut self, value: impl Into<Vec<u8>>) {
        let wire_val: Vec<u8> = value.into();
        self.set_attribute_as::<Vec<u8>>(MESSAGE_AUTHENTICATOR_TYPE, wire_val);
    }
    fn get_arap_challenge_response(&self) -> Option<Vec<u8>> {
        self.get_attribute_as::<Vec<u8>>(ARAP_CHALLENGE_RESPONSE_TYPE)
    }
    fn set_arap_challenge_response(&mut self, value: impl Into<Vec<u8>>) {
        let wire_val: Vec<u8> = value.into();
        if ToRadiusAttribute::to_bytes(&wire_val).len() != 8u32 as usize {
            return;
        }
        self.set_attribute_as::<Vec<u8>>(ARAP_CHALLENGE_RESPONSE_TYPE, wire_val);
    }
    fn get_acct_interim_interval(&self) -> Option<u32> {
        self.get_attribute_as::<u32>(ACCT_INTERIM_INTERVAL_TYPE)
    }
    fn set_acct_interim_interval(&mut self, value: u32) {
        let wire_val = value;
        self.set_attribute_as::<u32>(ACCT_INTERIM_INTERVAL_TYPE, wire_val);
    }
    fn get_nas_port_id(&self) -> Option<String> {
        self.get_attribute_as::<String>(NAS_PORT_ID_TYPE)
    }
    fn set_nas_port_id(&mut self, value: impl Into<String>) {
        let wire_val: String = value.into();
        self.set_attribute_as::<String>(NAS_PORT_ID_TYPE, wire_val);
    }
    fn get_framed_pool(&self) -> Option<String> {
        self.get_attribute_as::<String>(FRAMED_POOL_TYPE)
    }
    fn set_framed_pool(&mut self, value: impl Into<String>) {
        let wire_val: String = value.into();
        self.set_attribute_as::<String>(FRAMED_POOL_TYPE, wire_val);
    }
}