abol_codegen/
rfc2866.rs

1use abol_core::packet::Packet;
2pub const ACCT_STATUS_TYPE_TYPE: u8 = 40u8;
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4#[repr(u32)]
5pub enum AcctStatusType {
6    Start,
7    Stop,
8    Alive,
9    InterimUpdate,
10    AccountingOn,
11    AccountingOff,
12    Failed,
13    Unknown(u32),
14}
15impl From<u32> for AcctStatusType {
16    fn from(v: u32) -> Self {
17        match v {
18            1u32 => Self::Start,
19            2u32 => Self::Stop,
20            3u32 => Self::Alive,
21            7u32 => Self::AccountingOn,
22            8u32 => Self::AccountingOff,
23            15u32 => Self::Failed,
24            other => Self::Unknown(other),
25        }
26    }
27}
28impl From<AcctStatusType> for u32 {
29    fn from(e: AcctStatusType) -> Self {
30        match e {
31            AcctStatusType::Start => 1u32,
32            AcctStatusType::Stop => 2u32,
33            AcctStatusType::Alive => 3u32,
34            AcctStatusType::InterimUpdate => 3u32,
35            AcctStatusType::AccountingOn => 7u32,
36            AcctStatusType::AccountingOff => 8u32,
37            AcctStatusType::Failed => 15u32,
38            AcctStatusType::Unknown(v) => v,
39        }
40    }
41}
42pub const ACCT_DELAY_TIME_TYPE: u8 = 41u8;
43pub const ACCT_INPUT_OCTETS_TYPE: u8 = 42u8;
44pub const ACCT_OUTPUT_OCTETS_TYPE: u8 = 43u8;
45pub const ACCT_SESSION_ID_TYPE: u8 = 44u8;
46pub const ACCT_AUTHENTIC_TYPE: u8 = 45u8;
47#[derive(Debug, Clone, Copy, PartialEq, Eq)]
48#[repr(u32)]
49pub enum AcctAuthentic {
50    Radius,
51    Local,
52    Remote,
53    Diameter,
54    Unknown(u32),
55}
56impl From<u32> for AcctAuthentic {
57    fn from(v: u32) -> Self {
58        match v {
59            1u32 => Self::Radius,
60            2u32 => Self::Local,
61            3u32 => Self::Remote,
62            4u32 => Self::Diameter,
63            other => Self::Unknown(other),
64        }
65    }
66}
67impl From<AcctAuthentic> for u32 {
68    fn from(e: AcctAuthentic) -> Self {
69        match e {
70            AcctAuthentic::Radius => 1u32,
71            AcctAuthentic::Local => 2u32,
72            AcctAuthentic::Remote => 3u32,
73            AcctAuthentic::Diameter => 4u32,
74            AcctAuthentic::Unknown(v) => v,
75        }
76    }
77}
78pub const ACCT_SESSION_TIME_TYPE: u8 = 46u8;
79pub const ACCT_INPUT_PACKETS_TYPE: u8 = 47u8;
80pub const ACCT_OUTPUT_PACKETS_TYPE: u8 = 48u8;
81pub const ACCT_TERMINATE_CAUSE_TYPE: u8 = 49u8;
82#[derive(Debug, Clone, Copy, PartialEq, Eq)]
83#[repr(u32)]
84pub enum AcctTerminateCause {
85    UserRequest,
86    LostCarrier,
87    LostService,
88    IdleTimeout,
89    SessionTimeout,
90    AdminReset,
91    AdminReboot,
92    PortError,
93    NasError,
94    NasRequest,
95    NasReboot,
96    PortUnneeded,
97    PortPreempted,
98    PortSuspended,
99    ServiceUnavailable,
100    Callback,
101    UserError,
102    HostRequest,
103    Unknown(u32),
104}
105impl From<u32> for AcctTerminateCause {
106    fn from(v: u32) -> Self {
107        match v {
108            1u32 => Self::UserRequest,
109            2u32 => Self::LostCarrier,
110            3u32 => Self::LostService,
111            4u32 => Self::IdleTimeout,
112            5u32 => Self::SessionTimeout,
113            6u32 => Self::AdminReset,
114            7u32 => Self::AdminReboot,
115            8u32 => Self::PortError,
116            9u32 => Self::NasError,
117            10u32 => Self::NasRequest,
118            11u32 => Self::NasReboot,
119            12u32 => Self::PortUnneeded,
120            13u32 => Self::PortPreempted,
121            14u32 => Self::PortSuspended,
122            15u32 => Self::ServiceUnavailable,
123            16u32 => Self::Callback,
124            17u32 => Self::UserError,
125            18u32 => Self::HostRequest,
126            other => Self::Unknown(other),
127        }
128    }
129}
130impl From<AcctTerminateCause> for u32 {
131    fn from(e: AcctTerminateCause) -> Self {
132        match e {
133            AcctTerminateCause::UserRequest => 1u32,
134            AcctTerminateCause::LostCarrier => 2u32,
135            AcctTerminateCause::LostService => 3u32,
136            AcctTerminateCause::IdleTimeout => 4u32,
137            AcctTerminateCause::SessionTimeout => 5u32,
138            AcctTerminateCause::AdminReset => 6u32,
139            AcctTerminateCause::AdminReboot => 7u32,
140            AcctTerminateCause::PortError => 8u32,
141            AcctTerminateCause::NasError => 9u32,
142            AcctTerminateCause::NasRequest => 10u32,
143            AcctTerminateCause::NasReboot => 11u32,
144            AcctTerminateCause::PortUnneeded => 12u32,
145            AcctTerminateCause::PortPreempted => 13u32,
146            AcctTerminateCause::PortSuspended => 14u32,
147            AcctTerminateCause::ServiceUnavailable => 15u32,
148            AcctTerminateCause::Callback => 16u32,
149            AcctTerminateCause::UserError => 17u32,
150            AcctTerminateCause::HostRequest => 18u32,
151            AcctTerminateCause::Unknown(v) => v,
152        }
153    }
154}
155pub const ACCT_MULTI_SESSION_ID_TYPE: u8 = 50u8;
156pub const ACCT_LINK_COUNT_TYPE: u8 = 51u8;
157pub trait Rfc2866Ext {
158    fn get_acct_status_type(&self) -> Option<AcctStatusType>;
159    fn set_acct_status_type(&mut self, value: AcctStatusType);
160    fn get_acct_delay_time(&self) -> Option<u32>;
161    fn set_acct_delay_time(&mut self, value: u32);
162    fn get_acct_input_octets(&self) -> Option<u32>;
163    fn set_acct_input_octets(&mut self, value: u32);
164    fn get_acct_output_octets(&self) -> Option<u32>;
165    fn set_acct_output_octets(&mut self, value: u32);
166    fn get_acct_session_id(&self) -> Option<String>;
167    fn set_acct_session_id(&mut self, value: impl Into<String>);
168    fn get_acct_authentic(&self) -> Option<AcctAuthentic>;
169    fn set_acct_authentic(&mut self, value: AcctAuthentic);
170    fn get_acct_session_time(&self) -> Option<u32>;
171    fn set_acct_session_time(&mut self, value: u32);
172    fn get_acct_input_packets(&self) -> Option<u32>;
173    fn set_acct_input_packets(&mut self, value: u32);
174    fn get_acct_output_packets(&self) -> Option<u32>;
175    fn set_acct_output_packets(&mut self, value: u32);
176    fn get_acct_terminate_cause(&self) -> Option<AcctTerminateCause>;
177    fn set_acct_terminate_cause(&mut self, value: AcctTerminateCause);
178    fn get_acct_multi_session_id(&self) -> Option<String>;
179    fn set_acct_multi_session_id(&mut self, value: impl Into<String>);
180    fn get_acct_link_count(&self) -> Option<u32>;
181    fn set_acct_link_count(&mut self, value: u32);
182}
183impl Rfc2866Ext for Packet {
184    fn get_acct_status_type(&self) -> Option<AcctStatusType> {
185        self.get_attribute_as::<u32>(ACCT_STATUS_TYPE_TYPE)
186            .map(AcctStatusType::from)
187    }
188    fn set_acct_status_type(&mut self, value: AcctStatusType) {
189        let wire_val: u32 = value.into();
190        self.set_attribute_as::<u32>(ACCT_STATUS_TYPE_TYPE, wire_val);
191    }
192    fn get_acct_delay_time(&self) -> Option<u32> {
193        self.get_attribute_as::<u32>(ACCT_DELAY_TIME_TYPE)
194    }
195    fn set_acct_delay_time(&mut self, value: u32) {
196        let wire_val = value;
197        self.set_attribute_as::<u32>(ACCT_DELAY_TIME_TYPE, wire_val);
198    }
199    fn get_acct_input_octets(&self) -> Option<u32> {
200        self.get_attribute_as::<u32>(ACCT_INPUT_OCTETS_TYPE)
201    }
202    fn set_acct_input_octets(&mut self, value: u32) {
203        let wire_val = value;
204        self.set_attribute_as::<u32>(ACCT_INPUT_OCTETS_TYPE, wire_val);
205    }
206    fn get_acct_output_octets(&self) -> Option<u32> {
207        self.get_attribute_as::<u32>(ACCT_OUTPUT_OCTETS_TYPE)
208    }
209    fn set_acct_output_octets(&mut self, value: u32) {
210        let wire_val = value;
211        self.set_attribute_as::<u32>(ACCT_OUTPUT_OCTETS_TYPE, wire_val);
212    }
213    fn get_acct_session_id(&self) -> Option<String> {
214        self.get_attribute_as::<String>(ACCT_SESSION_ID_TYPE)
215    }
216    fn set_acct_session_id(&mut self, value: impl Into<String>) {
217        let wire_val: String = value.into();
218        self.set_attribute_as::<String>(ACCT_SESSION_ID_TYPE, wire_val);
219    }
220    fn get_acct_authentic(&self) -> Option<AcctAuthentic> {
221        self.get_attribute_as::<u32>(ACCT_AUTHENTIC_TYPE)
222            .map(AcctAuthentic::from)
223    }
224    fn set_acct_authentic(&mut self, value: AcctAuthentic) {
225        let wire_val: u32 = value.into();
226        self.set_attribute_as::<u32>(ACCT_AUTHENTIC_TYPE, wire_val);
227    }
228    fn get_acct_session_time(&self) -> Option<u32> {
229        self.get_attribute_as::<u32>(ACCT_SESSION_TIME_TYPE)
230    }
231    fn set_acct_session_time(&mut self, value: u32) {
232        let wire_val = value;
233        self.set_attribute_as::<u32>(ACCT_SESSION_TIME_TYPE, wire_val);
234    }
235    fn get_acct_input_packets(&self) -> Option<u32> {
236        self.get_attribute_as::<u32>(ACCT_INPUT_PACKETS_TYPE)
237    }
238    fn set_acct_input_packets(&mut self, value: u32) {
239        let wire_val = value;
240        self.set_attribute_as::<u32>(ACCT_INPUT_PACKETS_TYPE, wire_val);
241    }
242    fn get_acct_output_packets(&self) -> Option<u32> {
243        self.get_attribute_as::<u32>(ACCT_OUTPUT_PACKETS_TYPE)
244    }
245    fn set_acct_output_packets(&mut self, value: u32) {
246        let wire_val = value;
247        self.set_attribute_as::<u32>(ACCT_OUTPUT_PACKETS_TYPE, wire_val);
248    }
249    fn get_acct_terminate_cause(&self) -> Option<AcctTerminateCause> {
250        self.get_attribute_as::<u32>(ACCT_TERMINATE_CAUSE_TYPE)
251            .map(AcctTerminateCause::from)
252    }
253    fn set_acct_terminate_cause(&mut self, value: AcctTerminateCause) {
254        let wire_val: u32 = value.into();
255        self.set_attribute_as::<u32>(ACCT_TERMINATE_CAUSE_TYPE, wire_val);
256    }
257    fn get_acct_multi_session_id(&self) -> Option<String> {
258        self.get_attribute_as::<String>(ACCT_MULTI_SESSION_ID_TYPE)
259    }
260    fn set_acct_multi_session_id(&mut self, value: impl Into<String>) {
261        let wire_val: String = value.into();
262        self.set_attribute_as::<String>(ACCT_MULTI_SESSION_ID_TYPE, wire_val);
263    }
264    fn get_acct_link_count(&self) -> Option<u32> {
265        self.get_attribute_as::<u32>(ACCT_LINK_COUNT_TYPE)
266    }
267    fn set_acct_link_count(&mut self, value: u32) {
268        let wire_val = value;
269        self.set_attribute_as::<u32>(ACCT_LINK_COUNT_TYPE, wire_val);
270    }
271}