From e003e7fb99827800e0febfa5d247c2afa875605c Mon Sep 17 00:00:00 2001 From: moznion Date: Wed, 25 Nov 2020 23:14:00 +0900 Subject: [PATCH] Add rfc2866 dict --- dicts/dictionary.rfc2866 | 58 ++++++++++ src/lib.rs | 1 + src/rfc2866.rs | 226 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 285 insertions(+) create mode 100644 dicts/dictionary.rfc2866 create mode 100644 src/rfc2866.rs diff --git a/dicts/dictionary.rfc2866 b/dicts/dictionary.rfc2866 new file mode 100644 index 0000000..05c4156 --- /dev/null +++ b/dicts/dictionary.rfc2866 @@ -0,0 +1,58 @@ +# -*- text -*- +# Copyright (C) 2011 The FreeRADIUS Server project and contributors +# +# Attributes and values defined in RFC 2866. +# http://www.ietf.org/rfc/rfc2866.txt +# +# $Id$ +# +ATTRIBUTE Acct-Status-Type 40 integer +ATTRIBUTE Acct-Delay-Time 41 integer +ATTRIBUTE Acct-Input-Octets 42 integer +ATTRIBUTE Acct-Output-Octets 43 integer +ATTRIBUTE Acct-Session-Id 44 string +ATTRIBUTE Acct-Authentic 45 integer +ATTRIBUTE Acct-Session-Time 46 integer +ATTRIBUTE Acct-Input-Packets 47 integer +ATTRIBUTE Acct-Output-Packets 48 integer +ATTRIBUTE Acct-Terminate-Cause 49 integer +ATTRIBUTE Acct-Multi-Session-Id 50 string +ATTRIBUTE Acct-Link-Count 51 integer + +# Accounting Status Types + +VALUE Acct-Status-Type Start 1 +VALUE Acct-Status-Type Stop 2 +VALUE Acct-Status-Type Alive 3 # dup +VALUE Acct-Status-Type Interim-Update 3 +VALUE Acct-Status-Type Accounting-On 7 +VALUE Acct-Status-Type Accounting-Off 8 +VALUE Acct-Status-Type Failed 15 + +# Authentication Types + +VALUE Acct-Authentic RADIUS 1 +VALUE Acct-Authentic Local 2 +VALUE Acct-Authentic Remote 3 +VALUE Acct-Authentic Diameter 4 + +# Acct Terminate Causes + +VALUE Acct-Terminate-Cause User-Request 1 +VALUE Acct-Terminate-Cause Lost-Carrier 2 +VALUE Acct-Terminate-Cause Lost-Service 3 +VALUE Acct-Terminate-Cause Idle-Timeout 4 +VALUE Acct-Terminate-Cause Session-Timeout 5 +VALUE Acct-Terminate-Cause Admin-Reset 6 +VALUE Acct-Terminate-Cause Admin-Reboot 7 +VALUE Acct-Terminate-Cause Port-Error 8 +VALUE Acct-Terminate-Cause NAS-Error 9 +VALUE Acct-Terminate-Cause NAS-Request 10 +VALUE Acct-Terminate-Cause NAS-Reboot 11 +VALUE Acct-Terminate-Cause Port-Unneeded 12 +VALUE Acct-Terminate-Cause Port-Preempted 13 +VALUE Acct-Terminate-Cause Port-Suspended 14 +VALUE Acct-Terminate-Cause Service-Unavailable 15 +VALUE Acct-Terminate-Cause Callback 16 +VALUE Acct-Terminate-Cause User-Error 17 +VALUE Acct-Terminate-Cause Host-Request 18 diff --git a/src/lib.rs b/src/lib.rs index 2849cb4..38e8a68 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,5 +10,6 @@ pub mod packet; pub mod request; pub mod request_handler; pub mod rfc2865; +pub mod rfc2866; pub mod secret_provider; pub mod server; diff --git a/src/rfc2866.rs b/src/rfc2866.rs new file mode 100644 index 0000000..b29f389 --- /dev/null +++ b/src/rfc2866.rs @@ -0,0 +1,226 @@ +// Code generated by machine generator; DO NOT EDIT. + +use std::net::Ipv4Addr; + +use crate::attribute::Attribute; +use crate::attributes::AVPType; +use crate::packet::Packet; + + +pub type AcctAuthentic = u32; +pub const ACCT_AUTHENTIC_RADIUS: AcctAuthentic = 1; +pub const ACCT_AUTHENTIC_LOCAL: AcctAuthentic = 2; +pub const ACCT_AUTHENTIC_REMOTE: AcctAuthentic = 3; +pub const ACCT_AUTHENTIC_DIAMETER: AcctAuthentic = 4; + + +pub type AcctStatusType = u32; +pub const ACCT_STATUS_TYPE_START: AcctStatusType = 1; +pub const ACCT_STATUS_TYPE_STOP: AcctStatusType = 2; +pub const ACCT_STATUS_TYPE_ALIVE: AcctStatusType = 3; +pub const ACCT_STATUS_TYPE_INTERIM_UPDATE: AcctStatusType = 3; +pub const ACCT_STATUS_TYPE_ACCOUNTING_ON: AcctStatusType = 7; +pub const ACCT_STATUS_TYPE_ACCOUNTING_OFF: AcctStatusType = 8; +pub const ACCT_STATUS_TYPE_FAILED: AcctStatusType = 15; + + +pub type AcctTerminateCause = u32; +pub const ACCT_TERMINATE_CAUSE_USER_REQUEST: AcctTerminateCause = 1; +pub const ACCT_TERMINATE_CAUSE_LOST_CARRIER: AcctTerminateCause = 2; +pub const ACCT_TERMINATE_CAUSE_LOST_SERVICE: AcctTerminateCause = 3; +pub const ACCT_TERMINATE_CAUSE_IDLE_TIMEOUT: AcctTerminateCause = 4; +pub const ACCT_TERMINATE_CAUSE_SESSION_TIMEOUT: AcctTerminateCause = 5; +pub const ACCT_TERMINATE_CAUSE_ADMIN_RESET: AcctTerminateCause = 6; +pub const ACCT_TERMINATE_CAUSE_ADMIN_REBOOT: AcctTerminateCause = 7; +pub const ACCT_TERMINATE_CAUSE_PORT_ERROR: AcctTerminateCause = 8; +pub const ACCT_TERMINATE_CAUSE_NAS_ERROR: AcctTerminateCause = 9; +pub const ACCT_TERMINATE_CAUSE_NAS_REQUEST: AcctTerminateCause = 10; +pub const ACCT_TERMINATE_CAUSE_NAS_REBOOT: AcctTerminateCause = 11; +pub const ACCT_TERMINATE_CAUSE_PORT_UNNEEDED: AcctTerminateCause = 12; +pub const ACCT_TERMINATE_CAUSE_PORT_PREEMPTED: AcctTerminateCause = 13; +pub const ACCT_TERMINATE_CAUSE_PORT_SUSPENDED: AcctTerminateCause = 14; +pub const ACCT_TERMINATE_CAUSE_SERVICE_UNAVAILABLE: AcctTerminateCause = 15; +pub const ACCT_TERMINATE_CAUSE_CALLBACK: AcctTerminateCause = 16; +pub const ACCT_TERMINATE_CAUSE_USER_ERROR: AcctTerminateCause = 17; +pub const ACCT_TERMINATE_CAUSE_HOST_REQUEST: AcctTerminateCause = 18; + + +pub const ACCT_STATUS_TYPE_TYPE: AVPType = 40; +pub fn delete_acct_status_type(packet: &mut Packet) { + packet.delete(ACCT_STATUS_TYPE_TYPE); +} +pub fn lookup_acct_status_type(packet: &Packet) -> Option<&Attribute> { + packet.lookup(ACCT_STATUS_TYPE_TYPE) +} +pub fn lookup_all_acct_status_type(packet: &Packet) -> Vec<&Attribute> { + packet.lookup_all(ACCT_STATUS_TYPE_TYPE) +} +pub fn add_acct_status_type(packet: &mut Packet, value: AcctStatusType) { + let attr = Attribute::from_u32(value as u32); + packet.add(ACCT_STATUS_TYPE_TYPE, &attr); +} + +pub const ACCT_DELAY_TIME_TYPE: AVPType = 41; +pub fn delete_acct_delay_time(packet: &mut Packet) { + packet.delete(ACCT_DELAY_TIME_TYPE); +} +pub fn lookup_acct_delay_time(packet: &Packet) -> Option<&Attribute> { + packet.lookup(ACCT_DELAY_TIME_TYPE) +} +pub fn lookup_all_acct_delay_time(packet: &Packet) -> Vec<&Attribute> { + packet.lookup_all(ACCT_DELAY_TIME_TYPE) +} +pub fn add_acct_delay_time(packet: &mut Packet, value: u32) { + let attr = Attribute::from_u32(value); + packet.add(ACCT_DELAY_TIME_TYPE, &attr); +} + +pub const ACCT_INPUT_OCTETS_TYPE: AVPType = 42; +pub fn delete_acct_input_octets(packet: &mut Packet) { + packet.delete(ACCT_INPUT_OCTETS_TYPE); +} +pub fn lookup_acct_input_octets(packet: &Packet) -> Option<&Attribute> { + packet.lookup(ACCT_INPUT_OCTETS_TYPE) +} +pub fn lookup_all_acct_input_octets(packet: &Packet) -> Vec<&Attribute> { + packet.lookup_all(ACCT_INPUT_OCTETS_TYPE) +} +pub fn add_acct_input_octets(packet: &mut Packet, value: u32) { + let attr = Attribute::from_u32(value); + packet.add(ACCT_INPUT_OCTETS_TYPE, &attr); +} + +pub const ACCT_OUTPUT_OCTETS_TYPE: AVPType = 43; +pub fn delete_acct_output_octets(packet: &mut Packet) { + packet.delete(ACCT_OUTPUT_OCTETS_TYPE); +} +pub fn lookup_acct_output_octets(packet: &Packet) -> Option<&Attribute> { + packet.lookup(ACCT_OUTPUT_OCTETS_TYPE) +} +pub fn lookup_all_acct_output_octets(packet: &Packet) -> Vec<&Attribute> { + packet.lookup_all(ACCT_OUTPUT_OCTETS_TYPE) +} +pub fn add_acct_output_octets(packet: &mut Packet, value: u32) { + let attr = Attribute::from_u32(value); + packet.add(ACCT_OUTPUT_OCTETS_TYPE, &attr); +} + +pub const ACCT_SESSION_ID_TYPE: AVPType = 44; +pub fn delete_acct_session_id(packet: &mut Packet) { + packet.delete(ACCT_SESSION_ID_TYPE); +} +pub fn lookup_acct_session_id(packet: &Packet) -> Option<&Attribute> { + packet.lookup(ACCT_SESSION_ID_TYPE) +} +pub fn lookup_all_acct_session_id(packet: &Packet) -> Vec<&Attribute> { + packet.lookup_all(ACCT_SESSION_ID_TYPE) +} +pub fn add_acct_session_id(packet: &mut Packet, value: &str) { + let attr = Attribute::from_string(value); + packet.add(ACCT_SESSION_ID_TYPE, &attr); +} + +pub const ACCT_AUTHENTIC_TYPE: AVPType = 45; +pub fn delete_acct_authentic(packet: &mut Packet) { + packet.delete(ACCT_AUTHENTIC_TYPE); +} +pub fn lookup_acct_authentic(packet: &Packet) -> Option<&Attribute> { + packet.lookup(ACCT_AUTHENTIC_TYPE) +} +pub fn lookup_all_acct_authentic(packet: &Packet) -> Vec<&Attribute> { + packet.lookup_all(ACCT_AUTHENTIC_TYPE) +} +pub fn add_acct_authentic(packet: &mut Packet, value: AcctAuthentic) { + let attr = Attribute::from_u32(value as u32); + packet.add(ACCT_AUTHENTIC_TYPE, &attr); +} + +pub const ACCT_SESSION_TIME_TYPE: AVPType = 46; +pub fn delete_acct_session_time(packet: &mut Packet) { + packet.delete(ACCT_SESSION_TIME_TYPE); +} +pub fn lookup_acct_session_time(packet: &Packet) -> Option<&Attribute> { + packet.lookup(ACCT_SESSION_TIME_TYPE) +} +pub fn lookup_all_acct_session_time(packet: &Packet) -> Vec<&Attribute> { + packet.lookup_all(ACCT_SESSION_TIME_TYPE) +} +pub fn add_acct_session_time(packet: &mut Packet, value: u32) { + let attr = Attribute::from_u32(value); + packet.add(ACCT_SESSION_TIME_TYPE, &attr); +} + +pub const ACCT_INPUT_PACKETS_TYPE: AVPType = 47; +pub fn delete_acct_input_packets(packet: &mut Packet) { + packet.delete(ACCT_INPUT_PACKETS_TYPE); +} +pub fn lookup_acct_input_packets(packet: &Packet) -> Option<&Attribute> { + packet.lookup(ACCT_INPUT_PACKETS_TYPE) +} +pub fn lookup_all_acct_input_packets(packet: &Packet) -> Vec<&Attribute> { + packet.lookup_all(ACCT_INPUT_PACKETS_TYPE) +} +pub fn add_acct_input_packets(packet: &mut Packet, value: u32) { + let attr = Attribute::from_u32(value); + packet.add(ACCT_INPUT_PACKETS_TYPE, &attr); +} + +pub const ACCT_OUTPUT_PACKETS_TYPE: AVPType = 48; +pub fn delete_acct_output_packets(packet: &mut Packet) { + packet.delete(ACCT_OUTPUT_PACKETS_TYPE); +} +pub fn lookup_acct_output_packets(packet: &Packet) -> Option<&Attribute> { + packet.lookup(ACCT_OUTPUT_PACKETS_TYPE) +} +pub fn lookup_all_acct_output_packets(packet: &Packet) -> Vec<&Attribute> { + packet.lookup_all(ACCT_OUTPUT_PACKETS_TYPE) +} +pub fn add_acct_output_packets(packet: &mut Packet, value: u32) { + let attr = Attribute::from_u32(value); + packet.add(ACCT_OUTPUT_PACKETS_TYPE, &attr); +} + +pub const ACCT_TERMINATE_CAUSE_TYPE: AVPType = 49; +pub fn delete_acct_terminate_cause(packet: &mut Packet) { + packet.delete(ACCT_TERMINATE_CAUSE_TYPE); +} +pub fn lookup_acct_terminate_cause(packet: &Packet) -> Option<&Attribute> { + packet.lookup(ACCT_TERMINATE_CAUSE_TYPE) +} +pub fn lookup_all_acct_terminate_cause(packet: &Packet) -> Vec<&Attribute> { + packet.lookup_all(ACCT_TERMINATE_CAUSE_TYPE) +} +pub fn add_acct_terminate_cause(packet: &mut Packet, value: AcctTerminateCause) { + let attr = Attribute::from_u32(value as u32); + packet.add(ACCT_TERMINATE_CAUSE_TYPE, &attr); +} + +pub const ACCT_MULTI_SESSION_ID_TYPE: AVPType = 50; +pub fn delete_acct_multi_session_id(packet: &mut Packet) { + packet.delete(ACCT_MULTI_SESSION_ID_TYPE); +} +pub fn lookup_acct_multi_session_id(packet: &Packet) -> Option<&Attribute> { + packet.lookup(ACCT_MULTI_SESSION_ID_TYPE) +} +pub fn lookup_all_acct_multi_session_id(packet: &Packet) -> Vec<&Attribute> { + packet.lookup_all(ACCT_MULTI_SESSION_ID_TYPE) +} +pub fn add_acct_multi_session_id(packet: &mut Packet, value: &str) { + let attr = Attribute::from_string(value); + packet.add(ACCT_MULTI_SESSION_ID_TYPE, &attr); +} + +pub const ACCT_LINK_COUNT_TYPE: AVPType = 51; +pub fn delete_acct_link_count(packet: &mut Packet) { + packet.delete(ACCT_LINK_COUNT_TYPE); +} +pub fn lookup_acct_link_count(packet: &Packet) -> Option<&Attribute> { + packet.lookup(ACCT_LINK_COUNT_TYPE) +} +pub fn lookup_all_acct_link_count(packet: &Packet) -> Vec<&Attribute> { + packet.lookup_all(ACCT_LINK_COUNT_TYPE) +} +pub fn add_acct_link_count(packet: &mut Packet, value: u32) { + let attr = Attribute::from_u32(value); + packet.add(ACCT_LINK_COUNT_TYPE, &attr); +}