From 2f2c344f2b1e962ad0292f753e1d09a8ac510a6f Mon Sep 17 00:00:00 2001 From: moznion Date: Sat, 12 Dec 2020 13:30:14 +0900 Subject: [PATCH] Restructure --- Cargo.toml | 2 - code-generator/src/main.rs | 8 +- e2e-test/Cargo.toml | 2 - e2e-test/src/test.rs | 19 ++- examples/Cargo.toml | 2 - examples/client.rs | 8 +- examples/server.rs | 10 +- radius-client/Cargo.toml | 13 -- radius-client/src/lib.rs | 1 - radius-server/Cargo.toml | 15 --- radius-server/src/lib.rs | 6 - radius-server/src/request_handler.rs | 17 --- radius-server/src/secret_provider.rs | 20 --- {radius-client => radius}/src/client.rs | 2 +- radius/src/{ => core}/attributes.rs | 2 +- radius/src/{ => core}/avp.rs | 6 +- radius/src/{ => core}/code.rs | 0 radius/src/core/mod.rs | 30 +++++ radius/src/{ => core}/packet.rs | 16 ++- radius/src/{ => core}/request.rs | 2 +- radius/src/{ => core}/rfc2865.rs | 117 ++++++----------- radius/src/{ => core}/rfc2866.rs | 62 ++++----- radius/src/{ => core}/rfc2867.rs | 21 +-- radius/src/{ => core}/rfc2868.rs | 160 +++++++---------------- radius/src/{ => core}/rfc2869.rs | 65 ++++----- radius/src/{ => core}/rfc3162.rs | 40 +++--- radius/src/{ => core}/rfc3576.rs | 21 ++- radius/src/{ => core}/rfc3580.rs | 17 ++- radius/src/{ => core}/rfc4072.rs | 18 ++- radius/src/{ => core}/rfc4372.rs | 23 +++- radius/src/{ => core}/rfc4603.rs | 19 ++- radius/src/{ => core}/rfc4675.rs | 34 +++-- radius/src/{ => core}/rfc4818.rs | 26 +++- radius/src/{ => core}/rfc4849.rs | 27 +++- radius/src/{ => core}/rfc5090.rs | 64 ++++----- radius/src/{ => core}/rfc5176.rs | 24 +++- radius/src/{ => core}/rfc5607.rs | 65 ++++----- radius/src/{ => core}/rfc5904.rs | 39 ++++-- radius/src/{ => core}/rfc6519.rs | 32 ++++- radius/src/{ => core}/rfc6572.rs | 167 +++++++++--------------- radius/src/{ => core}/rfc6677.rs | 35 ++++- radius/src/{ => core}/rfc6911.rs | 51 +++++--- radius/src/{ => core}/rfc7055.rs | 48 +++++-- radius/src/{ => core}/rfc7155.rs | 42 ++++-- radius/src/{ => core}/tag.rs | 2 +- radius/src/lib.rs | 36 +---- {radius-server => radius}/src/server.rs | 38 +++++- scripts/generate-code.sh | 4 +- 48 files changed, 750 insertions(+), 728 deletions(-) delete mode 100644 radius-client/Cargo.toml delete mode 100644 radius-client/src/lib.rs delete mode 100644 radius-server/Cargo.toml delete mode 100644 radius-server/src/lib.rs delete mode 100644 radius-server/src/request_handler.rs delete mode 100644 radius-server/src/secret_provider.rs rename {radius-client => radius}/src/client.rs (99%) rename radius/src/{ => core}/attributes.rs (98%) rename radius/src/{ => core}/avp.rs (99%) rename radius/src/{ => core}/code.rs (100%) create mode 100644 radius/src/core/mod.rs rename radius/src/{ => core}/packet.rs (98%) rename radius/src/{ => core}/request.rs (94%) rename radius/src/{ => core}/rfc2865.rs (92%) rename radius/src/{ => core}/rfc2866.rs (88%) rename radius/src/{ => core}/rfc2867.rs (86%) rename radius/src/{ => core}/rfc2868.rs (65%) rename radius/src/{ => core}/rfc2869.rs (90%) rename radius/src/{ => core}/rfc3162.rs (85%) rename radius/src/{ => core}/rfc3576.rs (89%) rename radius/src/{ => core}/rfc3580.rs (86%) rename radius/src/{ => core}/rfc4072.rs (88%) rename radius/src/{ => core}/rfc4372.rs (80%) rename radius/src/{ => core}/rfc4603.rs (89%) rename radius/src/{ => core}/rfc4675.rs (88%) rename radius/src/{ => core}/rfc4818.rs (80%) rename radius/src/{ => core}/rfc4849.rs (79%) rename radius/src/{ => core}/rfc5090.rs (92%) rename radius/src/{ => core}/rfc5176.rs (81%) rename radius/src/{ => core}/rfc5607.rs (75%) rename radius/src/{ => core}/rfc5904.rs (92%) rename radius/src/{ => core}/rfc6519.rs (79%) rename radius/src/{ => core}/rfc6572.rs (76%) rename radius/src/{ => core}/rfc6677.rs (86%) rename radius/src/{ => core}/rfc6911.rs (85%) rename radius/src/{ => core}/rfc7055.rs (85%) rename radius/src/{ => core}/rfc7155.rs (71%) rename radius/src/{ => core}/tag.rs (97%) rename {radius-server => radius}/src/server.rs (78%) diff --git a/Cargo.toml b/Cargo.toml index a848e05..bff44d4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,8 +2,6 @@ members = [ "radius", - "radius-server", - "radius-client", # Internal "code-generator", diff --git a/code-generator/src/main.rs b/code-generator/src/main.rs index 2df3257..d2d8337 100644 --- a/code-generator/src/main.rs +++ b/code-generator/src/main.rs @@ -167,16 +167,16 @@ use std::net::{Ipv4Addr, Ipv6Addr}; use chrono::{DateTime, Utc}; -use crate::avp::{AVP, AVPType, AVPError}; -use crate::packet::Packet; -use crate::tag::Tag; +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; +use crate::core::tag::Tag; "; w.write_all(code).unwrap(); for rfc_name in rfc_names { - w.write_all(format!("use crate::{};\n", rfc_name).as_bytes()) + w.write_all(format!("use crate::core::{};\n", rfc_name).as_bytes()) .unwrap(); } } diff --git a/e2e-test/Cargo.toml b/e2e-test/Cargo.toml index bcea756..26fbec1 100644 --- a/e2e-test/Cargo.toml +++ b/e2e-test/Cargo.toml @@ -7,7 +7,5 @@ publish = false [dependencies] radius = { version = "0.1.0", path = "../radius" } -radius-client = { version = "0.1.0", path = "../radius-client" } -radius-server = { version = "0.1.0", path = "../radius-server" } tokio = { version = "0.3.5", features = ["signal", "net"] } async-trait = "0.1.42" diff --git a/e2e-test/src/test.rs b/e2e-test/src/test.rs index b4f8ebd..37b7c69 100644 --- a/e2e-test/src/test.rs +++ b/e2e-test/src/test.rs @@ -6,11 +6,10 @@ use async_trait::async_trait; use tokio::net::UdpSocket; use tokio::time::sleep; -use radius::code::Code; -use radius::request::Request; -use radius::rfc2865; -use radius_server::request_handler::RequestHandler; -use radius_server::secret_provider::{SecretProvider, SecretProviderError}; +use radius::core::code::Code; +use radius::core::request::Request; +use radius::core::rfc2865; +use radius::server::{RequestHandler, SecretProvider, SecretProviderError}; struct MyRequestHandler {} @@ -75,11 +74,11 @@ mod tests { use tokio::sync::oneshot; - use radius::code::Code; - use radius::packet::Packet; - use radius::rfc2865; - use radius_client::client::{Client, ClientError}; - use radius_server::server::Server; + use radius::client::{Client, ClientError}; + use radius::core::code::Code; + use radius::core::packet::Packet; + use radius::core::rfc2865; + use radius::server::Server; use crate::test::{LongTimeTakingHandler, MyRequestHandler, MySecretProvider}; diff --git a/examples/Cargo.toml b/examples/Cargo.toml index e680b70..833b868 100644 --- a/examples/Cargo.toml +++ b/examples/Cargo.toml @@ -8,8 +8,6 @@ repository = "https://github.com/moznion/radius-rs" [dev-dependencies] radius = { version = "0.1.0", path = "../radius" } -radius-client = { version = "0.1.0", path = "../radius-client" } -radius-server = { version = "0.1.0", path = "../radius-server" } log = "0.4.11" env_logger = "0.8.2" tokio = { version = "0.3.4", features = ["signal", "net"] } diff --git a/examples/client.rs b/examples/client.rs index 2667612..b873106 100644 --- a/examples/client.rs +++ b/examples/client.rs @@ -1,9 +1,9 @@ #[macro_use] extern crate log; -use radius::code::Code; -use radius::packet::Packet; -use radius::rfc2865; -use radius_client::client::Client; +use radius::client::Client; +use radius::core::code::Code; +use radius::core::packet::Packet; +use radius::core::rfc2865; use std::net::SocketAddr; use tokio::time::Duration; diff --git a/examples/server.rs b/examples/server.rs index f28aef4..59a3e02 100644 --- a/examples/server.rs +++ b/examples/server.rs @@ -8,12 +8,10 @@ use async_trait::async_trait; use tokio::net::UdpSocket; use tokio::signal; -use radius::code::Code; -use radius::request::Request; -use radius::rfc2865; -use radius_server::request_handler::RequestHandler; -use radius_server::secret_provider::{SecretProvider, SecretProviderError}; -use radius_server::server::Server; +use radius::core::code::Code; +use radius::core::request::Request; +use radius::core::rfc2865; +use radius::server::{RequestHandler, SecretProvider, SecretProviderError, Server}; #[tokio::main] async fn main() { diff --git a/radius-client/Cargo.toml b/radius-client/Cargo.toml deleted file mode 100644 index 63a8289..0000000 --- a/radius-client/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "radius-client" -version = "0.1.0" -authors = ["moznion "] -edition = "2018" -license-file = "../LICENSE" -repository = "https://github.com/moznion/radius-rs" -keywords = ["radius", "client"] - -[dependencies] -radius = { path = "../radius" } -tokio = { version = "0.3.5", features = ["net", "time"] } -thiserror = "1.0" diff --git a/radius-client/src/lib.rs b/radius-client/src/lib.rs deleted file mode 100644 index b9babe5..0000000 --- a/radius-client/src/lib.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod client; diff --git a/radius-server/Cargo.toml b/radius-server/Cargo.toml deleted file mode 100644 index a6bb734..0000000 --- a/radius-server/Cargo.toml +++ /dev/null @@ -1,15 +0,0 @@ -[package] -name = "radius-server" -version = "0.1.0" -authors = ["moznion "] -edition = "2018" -license-file = "../LICENSE" -repository = "https://github.com/moznion/radius-rs" -keywords = ["radius", "client"] - -[dependencies] -radius = { path = "../radius" } -tokio = { version = "0.3.5", features = ["full"] } -log = "0.4.11" -thiserror = "1.0" -async-trait = "0.1.42" diff --git a/radius-server/src/lib.rs b/radius-server/src/lib.rs deleted file mode 100644 index 22417a9..0000000 --- a/radius-server/src/lib.rs +++ /dev/null @@ -1,6 +0,0 @@ -#[macro_use] -extern crate log; - -pub mod request_handler; -pub mod secret_provider; -pub mod server; diff --git a/radius-server/src/request_handler.rs b/radius-server/src/request_handler.rs deleted file mode 100644 index 1e1ddf2..0000000 --- a/radius-server/src/request_handler.rs +++ /dev/null @@ -1,17 +0,0 @@ -use async_trait::async_trait; -use tokio::net::UdpSocket; - -use radius::request::Request; - -/// RequestHandler is a handler for the received RADIUS request. -#[async_trait] -pub trait RequestHandler: 'static + Sync + Send { - /// This method has to implement the core feature of the server application what you need. - /// - /// # Arguments - /// - /// * conn - This connection is associated with the remote requester. In the most situations, - /// you have to send a response through this connection object. - /// * request - This is a request object that comes from the remote requester. - async fn handle_radius_request(&self, conn: &UdpSocket, request: &Request) -> Result; -} diff --git a/radius-server/src/secret_provider.rs b/radius-server/src/secret_provider.rs deleted file mode 100644 index d01c59d..0000000 --- a/radius-server/src/secret_provider.rs +++ /dev/null @@ -1,20 +0,0 @@ -use std::net::SocketAddr; - -use thiserror::Error; - -#[derive(Error, Debug)] -pub enum SecretProviderError { - /// An error that represents a failure to fetch a secret value from the provider. - #[error("failed to fetch a secret value: {0}")] - FailedFetchingError(String), - /// An error that represents a generic (i.e. unclassified) error that occurs on the secret value provider. - #[error("unexpected error: {0}")] - GenericError(String), -} - -/// SecretProvider is a provider for secret value. -pub trait SecretProvider: 'static + Sync + Send { - /// This method has to implement the generator of the secret value to verify the request of - /// `Accounting-Response`, `Accounting-Response` and `CoA-Request`. - fn fetch_secret(&self, remote_addr: SocketAddr) -> Result, SecretProviderError>; -} diff --git a/radius-client/src/client.rs b/radius/src/client.rs similarity index 99% rename from radius-client/src/client.rs rename to radius/src/client.rs index eb597ca..8a739c8 100644 --- a/radius-client/src/client.rs +++ b/radius/src/client.rs @@ -5,7 +5,7 @@ use thiserror::Error; use tokio::net::UdpSocket; use tokio::time::timeout; -use radius::packet::Packet; +use crate::core::packet::Packet; #[derive(Error, Debug)] pub enum ClientError { diff --git a/radius/src/attributes.rs b/radius/src/core/attributes.rs similarity index 98% rename from radius/src/attributes.rs rename to radius/src/core/attributes.rs index dc72b15..841e38f 100644 --- a/radius/src/attributes.rs +++ b/radius/src/core/attributes.rs @@ -1,4 +1,4 @@ -use crate::avp::{AVPType, AVP}; +use crate::core::avp::{AVPType, AVP}; #[derive(Debug, Clone, PartialEq)] pub(crate) struct Attributes(pub(crate) Vec); diff --git a/radius/src/avp.rs b/radius/src/core/avp.rs similarity index 99% rename from radius/src/avp.rs rename to radius/src/core/avp.rs index 10868d3..7dde82e 100644 --- a/radius/src/avp.rs +++ b/radius/src/core/avp.rs @@ -5,7 +5,7 @@ use std::net::{Ipv4Addr, Ipv6Addr}; use chrono::{DateTime, TimeZone, Utc}; use thiserror::Error; -use crate::tag::{Tag, UNUSED_TAG_VALUE}; +use crate::core::tag::{Tag, UNUSED_TAG_VALUE}; #[derive(Error, PartialEq, Debug)] pub enum AVPError { @@ -631,8 +631,8 @@ mod tests { use chrono::Utc; - use crate::avp::{AVPError, AVP}; - use crate::tag::Tag; + use crate::core::avp::{AVPError, AVP}; + use crate::core::tag::Tag; #[test] fn it_should_convert_attribute_to_integer32() -> Result<(), AVPError> { diff --git a/radius/src/code.rs b/radius/src/core/code.rs similarity index 100% rename from radius/src/code.rs rename to radius/src/core/code.rs diff --git a/radius/src/core/mod.rs b/radius/src/core/mod.rs new file mode 100644 index 0000000..91eeeeb --- /dev/null +++ b/radius/src/core/mod.rs @@ -0,0 +1,30 @@ +pub(crate) mod attributes; +pub mod avp; +pub mod code; +pub mod packet; +pub mod request; +pub mod rfc2865; +pub mod rfc2866; +pub mod rfc2867; +pub mod rfc2868; +pub mod rfc2869; +pub mod rfc3162; +pub mod rfc3576; +pub mod rfc3580; +pub mod rfc4072; +pub mod rfc4372; +pub mod rfc4603; +pub mod rfc4675; +pub mod rfc4818; +pub mod rfc4849; +pub mod rfc5090; +pub mod rfc5176; +pub mod rfc5607; +pub mod rfc5904; +pub mod rfc6519; +pub mod rfc6572; +pub mod rfc6677; +pub mod rfc6911; +pub mod rfc7055; +pub mod rfc7155; +pub mod tag; diff --git a/radius/src/packet.rs b/radius/src/core/packet.rs similarity index 98% rename from radius/src/packet.rs rename to radius/src/core/packet.rs index 0192314..d6a39b1 100644 --- a/radius/src/packet.rs +++ b/radius/src/core/packet.rs @@ -3,9 +3,9 @@ use std::convert::TryInto; use rand::Rng; use thiserror::Error; -use crate::attributes::Attributes; -use crate::avp::{AVPType, AVP}; -use crate::code::Code; +use crate::core::attributes::Attributes; +use crate::core::avp::{AVPType, AVP}; +use crate::core::code::Code; const MAX_PACKET_LENGTH: usize = 4096; const RADIUS_PACKET_HEADER_LENGTH: usize = 20; // i.e. minimum packet length @@ -293,10 +293,12 @@ impl Packet { mod tests { use std::net::Ipv4Addr; - use crate::avp::AVP; - use crate::code::Code; - use crate::packet::{Packet, PacketError, MAX_PACKET_LENGTH, RADIUS_PACKET_HEADER_LENGTH}; - use crate::rfc2865; + use crate::core::avp::AVP; + use crate::core::code::Code; + use crate::core::packet::{ + Packet, PacketError, MAX_PACKET_LENGTH, RADIUS_PACKET_HEADER_LENGTH, + }; + use crate::core::rfc2865; #[test] fn test_for_rfc2865_7_1() -> Result<(), PacketError> { diff --git a/radius/src/request.rs b/radius/src/core/request.rs similarity index 94% rename from radius/src/request.rs rename to radius/src/core/request.rs index 999f336..35ad7f0 100644 --- a/radius/src/request.rs +++ b/radius/src/core/request.rs @@ -1,6 +1,6 @@ use std::net::SocketAddr; -use crate::packet::Packet; +use crate::core::packet::Packet; /// RADIUS request object. pub struct Request { diff --git a/radius/src/rfc2865.rs b/radius/src/core/rfc2865.rs similarity index 92% rename from radius/src/rfc2865.rs rename to radius/src/core/rfc2865.rs index 98e91e3..a4bff81 100644 --- a/radius/src/rfc2865.rs +++ b/radius/src/core/rfc2865.rs @@ -1,9 +1,13 @@ // Code generated by machine generator; DO NOT EDIT. -use std::net::Ipv4Addr; +use std::net::{Ipv4Addr}; + + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; pub const USER_NAME_TYPE: AVPType = 1; pub fn delete_user_name(packet: &mut Packet) { @@ -28,18 +32,11 @@ pub fn delete_user_password(packet: &mut Packet) { packet.delete(USER_PASSWORD_TYPE); } pub fn add_user_password(packet: &mut Packet, value: &[u8]) -> Result<(), AVPError> { - packet.add(AVP::from_user_password( - USER_PASSWORD_TYPE, - value, - packet.get_secret(), - packet.get_authenticator(), - )?); + packet.add(AVP::from_user_password(USER_PASSWORD_TYPE, value, packet.get_secret(), packet.get_authenticator())?); Ok(()) } pub fn lookup_user_password(packet: &Packet) -> Option, AVPError>> { - packet - .lookup(USER_PASSWORD_TYPE) - .map(|v| v.encode_user_password(packet.get_secret(), packet.get_authenticator())) + packet.lookup(USER_PASSWORD_TYPE).map(|v| v.encode_user_password(packet.get_secret(), packet.get_authenticator())) } pub fn lookup_all_user_password(packet: &Packet) -> Result>, AVPError> { let mut vec = Vec::new(); @@ -111,9 +108,7 @@ pub fn add_service_type(packet: &mut Packet, value: ServiceType) { packet.add(AVP::from_u32(SERVICE_TYPE_TYPE, value as u32)); } pub fn lookup_service_type(packet: &Packet) -> Option> { - packet - .lookup(SERVICE_TYPE_TYPE) - .map(|v| Ok(v.encode_u32()? as ServiceType)) + packet.lookup(SERVICE_TYPE_TYPE).map(|v| Ok(v.encode_u32()? as ServiceType)) } pub fn lookup_all_service_type(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -131,9 +126,7 @@ pub fn add_framed_protocol(packet: &mut Packet, value: FramedProtocol) { packet.add(AVP::from_u32(FRAMED_PROTOCOL_TYPE, value as u32)); } pub fn lookup_framed_protocol(packet: &Packet) -> Option> { - packet - .lookup(FRAMED_PROTOCOL_TYPE) - .map(|v| Ok(v.encode_u32()? as FramedProtocol)) + packet.lookup(FRAMED_PROTOCOL_TYPE).map(|v| Ok(v.encode_u32()? as FramedProtocol)) } pub fn lookup_all_framed_protocol(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -151,9 +144,7 @@ pub fn add_framed_ip_address(packet: &mut Packet, value: &Ipv4Addr) { packet.add(AVP::from_ipv4(FRAMED_IP_ADDRESS_TYPE, value)); } pub fn lookup_framed_ip_address(packet: &Packet) -> Option> { - packet - .lookup(FRAMED_IP_ADDRESS_TYPE) - .map(|v| v.encode_ipv4()) + packet.lookup(FRAMED_IP_ADDRESS_TYPE).map(|v| v.encode_ipv4()) } pub fn lookup_all_framed_ip_address(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -171,9 +162,7 @@ pub fn add_framed_ip_netmask(packet: &mut Packet, value: &Ipv4Addr) { packet.add(AVP::from_ipv4(FRAMED_IP_NETMASK_TYPE, value)); } pub fn lookup_framed_ip_netmask(packet: &Packet) -> Option> { - packet - .lookup(FRAMED_IP_NETMASK_TYPE) - .map(|v| v.encode_ipv4()) + packet.lookup(FRAMED_IP_NETMASK_TYPE).map(|v| v.encode_ipv4()) } pub fn lookup_all_framed_ip_netmask(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -191,9 +180,7 @@ pub fn add_framed_routing(packet: &mut Packet, value: FramedRouting) { packet.add(AVP::from_u32(FRAMED_ROUTING_TYPE, value as u32)); } pub fn lookup_framed_routing(packet: &Packet) -> Option> { - packet - .lookup(FRAMED_ROUTING_TYPE) - .map(|v| Ok(v.encode_u32()? as FramedRouting)) + packet.lookup(FRAMED_ROUTING_TYPE).map(|v| Ok(v.encode_u32()? as FramedRouting)) } pub fn lookup_all_framed_routing(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -247,9 +234,7 @@ pub fn add_framed_compression(packet: &mut Packet, value: FramedCompression) { packet.add(AVP::from_u32(FRAMED_COMPRESSION_TYPE, value as u32)); } pub fn lookup_framed_compression(packet: &Packet) -> Option> { - packet - .lookup(FRAMED_COMPRESSION_TYPE) - .map(|v| Ok(v.encode_u32()? as FramedCompression)) + packet.lookup(FRAMED_COMPRESSION_TYPE).map(|v| Ok(v.encode_u32()? as FramedCompression)) } pub fn lookup_all_framed_compression(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -285,9 +270,7 @@ pub fn add_login_service(packet: &mut Packet, value: LoginService) { packet.add(AVP::from_u32(LOGIN_SERVICE_TYPE, value as u32)); } pub fn lookup_login_service(packet: &Packet) -> Option> { - packet - .lookup(LOGIN_SERVICE_TYPE) - .map(|v| Ok(v.encode_u32()? as LoginService)) + packet.lookup(LOGIN_SERVICE_TYPE).map(|v| Ok(v.encode_u32()? as LoginService)) } pub fn lookup_all_login_service(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -305,9 +288,7 @@ pub fn add_login_tcp_port(packet: &mut Packet, value: LoginTCPPort) { packet.add(AVP::from_u32(LOGIN_TCP_PORT_TYPE, value as u32)); } pub fn lookup_login_tcp_port(packet: &Packet) -> Option> { - packet - .lookup(LOGIN_TCP_PORT_TYPE) - .map(|v| Ok(v.encode_u32()? as LoginTCPPort)) + packet.lookup(LOGIN_TCP_PORT_TYPE).map(|v| Ok(v.encode_u32()? as LoginTCPPort)) } pub fn lookup_all_login_tcp_port(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -343,9 +324,7 @@ pub fn add_callback_number(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(CALLBACK_NUMBER_TYPE, value)); } pub fn lookup_callback_number(packet: &Packet) -> Option> { - packet - .lookup(CALLBACK_NUMBER_TYPE) - .map(|v| v.encode_string()) + packet.lookup(CALLBACK_NUMBER_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_callback_number(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -399,9 +378,7 @@ pub fn add_framed_ipx_network(packet: &mut Packet, value: &Ipv4Addr) { packet.add(AVP::from_ipv4(FRAMED_IPX_NETWORK_TYPE, value)); } pub fn lookup_framed_ipx_network(packet: &Packet) -> Option> { - packet - .lookup(FRAMED_IPX_NETWORK_TYPE) - .map(|v| v.encode_ipv4()) + packet.lookup(FRAMED_IPX_NETWORK_TYPE).map(|v| v.encode_ipv4()) } pub fn lookup_all_framed_ipx_network(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -496,9 +473,7 @@ pub fn add_termination_action(packet: &mut Packet, value: TerminationAction) { packet.add(AVP::from_u32(TERMINATION_ACTION_TYPE, value as u32)); } pub fn lookup_termination_action(packet: &Packet) -> Option> { - packet - .lookup(TERMINATION_ACTION_TYPE) - .map(|v| Ok(v.encode_u32()? as TerminationAction)) + packet.lookup(TERMINATION_ACTION_TYPE).map(|v| Ok(v.encode_u32()? as TerminationAction)) } pub fn lookup_all_termination_action(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -516,9 +491,7 @@ pub fn add_called_station_id(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(CALLED_STATION_ID_TYPE, value)); } pub fn lookup_called_station_id(packet: &Packet) -> Option> { - packet - .lookup(CALLED_STATION_ID_TYPE) - .map(|v| v.encode_string()) + packet.lookup(CALLED_STATION_ID_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_called_station_id(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -536,9 +509,7 @@ pub fn add_calling_station_id(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(CALLING_STATION_ID_TYPE, value)); } pub fn lookup_calling_station_id(packet: &Packet) -> Option> { - packet - .lookup(CALLING_STATION_ID_TYPE) - .map(|v| v.encode_string()) + packet.lookup(CALLING_STATION_ID_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_calling_station_id(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -556,9 +527,7 @@ pub fn add_nas_identifier(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(NAS_IDENTIFIER_TYPE, value)); } pub fn lookup_nas_identifier(packet: &Packet) -> Option> { - packet - .lookup(NAS_IDENTIFIER_TYPE) - .map(|v| v.encode_string()) + packet.lookup(NAS_IDENTIFIER_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_nas_identifier(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -594,9 +563,7 @@ pub fn add_login_lat_service(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(LOGIN_LAT_SERVICE_TYPE, value)); } pub fn lookup_login_lat_service(packet: &Packet) -> Option> { - packet - .lookup(LOGIN_LAT_SERVICE_TYPE) - .map(|v| v.encode_string()) + packet.lookup(LOGIN_LAT_SERVICE_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_login_lat_service(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -614,9 +581,7 @@ pub fn add_login_lat_node(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(LOGIN_LAT_NODE_TYPE, value)); } pub fn lookup_login_lat_node(packet: &Packet) -> Option> { - packet - .lookup(LOGIN_LAT_NODE_TYPE) - .map(|v| v.encode_string()) + packet.lookup(LOGIN_LAT_NODE_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_login_lat_node(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -634,9 +599,7 @@ pub fn add_login_lat_group(packet: &mut Packet, value: &[u8]) { packet.add(AVP::from_bytes(LOGIN_LAT_GROUP_TYPE, value)); } pub fn lookup_login_lat_group(packet: &Packet) -> Option> { - packet - .lookup(LOGIN_LAT_GROUP_TYPE) - .map(|v| v.encode_bytes()) + packet.lookup(LOGIN_LAT_GROUP_TYPE).map(|v| v.encode_bytes()) } pub fn lookup_all_login_lat_group(packet: &Packet) -> Vec> { let mut vec = Vec::new(); @@ -654,9 +617,7 @@ pub fn add_framed_apple_talk_link(packet: &mut Packet, value: u32) { packet.add(AVP::from_u32(FRAMED_APPLE_TALK_LINK_TYPE, value)); } pub fn lookup_framed_apple_talk_link(packet: &Packet) -> Option> { - packet - .lookup(FRAMED_APPLE_TALK_LINK_TYPE) - .map(|v| v.encode_u32()) + packet.lookup(FRAMED_APPLE_TALK_LINK_TYPE).map(|v| v.encode_u32()) } pub fn lookup_all_framed_apple_talk_link(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -674,9 +635,7 @@ pub fn add_framed_apple_talk_network(packet: &mut Packet, value: u32) { packet.add(AVP::from_u32(FRAMED_APPLE_TALK_NETWORK_TYPE, value)); } pub fn lookup_framed_apple_talk_network(packet: &Packet) -> Option> { - packet - .lookup(FRAMED_APPLE_TALK_NETWORK_TYPE) - .map(|v| v.encode_u32()) + packet.lookup(FRAMED_APPLE_TALK_NETWORK_TYPE).map(|v| v.encode_u32()) } pub fn lookup_all_framed_apple_talk_network(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -694,9 +653,7 @@ pub fn add_framed_apple_talk_zone(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(FRAMED_APPLE_TALK_ZONE_TYPE, value)); } pub fn lookup_framed_apple_talk_zone(packet: &Packet) -> Option> { - packet - .lookup(FRAMED_APPLE_TALK_ZONE_TYPE) - .map(|v| v.encode_string()) + packet.lookup(FRAMED_APPLE_TALK_ZONE_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_framed_apple_talk_zone(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -732,9 +689,7 @@ pub fn add_nas_port_type(packet: &mut Packet, value: NasPortType) { packet.add(AVP::from_u32(NAS_PORT_TYPE_TYPE, value as u32)); } pub fn lookup_nas_port_type(packet: &Packet) -> Option> { - packet - .lookup(NAS_PORT_TYPE_TYPE) - .map(|v| Ok(v.encode_u32()? as NasPortType)) + packet.lookup(NAS_PORT_TYPE_TYPE).map(|v| Ok(v.encode_u32()? as NasPortType)) } pub fn lookup_all_nas_port_type(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -770,9 +725,7 @@ pub fn add_login_lat_port(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(LOGIN_LAT_PORT_TYPE, value)); } pub fn lookup_login_lat_port(packet: &Packet) -> Option> { - packet - .lookup(LOGIN_LAT_PORT_TYPE) - .map(|v| v.encode_string()) + packet.lookup(LOGIN_LAT_PORT_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_login_lat_port(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -788,6 +741,7 @@ pub const FRAMED_COMPRESSION_VAN_JACOBSON_TCP_IP: FramedCompression = 1; pub const FRAMED_COMPRESSION_IPX_HEADER_COMPRESSION: FramedCompression = 2; pub const FRAMED_COMPRESSION_STAC_LZS: FramedCompression = 3; + pub type FramedProtocol = u32; pub const FRAMED_PROTOCOL_PPP: FramedProtocol = 1; pub const FRAMED_PROTOCOL_SLIP: FramedProtocol = 2; @@ -796,12 +750,14 @@ pub const FRAMED_PROTOCOL_GANDALF_SLML: FramedProtocol = 4; pub const FRAMED_PROTOCOL_XYLOGICS_IPX_SLIP: FramedProtocol = 5; pub const FRAMED_PROTOCOL_X_75_SYNCHRONOUS: FramedProtocol = 6; + pub type FramedRouting = u32; pub const FRAMED_ROUTING_NONE: FramedRouting = 0; pub const FRAMED_ROUTING_BROADCAST: FramedRouting = 1; pub const FRAMED_ROUTING_LISTEN: FramedRouting = 2; pub const FRAMED_ROUTING_BROADCAST_LISTEN: FramedRouting = 3; + pub type LoginService = u32; pub const LOGIN_SERVICE_TELNET: LoginService = 0; pub const LOGIN_SERVICE_RLOGIN: LoginService = 1; @@ -812,11 +768,13 @@ pub const LOGIN_SERVICE_X25_PAD: LoginService = 5; pub const LOGIN_SERVICE_X25_T3POS: LoginService = 6; pub const LOGIN_SERVICE_TCP_CLEAR_QUIET: LoginService = 8; + pub type LoginTCPPort = u32; pub const LOGIN_TCP_PORT_TELNET: LoginTCPPort = 23; pub const LOGIN_TCP_PORT_RLOGIN: LoginTCPPort = 513; pub const LOGIN_TCP_PORT_RSH: LoginTCPPort = 514; + pub type NasPortType = u32; pub const NAS_PORT_TYPE_ASYNC: NasPortType = 0; pub const NAS_PORT_TYPE_SYNC: NasPortType = 1; @@ -839,6 +797,7 @@ pub const NAS_PORT_TYPE_CABLE: NasPortType = 17; pub const NAS_PORT_TYPE_WIRELESS_OTHER: NasPortType = 18; pub const NAS_PORT_TYPE_WIRELESS_802_11: NasPortType = 19; + pub type ServiceType = u32; pub const SERVICE_TYPE_LOGIN_USER: ServiceType = 1; pub const SERVICE_TYPE_FRAMED_USER: ServiceType = 2; @@ -852,6 +811,8 @@ pub const SERVICE_TYPE_CALLBACK_NAS_PROMPT: ServiceType = 9; pub const SERVICE_TYPE_CALL_CHECK: ServiceType = 10; pub const SERVICE_TYPE_CALLBACK_ADMINISTRATIVE: ServiceType = 11; + pub type TerminationAction = u32; pub const TERMINATION_ACTION_DEFAULT: TerminationAction = 0; pub const TERMINATION_ACTION_RADIUS_REQUEST: TerminationAction = 1; + diff --git a/radius/src/rfc2866.rs b/radius/src/core/rfc2866.rs similarity index 88% rename from radius/src/rfc2866.rs rename to radius/src/core/rfc2866.rs index fcdf4d7..77ea32f 100644 --- a/radius/src/rfc2866.rs +++ b/radius/src/core/rfc2866.rs @@ -1,7 +1,14 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; + + + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + + + pub const ACCT_STATUS_TYPE_TYPE: AVPType = 40; pub fn delete_acct_status_type(packet: &mut Packet) { @@ -11,9 +18,7 @@ pub fn add_acct_status_type(packet: &mut Packet, value: AcctStatusType) { packet.add(AVP::from_u32(ACCT_STATUS_TYPE_TYPE, value as u32)); } pub fn lookup_acct_status_type(packet: &Packet) -> Option> { - packet - .lookup(ACCT_STATUS_TYPE_TYPE) - .map(|v| Ok(v.encode_u32()? as AcctStatusType)) + packet.lookup(ACCT_STATUS_TYPE_TYPE).map(|v| Ok(v.encode_u32()? as AcctStatusType)) } pub fn lookup_all_acct_status_type(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -49,9 +54,7 @@ pub fn add_acct_input_octets(packet: &mut Packet, value: u32) { packet.add(AVP::from_u32(ACCT_INPUT_OCTETS_TYPE, value)); } pub fn lookup_acct_input_octets(packet: &Packet) -> Option> { - packet - .lookup(ACCT_INPUT_OCTETS_TYPE) - .map(|v| v.encode_u32()) + packet.lookup(ACCT_INPUT_OCTETS_TYPE).map(|v| v.encode_u32()) } pub fn lookup_all_acct_input_octets(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -69,9 +72,7 @@ pub fn add_acct_output_octets(packet: &mut Packet, value: u32) { packet.add(AVP::from_u32(ACCT_OUTPUT_OCTETS_TYPE, value)); } pub fn lookup_acct_output_octets(packet: &Packet) -> Option> { - packet - .lookup(ACCT_OUTPUT_OCTETS_TYPE) - .map(|v| v.encode_u32()) + packet.lookup(ACCT_OUTPUT_OCTETS_TYPE).map(|v| v.encode_u32()) } pub fn lookup_all_acct_output_octets(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -89,9 +90,7 @@ pub fn add_acct_session_id(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(ACCT_SESSION_ID_TYPE, value)); } pub fn lookup_acct_session_id(packet: &Packet) -> Option> { - packet - .lookup(ACCT_SESSION_ID_TYPE) - .map(|v| v.encode_string()) + packet.lookup(ACCT_SESSION_ID_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_acct_session_id(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -109,9 +108,7 @@ pub fn add_acct_authentic(packet: &mut Packet, value: AcctAuthentic) { packet.add(AVP::from_u32(ACCT_AUTHENTIC_TYPE, value as u32)); } pub fn lookup_acct_authentic(packet: &Packet) -> Option> { - packet - .lookup(ACCT_AUTHENTIC_TYPE) - .map(|v| Ok(v.encode_u32()? as AcctAuthentic)) + packet.lookup(ACCT_AUTHENTIC_TYPE).map(|v| Ok(v.encode_u32()? as AcctAuthentic)) } pub fn lookup_all_acct_authentic(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -129,9 +126,7 @@ pub fn add_acct_session_time(packet: &mut Packet, value: u32) { packet.add(AVP::from_u32(ACCT_SESSION_TIME_TYPE, value)); } pub fn lookup_acct_session_time(packet: &Packet) -> Option> { - packet - .lookup(ACCT_SESSION_TIME_TYPE) - .map(|v| v.encode_u32()) + packet.lookup(ACCT_SESSION_TIME_TYPE).map(|v| v.encode_u32()) } pub fn lookup_all_acct_session_time(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -149,9 +144,7 @@ pub fn add_acct_input_packets(packet: &mut Packet, value: u32) { packet.add(AVP::from_u32(ACCT_INPUT_PACKETS_TYPE, value)); } pub fn lookup_acct_input_packets(packet: &Packet) -> Option> { - packet - .lookup(ACCT_INPUT_PACKETS_TYPE) - .map(|v| v.encode_u32()) + packet.lookup(ACCT_INPUT_PACKETS_TYPE).map(|v| v.encode_u32()) } pub fn lookup_all_acct_input_packets(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -169,9 +162,7 @@ pub fn add_acct_output_packets(packet: &mut Packet, value: u32) { packet.add(AVP::from_u32(ACCT_OUTPUT_PACKETS_TYPE, value)); } pub fn lookup_acct_output_packets(packet: &Packet) -> Option> { - packet - .lookup(ACCT_OUTPUT_PACKETS_TYPE) - .map(|v| v.encode_u32()) + packet.lookup(ACCT_OUTPUT_PACKETS_TYPE).map(|v| v.encode_u32()) } pub fn lookup_all_acct_output_packets(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -188,16 +179,10 @@ pub fn delete_acct_terminate_cause(packet: &mut Packet) { pub fn add_acct_terminate_cause(packet: &mut Packet, value: AcctTerminateCause) { packet.add(AVP::from_u32(ACCT_TERMINATE_CAUSE_TYPE, value as u32)); } -pub fn lookup_acct_terminate_cause( - packet: &Packet, -) -> Option> { - packet - .lookup(ACCT_TERMINATE_CAUSE_TYPE) - .map(|v| Ok(v.encode_u32()? as AcctTerminateCause)) +pub fn lookup_acct_terminate_cause(packet: &Packet) -> Option> { + packet.lookup(ACCT_TERMINATE_CAUSE_TYPE).map(|v| Ok(v.encode_u32()? as AcctTerminateCause)) } -pub fn lookup_all_acct_terminate_cause( - packet: &Packet, -) -> Result, AVPError> { +pub fn lookup_all_acct_terminate_cause(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); for avp in packet.lookup_all(ACCT_TERMINATE_CAUSE_TYPE) { vec.push(avp.encode_u32()? as AcctTerminateCause) @@ -213,9 +198,7 @@ pub fn add_acct_multi_session_id(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(ACCT_MULTI_SESSION_ID_TYPE, value)); } pub fn lookup_acct_multi_session_id(packet: &Packet) -> Option> { - packet - .lookup(ACCT_MULTI_SESSION_ID_TYPE) - .map(|v| v.encode_string()) + packet.lookup(ACCT_MULTI_SESSION_ID_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_acct_multi_session_id(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -249,6 +232,7 @@ 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; @@ -258,6 +242,7 @@ 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; @@ -277,3 +262,4 @@ 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; + diff --git a/radius/src/rfc2867.rs b/radius/src/core/rfc2867.rs similarity index 86% rename from radius/src/rfc2867.rs rename to radius/src/core/rfc2867.rs index f412e72..76512ff 100644 --- a/radius/src/rfc2867.rs +++ b/radius/src/core/rfc2867.rs @@ -1,9 +1,15 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; -use crate::rfc2866; + + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + + + +use crate::core::rfc2866; pub const ACCT_TUNNEL_CONNECTION_TYPE: AVPType = 68; pub fn delete_acct_tunnel_connection(packet: &mut Packet) { @@ -13,9 +19,7 @@ pub fn add_acct_tunnel_connection(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(ACCT_TUNNEL_CONNECTION_TYPE, value)); } pub fn lookup_acct_tunnel_connection(packet: &Packet) -> Option> { - packet - .lookup(ACCT_TUNNEL_CONNECTION_TYPE) - .map(|v| v.encode_string()) + packet.lookup(ACCT_TUNNEL_CONNECTION_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_acct_tunnel_connection(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -33,9 +37,7 @@ pub fn add_acct_tunnel_packets_lost(packet: &mut Packet, value: u32) { packet.add(AVP::from_u32(ACCT_TUNNEL_PACKETS_LOST_TYPE, value)); } pub fn lookup_acct_tunnel_packets_lost(packet: &Packet) -> Option> { - packet - .lookup(ACCT_TUNNEL_PACKETS_LOST_TYPE) - .map(|v| v.encode_u32()) + packet.lookup(ACCT_TUNNEL_PACKETS_LOST_TYPE).map(|v| v.encode_u32()) } pub fn lookup_all_acct_tunnel_packets_lost(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -50,3 +52,4 @@ pub const ACCT_STATUS_TYPE_TUNNEL_REJECT: rfc2866::AcctStatusType = 11; pub const ACCT_STATUS_TYPE_TUNNEL_LINK_START: rfc2866::AcctStatusType = 12; pub const ACCT_STATUS_TYPE_TUNNEL_LINK_STOP: rfc2866::AcctStatusType = 13; pub const ACCT_STATUS_TYPE_TUNNEL_LINK_REJECT: rfc2866::AcctStatusType = 14; + diff --git a/radius/src/rfc2868.rs b/radius/src/core/rfc2868.rs similarity index 65% rename from radius/src/rfc2868.rs rename to radius/src/core/rfc2868.rs index b9bd993..ff18d66 100644 --- a/radius/src/rfc2868.rs +++ b/radius/src/core/rfc2868.rs @@ -1,8 +1,16 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; -use crate::tag::Tag; + + + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; +use crate::core::tag::Tag; + + + + pub const TUNNEL_TYPE_TYPE: AVPType = 64; pub fn delete_tunnel_type(packet: &mut Packet) { @@ -31,23 +39,15 @@ pub fn delete_tunnel_medium_type(packet: &mut Packet) { packet.delete(TUNNEL_MEDIUM_TYPE_TYPE); } pub fn add_tunnel_medium_type(packet: &mut Packet, tag: Option<&Tag>, value: TunnelMediumType) { - packet.add(AVP::from_tagged_u32( - TUNNEL_MEDIUM_TYPE_TYPE, - tag, - value as u32, - )); + packet.add(AVP::from_tagged_u32(TUNNEL_MEDIUM_TYPE_TYPE, tag, value as u32)); } -pub fn lookup_tunnel_medium_type( - packet: &Packet, -) -> Option> { +pub fn lookup_tunnel_medium_type(packet: &Packet) -> Option> { packet.lookup(TUNNEL_MEDIUM_TYPE_TYPE).map(|v| { let (v, t) = v.encode_tagged_u32()?; Ok((v as TunnelMediumType, t)) }) } -pub fn lookup_all_tunnel_medium_type( - packet: &Packet, -) -> Result, AVPError> { +pub fn lookup_all_tunnel_medium_type(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); for avp in packet.lookup_all(TUNNEL_MEDIUM_TYPE_TYPE) { let (v, t) = avp.encode_tagged_u32()?; @@ -61,22 +61,12 @@ pub fn delete_tunnel_client_endpoint(packet: &mut Packet) { packet.delete(TUNNEL_CLIENT_ENDPOINT_TYPE); } pub fn add_tunnel_client_endpoint(packet: &mut Packet, tag: Option<&Tag>, value: &str) { - packet.add(AVP::from_tagged_string( - TUNNEL_CLIENT_ENDPOINT_TYPE, - tag, - value, - )); + packet.add(AVP::from_tagged_string(TUNNEL_CLIENT_ENDPOINT_TYPE, tag, value)); } -pub fn lookup_tunnel_client_endpoint( - packet: &Packet, -) -> Option), AVPError>> { - packet - .lookup(TUNNEL_CLIENT_ENDPOINT_TYPE) - .map(|v| v.encode_tagged_string()) +pub fn lookup_tunnel_client_endpoint(packet: &Packet) -> Option), AVPError>> { + packet.lookup(TUNNEL_CLIENT_ENDPOINT_TYPE).map(|v| v.encode_tagged_string()) } -pub fn lookup_all_tunnel_client_endpoint( - packet: &Packet, -) -> Result)>, AVPError> { +pub fn lookup_all_tunnel_client_endpoint(packet: &Packet) -> Result)>, AVPError> { let mut vec = Vec::new(); for avp in packet.lookup_all(TUNNEL_CLIENT_ENDPOINT_TYPE) { vec.push(avp.encode_tagged_string()?) @@ -89,22 +79,12 @@ pub fn delete_tunnel_server_endpoint(packet: &mut Packet) { packet.delete(TUNNEL_SERVER_ENDPOINT_TYPE); } pub fn add_tunnel_server_endpoint(packet: &mut Packet, tag: Option<&Tag>, value: &str) { - packet.add(AVP::from_tagged_string( - TUNNEL_SERVER_ENDPOINT_TYPE, - tag, - value, - )); + packet.add(AVP::from_tagged_string(TUNNEL_SERVER_ENDPOINT_TYPE, tag, value)); } -pub fn lookup_tunnel_server_endpoint( - packet: &Packet, -) -> Option), AVPError>> { - packet - .lookup(TUNNEL_SERVER_ENDPOINT_TYPE) - .map(|v| v.encode_tagged_string()) +pub fn lookup_tunnel_server_endpoint(packet: &Packet) -> Option), AVPError>> { + packet.lookup(TUNNEL_SERVER_ENDPOINT_TYPE).map(|v| v.encode_tagged_string()) } -pub fn lookup_all_tunnel_server_endpoint( - packet: &Packet, -) -> Result)>, AVPError> { +pub fn lookup_all_tunnel_server_endpoint(packet: &Packet) -> Result)>, AVPError> { let mut vec = Vec::new(); for avp in packet.lookup_all(TUNNEL_SERVER_ENDPOINT_TYPE) { vec.push(avp.encode_tagged_string()?) @@ -116,24 +96,12 @@ pub const TUNNEL_PASSWORD_TYPE: AVPType = 69; pub fn delete_tunnel_password(packet: &mut Packet) { packet.delete(TUNNEL_PASSWORD_TYPE); } -pub fn add_tunnel_password( - packet: &mut Packet, - tag: Option<&Tag>, - value: &[u8], -) -> Result<(), AVPError> { - packet.add(AVP::from_tunnel_password( - TUNNEL_PASSWORD_TYPE, - tag, - value, - packet.get_secret(), - packet.get_authenticator(), - )?); +pub fn add_tunnel_password(packet: &mut Packet, tag: Option<&Tag>, value: &[u8]) -> Result<(), AVPError> { + packet.add(AVP::from_tunnel_password(TUNNEL_PASSWORD_TYPE, tag, value, packet.get_secret(), packet.get_authenticator())?); Ok(()) } pub fn lookup_tunnel_password(packet: &Packet) -> Option, Tag), AVPError>> { - packet - .lookup(TUNNEL_PASSWORD_TYPE) - .map(|v| v.encode_tunnel_password(packet.get_secret(), packet.get_authenticator())) + packet.lookup(TUNNEL_PASSWORD_TYPE).map(|v| v.encode_tunnel_password(packet.get_secret(), packet.get_authenticator())) } pub fn lookup_all_tunnel_password(packet: &Packet) -> Result, Tag)>, AVPError> { let mut vec = Vec::new(); @@ -148,22 +116,12 @@ pub fn delete_tunnel_private_group_id(packet: &mut Packet) { packet.delete(TUNNEL_PRIVATE_GROUP_ID_TYPE); } pub fn add_tunnel_private_group_id(packet: &mut Packet, tag: Option<&Tag>, value: &str) { - packet.add(AVP::from_tagged_string( - TUNNEL_PRIVATE_GROUP_ID_TYPE, - tag, - value, - )); + packet.add(AVP::from_tagged_string(TUNNEL_PRIVATE_GROUP_ID_TYPE, tag, value)); } -pub fn lookup_tunnel_private_group_id( - packet: &Packet, -) -> Option), AVPError>> { - packet - .lookup(TUNNEL_PRIVATE_GROUP_ID_TYPE) - .map(|v| v.encode_tagged_string()) +pub fn lookup_tunnel_private_group_id(packet: &Packet) -> Option), AVPError>> { + packet.lookup(TUNNEL_PRIVATE_GROUP_ID_TYPE).map(|v| v.encode_tagged_string()) } -pub fn lookup_all_tunnel_private_group_id( - packet: &Packet, -) -> Result)>, AVPError> { +pub fn lookup_all_tunnel_private_group_id(packet: &Packet) -> Result)>, AVPError> { let mut vec = Vec::new(); for avp in packet.lookup_all(TUNNEL_PRIVATE_GROUP_ID_TYPE) { vec.push(avp.encode_tagged_string()?) @@ -176,22 +134,12 @@ pub fn delete_tunnel_assignment_id(packet: &mut Packet) { packet.delete(TUNNEL_ASSIGNMENT_ID_TYPE); } pub fn add_tunnel_assignment_id(packet: &mut Packet, tag: Option<&Tag>, value: &str) { - packet.add(AVP::from_tagged_string( - TUNNEL_ASSIGNMENT_ID_TYPE, - tag, - value, - )); + packet.add(AVP::from_tagged_string(TUNNEL_ASSIGNMENT_ID_TYPE, tag, value)); } -pub fn lookup_tunnel_assignment_id( - packet: &Packet, -) -> Option), AVPError>> { - packet - .lookup(TUNNEL_ASSIGNMENT_ID_TYPE) - .map(|v| v.encode_tagged_string()) +pub fn lookup_tunnel_assignment_id(packet: &Packet) -> Option), AVPError>> { + packet.lookup(TUNNEL_ASSIGNMENT_ID_TYPE).map(|v| v.encode_tagged_string()) } -pub fn lookup_all_tunnel_assignment_id( - packet: &Packet, -) -> Result)>, AVPError> { +pub fn lookup_all_tunnel_assignment_id(packet: &Packet) -> Result)>, AVPError> { let mut vec = Vec::new(); for avp in packet.lookup_all(TUNNEL_ASSIGNMENT_ID_TYPE) { vec.push(avp.encode_tagged_string()?) @@ -207,9 +155,7 @@ pub fn add_tunnel_preference(packet: &mut Packet, tag: Option<&Tag>, value: u32) packet.add(AVP::from_tagged_u32(TUNNEL_PREFERENCE_TYPE, tag, value)); } pub fn lookup_tunnel_preference(packet: &Packet) -> Option> { - packet - .lookup(TUNNEL_PREFERENCE_TYPE) - .map(|v| v.encode_tagged_u32()) + packet.lookup(TUNNEL_PREFERENCE_TYPE).map(|v| v.encode_tagged_u32()) } pub fn lookup_all_tunnel_preference(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -224,22 +170,12 @@ pub fn delete_tunnel_client_auth_id(packet: &mut Packet) { packet.delete(TUNNEL_CLIENT_AUTH_ID_TYPE); } pub fn add_tunnel_client_auth_id(packet: &mut Packet, tag: Option<&Tag>, value: &str) { - packet.add(AVP::from_tagged_string( - TUNNEL_CLIENT_AUTH_ID_TYPE, - tag, - value, - )); + packet.add(AVP::from_tagged_string(TUNNEL_CLIENT_AUTH_ID_TYPE, tag, value)); } -pub fn lookup_tunnel_client_auth_id( - packet: &Packet, -) -> Option), AVPError>> { - packet - .lookup(TUNNEL_CLIENT_AUTH_ID_TYPE) - .map(|v| v.encode_tagged_string()) +pub fn lookup_tunnel_client_auth_id(packet: &Packet) -> Option), AVPError>> { + packet.lookup(TUNNEL_CLIENT_AUTH_ID_TYPE).map(|v| v.encode_tagged_string()) } -pub fn lookup_all_tunnel_client_auth_id( - packet: &Packet, -) -> Result)>, AVPError> { +pub fn lookup_all_tunnel_client_auth_id(packet: &Packet) -> Result)>, AVPError> { let mut vec = Vec::new(); for avp in packet.lookup_all(TUNNEL_CLIENT_AUTH_ID_TYPE) { vec.push(avp.encode_tagged_string()?) @@ -252,22 +188,12 @@ pub fn delete_tunnel_server_auth_id(packet: &mut Packet) { packet.delete(TUNNEL_SERVER_AUTH_ID_TYPE); } pub fn add_tunnel_server_auth_id(packet: &mut Packet, tag: Option<&Tag>, value: &str) { - packet.add(AVP::from_tagged_string( - TUNNEL_SERVER_AUTH_ID_TYPE, - tag, - value, - )); + packet.add(AVP::from_tagged_string(TUNNEL_SERVER_AUTH_ID_TYPE, tag, value)); } -pub fn lookup_tunnel_server_auth_id( - packet: &Packet, -) -> Option), AVPError>> { - packet - .lookup(TUNNEL_SERVER_AUTH_ID_TYPE) - .map(|v| v.encode_tagged_string()) +pub fn lookup_tunnel_server_auth_id(packet: &Packet) -> Option), AVPError>> { + packet.lookup(TUNNEL_SERVER_AUTH_ID_TYPE).map(|v| v.encode_tagged_string()) } -pub fn lookup_all_tunnel_server_auth_id( - packet: &Packet, -) -> Result)>, AVPError> { +pub fn lookup_all_tunnel_server_auth_id(packet: &Packet) -> Result)>, AVPError> { let mut vec = Vec::new(); for avp in packet.lookup_all(TUNNEL_SERVER_AUTH_ID_TYPE) { vec.push(avp.encode_tagged_string()?) @@ -293,6 +219,7 @@ pub const TUNNEL_MEDIUM_TYPE_DEC_NET_IV: TunnelMediumType = 13; pub const TUNNEL_MEDIUM_TYPE_BANYAN_VINES: TunnelMediumType = 14; pub const TUNNEL_MEDIUM_TYPE_E_164_NSAP: TunnelMediumType = 15; + pub type TunnelType = u32; pub const TUNNEL_TYPE_PPTP: TunnelType = 1; pub const TUNNEL_TYPE_L2F: TunnelType = 2; @@ -306,3 +233,4 @@ pub const TUNNEL_TYPE_ESP: TunnelType = 9; pub const TUNNEL_TYPE_GRE: TunnelType = 10; pub const TUNNEL_TYPE_DVS: TunnelType = 11; pub const TUNNEL_TYPE_IP_IN_IP: TunnelType = 12; + diff --git a/radius/src/rfc2869.rs b/radius/src/core/rfc2869.rs similarity index 90% rename from radius/src/rfc2869.rs rename to radius/src/core/rfc2869.rs index 1fd9e2a..ba9df9c 100644 --- a/radius/src/rfc2869.rs +++ b/radius/src/core/rfc2869.rs @@ -1,9 +1,17 @@ // Code generated by machine generator; DO NOT EDIT. + + use chrono::{DateTime, Utc}; -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + + + + + + pub const ACCT_INPUT_GIGAWORDS_TYPE: AVPType = 52; pub fn delete_acct_input_gigawords(packet: &mut Packet) { @@ -13,9 +21,7 @@ pub fn add_acct_input_gigawords(packet: &mut Packet, value: u32) { packet.add(AVP::from_u32(ACCT_INPUT_GIGAWORDS_TYPE, value)); } pub fn lookup_acct_input_gigawords(packet: &Packet) -> Option> { - packet - .lookup(ACCT_INPUT_GIGAWORDS_TYPE) - .map(|v| v.encode_u32()) + packet.lookup(ACCT_INPUT_GIGAWORDS_TYPE).map(|v| v.encode_u32()) } pub fn lookup_all_acct_input_gigawords(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -33,9 +39,7 @@ pub fn add_acct_output_gigawords(packet: &mut Packet, value: u32) { packet.add(AVP::from_u32(ACCT_OUTPUT_GIGAWORDS_TYPE, value)); } pub fn lookup_acct_output_gigawords(packet: &Packet) -> Option> { - packet - .lookup(ACCT_OUTPUT_GIGAWORDS_TYPE) - .map(|v| v.encode_u32()) + packet.lookup(ACCT_OUTPUT_GIGAWORDS_TYPE).map(|v| v.encode_u32()) } pub fn lookup_all_acct_output_gigawords(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -69,10 +73,7 @@ pub fn delete_arap_password(packet: &mut Packet) { } pub fn add_arap_password(packet: &mut Packet, value: &[u8]) -> Result<(), AVPError> { if value.len() != 16 { - return Err(AVPError::InvalidAttributeLengthError( - "16 bytes".to_owned(), - value.len(), - )); + return Err(AVPError::InvalidAttributeLengthError("16 bytes".to_owned(), value.len())); } packet.add(AVP::from_bytes(ARAP_PASSWORD_TYPE, value)); Ok(()) @@ -94,10 +95,7 @@ pub fn delete_arap_features(packet: &mut Packet) { } pub fn add_arap_features(packet: &mut Packet, value: &[u8]) -> Result<(), AVPError> { if value.len() != 14 { - return Err(AVPError::InvalidAttributeLengthError( - "14 bytes".to_owned(), - value.len(), - )); + return Err(AVPError::InvalidAttributeLengthError("14 bytes".to_owned(), value.len())); } packet.add(AVP::from_bytes(ARAP_FEATURES_TYPE, value)); Ok(()) @@ -121,9 +119,7 @@ pub fn add_arap_zone_access(packet: &mut Packet, value: ArapZoneAccess) { packet.add(AVP::from_u32(ARAP_ZONE_ACCESS_TYPE, value as u32)); } pub fn lookup_arap_zone_access(packet: &Packet) -> Option> { - packet - .lookup(ARAP_ZONE_ACCESS_TYPE) - .map(|v| Ok(v.encode_u32()? as ArapZoneAccess)) + packet.lookup(ARAP_ZONE_ACCESS_TYPE).map(|v| Ok(v.encode_u32()? as ArapZoneAccess)) } pub fn lookup_all_arap_zone_access(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -159,9 +155,7 @@ pub fn add_arap_security_data(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(ARAP_SECURITY_DATA_TYPE, value)); } pub fn lookup_arap_security_data(packet: &Packet) -> Option> { - packet - .lookup(ARAP_SECURITY_DATA_TYPE) - .map(|v| v.encode_string()) + packet.lookup(ARAP_SECURITY_DATA_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_arap_security_data(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -197,9 +191,7 @@ pub fn add_prompt(packet: &mut Packet, value: Prompt) { packet.add(AVP::from_u32(PROMPT_TYPE, value as u32)); } pub fn lookup_prompt(packet: &Packet) -> Option> { - packet - .lookup(PROMPT_TYPE) - .map(|v| Ok(v.encode_u32()? as Prompt)) + packet.lookup(PROMPT_TYPE).map(|v| Ok(v.encode_u32()? as Prompt)) } pub fn lookup_all_prompt(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -235,9 +227,7 @@ pub fn add_configuration_token(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(CONFIGURATION_TOKEN_TYPE, value)); } pub fn lookup_configuration_token(packet: &Packet) -> Option> { - packet - .lookup(CONFIGURATION_TOKEN_TYPE) - .map(|v| v.encode_string()) + packet.lookup(CONFIGURATION_TOKEN_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_configuration_token(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -278,9 +268,7 @@ pub fn add_message_authenticator(packet: &mut Packet, value: &[u8]) { packet.add(AVP::from_bytes(MESSAGE_AUTHENTICATOR_TYPE, value)); } pub fn lookup_message_authenticator(packet: &Packet) -> Option> { - packet - .lookup(MESSAGE_AUTHENTICATOR_TYPE) - .map(|v| v.encode_bytes()) + packet.lookup(MESSAGE_AUTHENTICATOR_TYPE).map(|v| v.encode_bytes()) } pub fn lookup_all_message_authenticator(packet: &Packet) -> Vec> { let mut vec = Vec::new(); @@ -296,18 +284,13 @@ pub fn delete_arap_challenge_response(packet: &mut Packet) { } pub fn add_arap_challenge_response(packet: &mut Packet, value: &[u8]) -> Result<(), AVPError> { if value.len() != 8 { - return Err(AVPError::InvalidAttributeLengthError( - "8 bytes".to_owned(), - value.len(), - )); + return Err(AVPError::InvalidAttributeLengthError("8 bytes".to_owned(), value.len())); } packet.add(AVP::from_bytes(ARAP_CHALLENGE_RESPONSE_TYPE, value)); Ok(()) } pub fn lookup_arap_challenge_response(packet: &Packet) -> Option> { - packet - .lookup(ARAP_CHALLENGE_RESPONSE_TYPE) - .map(|v| v.encode_bytes()) + packet.lookup(ARAP_CHALLENGE_RESPONSE_TYPE).map(|v| v.encode_bytes()) } pub fn lookup_all_arap_challenge_response(packet: &Packet) -> Vec> { let mut vec = Vec::new(); @@ -325,9 +308,7 @@ pub fn add_acct_interim_interval(packet: &mut Packet, value: u32) { packet.add(AVP::from_u32(ACCT_INTERIM_INTERVAL_TYPE, value)); } pub fn lookup_acct_interim_interval(packet: &Packet) -> Option> { - packet - .lookup(ACCT_INTERIM_INTERVAL_TYPE) - .map(|v| v.encode_u32()) + packet.lookup(ACCT_INTERIM_INTERVAL_TYPE).map(|v| v.encode_u32()) } pub fn lookup_all_acct_interim_interval(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -378,6 +359,8 @@ pub const ARAP_ZONE_ACCESS_DEFAULT_ZONE: ArapZoneAccess = 1; pub const ARAP_ZONE_ACCESS_ZONE_FILTER_INCLUSIVE: ArapZoneAccess = 2; pub const ARAP_ZONE_ACCESS_ZONE_FILTER_EXCLUSIVE: ArapZoneAccess = 4; + pub type Prompt = u32; pub const PROMPT_NO_ECHO: Prompt = 0; pub const PROMPT_ECHO: Prompt = 1; + diff --git a/radius/src/rfc3162.rs b/radius/src/core/rfc3162.rs similarity index 85% rename from radius/src/rfc3162.rs rename to radius/src/core/rfc3162.rs index abedfb3..766985e 100644 --- a/radius/src/rfc3162.rs +++ b/radius/src/core/rfc3162.rs @@ -1,9 +1,18 @@ // Code generated by machine generator; DO NOT EDIT. -use std::net::Ipv6Addr; +use std::net::{Ipv6Addr}; + + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + + + + + + -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; pub const NAS_IPV6_ADDRESS_TYPE: AVPType = 95; pub fn delete_nas_ipv6_address(packet: &mut Packet) { @@ -13,9 +22,7 @@ pub fn add_nas_ipv6_address(packet: &mut Packet, value: &Ipv6Addr) { packet.add(AVP::from_ipv6(NAS_IPV6_ADDRESS_TYPE, value)); } pub fn lookup_nas_ipv6_address(packet: &Packet) -> Option> { - packet - .lookup(NAS_IPV6_ADDRESS_TYPE) - .map(|v| v.encode_ipv6()) + packet.lookup(NAS_IPV6_ADDRESS_TYPE).map(|v| v.encode_ipv6()) } pub fn lookup_all_nas_ipv6_address(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -31,18 +38,13 @@ pub fn delete_framed_interface_id(packet: &mut Packet) { } pub fn add_framed_interface_id(packet: &mut Packet, value: &[u8]) -> Result<(), AVPError> { if value.len() != 8 { - return Err(AVPError::InvalidAttributeLengthError( - "8 bytes".to_owned(), - value.len(), - )); + return Err(AVPError::InvalidAttributeLengthError("8 bytes".to_owned(), value.len())); } packet.add(AVP::from_bytes(FRAMED_INTERFACE_ID_TYPE, value)); Ok(()) } pub fn lookup_framed_interface_id(packet: &Packet) -> Option> { - packet - .lookup(FRAMED_INTERFACE_ID_TYPE) - .map(|v| v.encode_bytes()) + packet.lookup(FRAMED_INTERFACE_ID_TYPE).map(|v| v.encode_bytes()) } pub fn lookup_all_framed_interface_id(packet: &Packet) -> Vec> { let mut vec = Vec::new(); @@ -61,9 +63,7 @@ pub fn add_framed_ipv6_prefix(packet: &mut Packet, value: &[u8]) -> Result<(), A Ok(()) } pub fn lookup_framed_ipv6_prefix(packet: &Packet) -> Option, AVPError>> { - packet - .lookup(FRAMED_IPV6_PREFIX_TYPE) - .map(|v| v.encode_ipv6_prefix()) + packet.lookup(FRAMED_IPV6_PREFIX_TYPE).map(|v| v.encode_ipv6_prefix()) } pub fn lookup_all_framed_ipv6_prefix(packet: &Packet) -> Result>, AVPError> { let mut vec = Vec::new(); @@ -99,9 +99,7 @@ pub fn add_framed_ipv6_route(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(FRAMED_IPV6_ROUTE_TYPE, value)); } pub fn lookup_framed_ipv6_route(packet: &Packet) -> Option> { - packet - .lookup(FRAMED_IPV6_ROUTE_TYPE) - .map(|v| v.encode_string()) + packet.lookup(FRAMED_IPV6_ROUTE_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_framed_ipv6_route(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -119,9 +117,7 @@ pub fn add_framed_ipv6_pool(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(FRAMED_IPV6_POOL_TYPE, value)); } pub fn lookup_framed_ipv6_pool(packet: &Packet) -> Option> { - packet - .lookup(FRAMED_IPV6_POOL_TYPE) - .map(|v| v.encode_string()) + packet.lookup(FRAMED_IPV6_POOL_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_framed_ipv6_pool(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); diff --git a/radius/src/rfc3576.rs b/radius/src/core/rfc3576.rs similarity index 89% rename from radius/src/rfc3576.rs rename to radius/src/core/rfc3576.rs index 049a1ac..83c630d 100644 --- a/radius/src/rfc3576.rs +++ b/radius/src/core/rfc3576.rs @@ -1,9 +1,19 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; -use crate::rfc2865; + + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + + +use crate::core::rfc2865; + + + + + pub const ERROR_CAUSE_TYPE: AVPType = 101; pub fn delete_error_cause(packet: &mut Packet) { @@ -13,9 +23,7 @@ pub fn add_error_cause(packet: &mut Packet, value: ErrorCause) { packet.add(AVP::from_u32(ERROR_CAUSE_TYPE, value as u32)); } pub fn lookup_error_cause(packet: &Packet) -> Option> { - packet - .lookup(ERROR_CAUSE_TYPE) - .map(|v| Ok(v.encode_u32()? as ErrorCause)) + packet.lookup(ERROR_CAUSE_TYPE).map(|v| Ok(v.encode_u32()? as ErrorCause)) } pub fn lookup_all_error_cause(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -43,3 +51,4 @@ pub const ERROR_CAUSE_RESOURCES_UNAVAILABLE: ErrorCause = 506; pub const ERROR_CAUSE_REQUEST_INITIATED: ErrorCause = 507; pub const SERVICE_TYPE_AUTHORIZE_ONLY: rfc2865::ServiceType = 17; + diff --git a/radius/src/rfc3580.rs b/radius/src/core/rfc3580.rs similarity index 86% rename from radius/src/rfc3580.rs rename to radius/src/core/rfc3580.rs index 2aa258d..6bc306e 100644 --- a/radius/src/rfc3580.rs +++ b/radius/src/core/rfc3580.rs @@ -1,9 +1,19 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::rfc2865; -use crate::rfc2866; -use crate::rfc2868; + + + + + + + +use crate::core::rfc2865; +use crate::core::rfc2866; + +use crate::core::rfc2868; + + pub const ACCT_TERMINATE_CAUSE_SUPPLICANT_RESTART: rfc2866::AcctTerminateCause = 19; pub const ACCT_TERMINATE_CAUSE_REAUTHENTICATION_FAILURE: rfc2866::AcctTerminateCause = 20; @@ -14,3 +24,4 @@ pub const NAS_PORT_TYPE_TOKEN_RING: rfc2865::NasPortType = 20; pub const NAS_PORT_TYPE_FDDI: rfc2865::NasPortType = 21; pub const TUNNEL_TYPE_VLAN: rfc2868::TunnelType = 13; + diff --git a/radius/src/rfc4072.rs b/radius/src/core/rfc4072.rs similarity index 88% rename from radius/src/rfc4072.rs rename to radius/src/core/rfc4072.rs index d5af4b0..c476e25 100644 --- a/radius/src/rfc4072.rs +++ b/radius/src/core/rfc4072.rs @@ -1,7 +1,21 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::avp::{AVPType, AVP}; -use crate::packet::Packet; + + + + +use crate::core::avp::{AVP, AVPType}; +use crate::core::packet::Packet; + + + + + + + + + + pub const EAP_KEY_NAME_TYPE: AVPType = 102; pub fn delete_eap_key_name(packet: &mut Packet) { diff --git a/radius/src/rfc4372.rs b/radius/src/core/rfc4372.rs similarity index 80% rename from radius/src/rfc4372.rs rename to radius/src/core/rfc4372.rs index 2e886a3..74a3b5a 100644 --- a/radius/src/rfc4372.rs +++ b/radius/src/core/rfc4372.rs @@ -1,7 +1,22 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::avp::{AVPType, AVP}; -use crate::packet::Packet; + + + + +use crate::core::avp::{AVP, AVPType}; +use crate::core::packet::Packet; + + + + + + + + + + + pub const CHARGEABLE_USER_IDENTITY_TYPE: AVPType = 89; pub fn delete_chargeable_user_identity(packet: &mut Packet) { @@ -11,9 +26,7 @@ pub fn add_chargeable_user_identity(packet: &mut Packet, value: &[u8]) { packet.add(AVP::from_bytes(CHARGEABLE_USER_IDENTITY_TYPE, value)); } pub fn lookup_chargeable_user_identity(packet: &Packet) -> Option> { - packet - .lookup(CHARGEABLE_USER_IDENTITY_TYPE) - .map(|v| v.encode_bytes()) + packet.lookup(CHARGEABLE_USER_IDENTITY_TYPE).map(|v| v.encode_bytes()) } pub fn lookup_all_chargeable_user_identity(packet: &Packet) -> Vec> { let mut vec = Vec::new(); diff --git a/radius/src/rfc4603.rs b/radius/src/core/rfc4603.rs similarity index 89% rename from radius/src/rfc4603.rs rename to radius/src/core/rfc4603.rs index 90f1bea..9cb0403 100644 --- a/radius/src/rfc4603.rs +++ b/radius/src/core/rfc4603.rs @@ -1,9 +1,26 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::rfc2865; + + + + + + + + +use crate::core::rfc2865; + + + + + + + + pub const NAS_PORT_TYPE_PP_PO_A: rfc2865::NasPortType = 30; pub const NAS_PORT_TYPE_PP_PO_EO_A: rfc2865::NasPortType = 31; pub const NAS_PORT_TYPE_PP_PO_EO_E: rfc2865::NasPortType = 32; pub const NAS_PORT_TYPE_PP_PO_EO_VLAN: rfc2865::NasPortType = 33; pub const NAS_PORT_TYPE_PP_PO_EO_QIN_Q: rfc2865::NasPortType = 34; + diff --git a/radius/src/rfc4675.rs b/radius/src/core/rfc4675.rs similarity index 88% rename from radius/src/rfc4675.rs rename to radius/src/core/rfc4675.rs index 0b79816..4f5e83b 100644 --- a/radius/src/rfc4675.rs +++ b/radius/src/core/rfc4675.rs @@ -1,7 +1,24 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; + + + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + + + + + + + + + + + + + pub const EGRESS_VLANID_TYPE: AVPType = 56; pub fn delete_egress_vlanid(packet: &mut Packet) { @@ -29,9 +46,7 @@ pub fn add_ingress_filters(packet: &mut Packet, value: IngressFilters) { packet.add(AVP::from_u32(INGRESS_FILTERS_TYPE, value as u32)); } pub fn lookup_ingress_filters(packet: &Packet) -> Option> { - packet - .lookup(INGRESS_FILTERS_TYPE) - .map(|v| Ok(v.encode_u32()? as IngressFilters)) + packet.lookup(INGRESS_FILTERS_TYPE).map(|v| Ok(v.encode_u32()? as IngressFilters)) } pub fn lookup_all_ingress_filters(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -49,9 +64,7 @@ pub fn add_egress_vlan_name(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(EGRESS_VLAN_NAME_TYPE, value)); } pub fn lookup_egress_vlan_name(packet: &Packet) -> Option> { - packet - .lookup(EGRESS_VLAN_NAME_TYPE) - .map(|v| v.encode_string()) + packet.lookup(EGRESS_VLAN_NAME_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_egress_vlan_name(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -69,9 +82,7 @@ pub fn add_user_priority_table(packet: &mut Packet, value: &[u8]) { packet.add(AVP::from_bytes(USER_PRIORITY_TABLE_TYPE, value)); } pub fn lookup_user_priority_table(packet: &Packet) -> Option> { - packet - .lookup(USER_PRIORITY_TABLE_TYPE) - .map(|v| v.encode_bytes()) + packet.lookup(USER_PRIORITY_TABLE_TYPE).map(|v| v.encode_bytes()) } pub fn lookup_all_user_priority_table(packet: &Packet) -> Vec> { let mut vec = Vec::new(); @@ -84,3 +95,4 @@ pub fn lookup_all_user_priority_table(packet: &Packet) -> Vec> { pub type IngressFilters = u32; pub const INGRESS_FILTERS_ENABLED: IngressFilters = 1; pub const INGRESS_FILTERS_DISABLED: IngressFilters = 2; + diff --git a/radius/src/rfc4818.rs b/radius/src/core/rfc4818.rs similarity index 80% rename from radius/src/rfc4818.rs rename to radius/src/core/rfc4818.rs index bb5d6f5..3e3e8c7 100644 --- a/radius/src/rfc4818.rs +++ b/radius/src/core/rfc4818.rs @@ -1,7 +1,25 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; + + + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + + + + + + + + + + + + + + pub const DELEGATED_IPV6_PREFIX_TYPE: AVPType = 123; pub fn delete_delegated_ipv6_prefix(packet: &mut Packet) { @@ -12,9 +30,7 @@ pub fn add_delegated_ipv6_prefix(packet: &mut Packet, value: &[u8]) -> Result<() Ok(()) } pub fn lookup_delegated_ipv6_prefix(packet: &Packet) -> Option, AVPError>> { - packet - .lookup(DELEGATED_IPV6_PREFIX_TYPE) - .map(|v| v.encode_ipv6_prefix()) + packet.lookup(DELEGATED_IPV6_PREFIX_TYPE).map(|v| v.encode_ipv6_prefix()) } pub fn lookup_all_delegated_ipv6_prefix(packet: &Packet) -> Result>, AVPError> { let mut vec = Vec::new(); diff --git a/radius/src/rfc4849.rs b/radius/src/core/rfc4849.rs similarity index 79% rename from radius/src/rfc4849.rs rename to radius/src/core/rfc4849.rs index eb8f2a0..b213084 100644 --- a/radius/src/rfc4849.rs +++ b/radius/src/core/rfc4849.rs @@ -1,7 +1,26 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; + + + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + + + + + + + + + + + + + + + pub const NAS_FILTER_RULE_TYPE: AVPType = 92; pub fn delete_nas_filter_rule(packet: &mut Packet) { @@ -11,9 +30,7 @@ pub fn add_nas_filter_rule(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(NAS_FILTER_RULE_TYPE, value)); } pub fn lookup_nas_filter_rule(packet: &Packet) -> Option> { - packet - .lookup(NAS_FILTER_RULE_TYPE) - .map(|v| v.encode_string()) + packet.lookup(NAS_FILTER_RULE_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_nas_filter_rule(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); diff --git a/radius/src/rfc5090.rs b/radius/src/core/rfc5090.rs similarity index 92% rename from radius/src/rfc5090.rs rename to radius/src/core/rfc5090.rs index 5389d89..7bc78d8 100644 --- a/radius/src/rfc5090.rs +++ b/radius/src/core/rfc5090.rs @@ -1,7 +1,27 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; + + + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + + + + + + + + + + + + + + + + pub const DIGEST_RESPONSE_TYPE: AVPType = 103; pub fn delete_digest_response(packet: &mut Packet) { @@ -11,9 +31,7 @@ pub fn add_digest_response(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(DIGEST_RESPONSE_TYPE, value)); } pub fn lookup_digest_response(packet: &Packet) -> Option> { - packet - .lookup(DIGEST_RESPONSE_TYPE) - .map(|v| v.encode_string()) + packet.lookup(DIGEST_RESPONSE_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_digest_response(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -67,9 +85,7 @@ pub fn add_digest_response_auth(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(DIGEST_RESPONSE_AUTH_TYPE, value)); } pub fn lookup_digest_response_auth(packet: &Packet) -> Option> { - packet - .lookup(DIGEST_RESPONSE_AUTH_TYPE) - .map(|v| v.encode_string()) + packet.lookup(DIGEST_RESPONSE_AUTH_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_digest_response_auth(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -87,9 +103,7 @@ pub fn add_digest_nextnonce(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(DIGEST_NEXTNONCE_TYPE, value)); } pub fn lookup_digest_nextnonce(packet: &Packet) -> Option> { - packet - .lookup(DIGEST_NEXTNONCE_TYPE) - .map(|v| v.encode_string()) + packet.lookup(DIGEST_NEXTNONCE_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_digest_nextnonce(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -161,9 +175,7 @@ pub fn add_digest_algorithm(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(DIGEST_ALGORITHM_TYPE, value)); } pub fn lookup_digest_algorithm(packet: &Packet) -> Option> { - packet - .lookup(DIGEST_ALGORITHM_TYPE) - .map(|v| v.encode_string()) + packet.lookup(DIGEST_ALGORITHM_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_digest_algorithm(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -181,9 +193,7 @@ pub fn add_digest_entity_body_hash(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(DIGEST_ENTITY_BODY_HASH_TYPE, value)); } pub fn lookup_digest_entity_body_hash(packet: &Packet) -> Option> { - packet - .lookup(DIGEST_ENTITY_BODY_HASH_TYPE) - .map(|v| v.encode_string()) + packet.lookup(DIGEST_ENTITY_BODY_HASH_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_digest_entity_body_hash(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -201,9 +211,7 @@ pub fn add_digest_c_nonce(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(DIGEST_C_NONCE_TYPE, value)); } pub fn lookup_digest_c_nonce(packet: &Packet) -> Option> { - packet - .lookup(DIGEST_C_NONCE_TYPE) - .map(|v| v.encode_string()) + packet.lookup(DIGEST_C_NONCE_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_digest_c_nonce(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -221,9 +229,7 @@ pub fn add_digest_nonce_count(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(DIGEST_NONCE_COUNT_TYPE, value)); } pub fn lookup_digest_nonce_count(packet: &Packet) -> Option> { - packet - .lookup(DIGEST_NONCE_COUNT_TYPE) - .map(|v| v.encode_string()) + packet.lookup(DIGEST_NONCE_COUNT_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_digest_nonce_count(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -241,9 +247,7 @@ pub fn add_digest_username(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(DIGEST_USERNAME_TYPE, value)); } pub fn lookup_digest_username(packet: &Packet) -> Option> { - packet - .lookup(DIGEST_USERNAME_TYPE) - .map(|v| v.encode_string()) + packet.lookup(DIGEST_USERNAME_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_digest_username(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -279,9 +283,7 @@ pub fn add_digest_auth_param(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(DIGEST_AUTH_PARAM_TYPE, value)); } pub fn lookup_digest_auth_param(packet: &Packet) -> Option> { - packet - .lookup(DIGEST_AUTH_PARAM_TYPE) - .map(|v| v.encode_string()) + packet.lookup(DIGEST_AUTH_PARAM_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_digest_auth_param(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -299,9 +301,7 @@ pub fn add_digest_aka_auts(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(DIGEST_AKA_AUTS_TYPE, value)); } pub fn lookup_digest_aka_auts(packet: &Packet) -> Option> { - packet - .lookup(DIGEST_AKA_AUTS_TYPE) - .map(|v| v.encode_string()) + packet.lookup(DIGEST_AKA_AUTS_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_digest_aka_auts(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); diff --git a/radius/src/rfc5176.rs b/radius/src/core/rfc5176.rs similarity index 81% rename from radius/src/rfc5176.rs rename to radius/src/core/rfc5176.rs index 0bfcb64..461b69d 100644 --- a/radius/src/rfc5176.rs +++ b/radius/src/core/rfc5176.rs @@ -1,6 +1,28 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::rfc3576; + + + + + + + + + + + + + + +use crate::core::rfc3576; + + + + + + + pub const ERROR_CAUSE_INVALID_ATTRIBUTE_VALUE: rfc3576::ErrorCause = 407; pub const ERROR_CAUSE_MULTIPLE_SESSION_SELECTION_UNSUPPORTED: rfc3576::ErrorCause = 508; + diff --git a/radius/src/rfc5607.rs b/radius/src/core/rfc5607.rs similarity index 75% rename from radius/src/rfc5607.rs rename to radius/src/core/rfc5607.rs index 0b9fd4b..befd51e 100644 --- a/radius/src/rfc5607.rs +++ b/radius/src/core/rfc5607.rs @@ -1,9 +1,29 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; -use crate::rfc2865; + + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + + +use crate::core::rfc2865; + + + + + + + + + + + + + + + pub const FRAMED_MANAGEMENT_TYPE: AVPType = 133; pub fn delete_framed_management(packet: &mut Packet) { @@ -13,9 +33,7 @@ pub fn add_framed_management(packet: &mut Packet, value: FramedManagement) { packet.add(AVP::from_u32(FRAMED_MANAGEMENT_TYPE, value as u32)); } pub fn lookup_framed_management(packet: &Packet) -> Option> { - packet - .lookup(FRAMED_MANAGEMENT_TYPE) - .map(|v| Ok(v.encode_u32()? as FramedManagement)) + packet.lookup(FRAMED_MANAGEMENT_TYPE).map(|v| Ok(v.encode_u32()? as FramedManagement)) } pub fn lookup_all_framed_management(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -29,25 +47,13 @@ pub const MANAGEMENT_TRANSPORT_PROTECTION_TYPE: AVPType = 134; pub fn delete_management_transport_protection(packet: &mut Packet) { packet.delete(MANAGEMENT_TRANSPORT_PROTECTION_TYPE); } -pub fn add_management_transport_protection( - packet: &mut Packet, - value: ManagementTransportProtection, -) { - packet.add(AVP::from_u32( - MANAGEMENT_TRANSPORT_PROTECTION_TYPE, - value as u32, - )); +pub fn add_management_transport_protection(packet: &mut Packet, value: ManagementTransportProtection) { + packet.add(AVP::from_u32(MANAGEMENT_TRANSPORT_PROTECTION_TYPE, value as u32)); } -pub fn lookup_management_transport_protection( - packet: &Packet, -) -> Option> { - packet - .lookup(MANAGEMENT_TRANSPORT_PROTECTION_TYPE) - .map(|v| Ok(v.encode_u32()? as ManagementTransportProtection)) +pub fn lookup_management_transport_protection(packet: &Packet) -> Option> { + packet.lookup(MANAGEMENT_TRANSPORT_PROTECTION_TYPE).map(|v| Ok(v.encode_u32()? as ManagementTransportProtection)) } -pub fn lookup_all_management_transport_protection( - packet: &Packet, -) -> Result, AVPError> { +pub fn lookup_all_management_transport_protection(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); for avp in packet.lookup_all(MANAGEMENT_TRANSPORT_PROTECTION_TYPE) { vec.push(avp.encode_u32()? as ManagementTransportProtection) @@ -63,9 +69,7 @@ pub fn add_management_policy_id(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(MANAGEMENT_POLICY_ID_TYPE, value)); } pub fn lookup_management_policy_id(packet: &Packet) -> Option> { - packet - .lookup(MANAGEMENT_POLICY_ID_TYPE) - .map(|v| v.encode_string()) + packet.lookup(MANAGEMENT_POLICY_ID_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_management_policy_id(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -83,9 +87,7 @@ pub fn add_management_privilege_level(packet: &mut Packet, value: u32) { packet.add(AVP::from_u32(MANAGEMENT_PRIVILEGE_LEVEL_TYPE, value)); } pub fn lookup_management_privilege_level(packet: &Packet) -> Option> { - packet - .lookup(MANAGEMENT_PRIVILEGE_LEVEL_TYPE) - .map(|v| v.encode_u32()) + packet.lookup(MANAGEMENT_PRIVILEGE_LEVEL_TYPE).map(|v| v.encode_u32()) } pub fn lookup_all_management_privilege_level(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -105,10 +107,11 @@ pub const FRAMED_MANAGEMENT_SFTP: FramedManagement = 6; pub const FRAMED_MANAGEMENT_RCP: FramedManagement = 7; pub const FRAMED_MANAGEMENT_SCP: FramedManagement = 8; + pub type ManagementTransportProtection = u32; pub const MANAGEMENT_TRANSPORT_PROTECTION_NO_PROTECTION: ManagementTransportProtection = 1; pub const MANAGEMENT_TRANSPORT_PROTECTION_INTEGRITY_PROTECTION: ManagementTransportProtection = 2; -pub const MANAGEMENT_TRANSPORT_PROTECTION_INTEGRITY_CONFIDENTIALITY_PROTECTION: - ManagementTransportProtection = 3; +pub const MANAGEMENT_TRANSPORT_PROTECTION_INTEGRITY_CONFIDENTIALITY_PROTECTION: ManagementTransportProtection = 3; pub const SERVICE_TYPE_FRAMED_MANAGEMENT: rfc2865::ServiceType = 18; + diff --git a/radius/src/rfc5904.rs b/radius/src/core/rfc5904.rs similarity index 92% rename from radius/src/rfc5904.rs rename to radius/src/core/rfc5904.rs index d70ab5e..d306eb9 100644 --- a/radius/src/rfc5904.rs +++ b/radius/src/core/rfc5904.rs @@ -1,7 +1,30 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; + + + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + + + + + + + + + + + + + + + + + + + pub const PKM_SS_CERT_TYPE: AVPType = 137; pub fn delete_pkm_ss_cert(packet: &mut Packet) { @@ -57,9 +80,7 @@ pub fn add_pkm_config_settings(packet: &mut Packet, value: &[u8]) { packet.add(AVP::from_bytes(PKM_CONFIG_SETTINGS_TYPE, value)); } pub fn lookup_pkm_config_settings(packet: &Packet) -> Option> { - packet - .lookup(PKM_CONFIG_SETTINGS_TYPE) - .map(|v| v.encode_bytes()) + packet.lookup(PKM_CONFIG_SETTINGS_TYPE).map(|v| v.encode_bytes()) } pub fn lookup_all_pkm_config_settings(packet: &Packet) -> Vec> { let mut vec = Vec::new(); @@ -77,9 +98,7 @@ pub fn add_pkm_cryptosuite_list(packet: &mut Packet, value: &[u8]) { packet.add(AVP::from_bytes(PKM_CRYPTOSUITE_LIST_TYPE, value)); } pub fn lookup_pkm_cryptosuite_list(packet: &Packet) -> Option> { - packet - .lookup(PKM_CRYPTOSUITE_LIST_TYPE) - .map(|v| v.encode_bytes()) + packet.lookup(PKM_CRYPTOSUITE_LIST_TYPE).map(|v| v.encode_bytes()) } pub fn lookup_all_pkm_cryptosuite_list(packet: &Packet) -> Vec> { let mut vec = Vec::new(); @@ -115,9 +134,7 @@ pub fn add_pkm_sa_descriptor(packet: &mut Packet, value: &[u8]) { packet.add(AVP::from_bytes(PKM_SA_DESCRIPTOR_TYPE, value)); } pub fn lookup_pkm_sa_descriptor(packet: &Packet) -> Option> { - packet - .lookup(PKM_SA_DESCRIPTOR_TYPE) - .map(|v| v.encode_bytes()) + packet.lookup(PKM_SA_DESCRIPTOR_TYPE).map(|v| v.encode_bytes()) } pub fn lookup_all_pkm_sa_descriptor(packet: &Packet) -> Vec> { let mut vec = Vec::new(); diff --git a/radius/src/rfc6519.rs b/radius/src/core/rfc6519.rs similarity index 79% rename from radius/src/rfc6519.rs rename to radius/src/core/rfc6519.rs index 8db9286..9c4805f 100644 --- a/radius/src/rfc6519.rs +++ b/radius/src/core/rfc6519.rs @@ -1,7 +1,31 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; + + + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + + + + + + + + + + + + + + + + + + + + pub const DS_LITE_TUNNEL_NAME_TYPE: AVPType = 144; pub fn delete_ds_lite_tunnel_name(packet: &mut Packet) { @@ -11,9 +35,7 @@ pub fn add_ds_lite_tunnel_name(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(DS_LITE_TUNNEL_NAME_TYPE, value)); } pub fn lookup_ds_lite_tunnel_name(packet: &Packet) -> Option> { - packet - .lookup(DS_LITE_TUNNEL_NAME_TYPE) - .map(|v| v.encode_string()) + packet.lookup(DS_LITE_TUNNEL_NAME_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_ds_lite_tunnel_name(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); diff --git a/radius/src/rfc6572.rs b/radius/src/core/rfc6572.rs similarity index 76% rename from radius/src/rfc6572.rs rename to radius/src/core/rfc6572.rs index 957927c..637eefc 100644 --- a/radius/src/rfc6572.rs +++ b/radius/src/core/rfc6572.rs @@ -2,8 +2,31 @@ use std::net::{Ipv4Addr, Ipv6Addr}; -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + + + + + + + + + + + + + + + + + + + + + pub const MOBILE_NODE_IDENTIFIER_TYPE: AVPType = 145; pub fn delete_mobile_node_identifier(packet: &mut Packet) { @@ -13,9 +36,7 @@ pub fn add_mobile_node_identifier(packet: &mut Packet, value: &[u8]) { packet.add(AVP::from_bytes(MOBILE_NODE_IDENTIFIER_TYPE, value)); } pub fn lookup_mobile_node_identifier(packet: &Packet) -> Option> { - packet - .lookup(MOBILE_NODE_IDENTIFIER_TYPE) - .map(|v| v.encode_bytes()) + packet.lookup(MOBILE_NODE_IDENTIFIER_TYPE).map(|v| v.encode_bytes()) } pub fn lookup_all_mobile_node_identifier(packet: &Packet) -> Vec> { let mut vec = Vec::new(); @@ -33,9 +54,7 @@ pub fn add_service_selection(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(SERVICE_SELECTION_TYPE, value)); } pub fn lookup_service_selection(packet: &Packet) -> Option> { - packet - .lookup(SERVICE_SELECTION_TYPE) - .map(|v| v.encode_string()) + packet.lookup(SERVICE_SELECTION_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_service_selection(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -53,9 +72,7 @@ pub fn add_pmip6_home_lma_ipv6_address(packet: &mut Packet, value: &Ipv6Addr) { packet.add(AVP::from_ipv6(PMIP6_HOME_LMA_IPV6_ADDRESS_TYPE, value)); } pub fn lookup_pmip6_home_lma_ipv6_address(packet: &Packet) -> Option> { - packet - .lookup(PMIP6_HOME_LMA_IPV6_ADDRESS_TYPE) - .map(|v| v.encode_ipv6()) + packet.lookup(PMIP6_HOME_LMA_IPV6_ADDRESS_TYPE).map(|v| v.encode_ipv6()) } pub fn lookup_all_pmip6_home_lma_ipv6_address(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -72,16 +89,10 @@ pub fn delete_pmip6_visited_lma_ipv6_address(packet: &mut Packet) { pub fn add_pmip6_visited_lma_ipv6_address(packet: &mut Packet, value: &Ipv6Addr) { packet.add(AVP::from_ipv6(PMIP6_VISITED_LMA_IPV6_ADDRESS_TYPE, value)); } -pub fn lookup_pmip6_visited_lma_ipv6_address( - packet: &Packet, -) -> Option> { - packet - .lookup(PMIP6_VISITED_LMA_IPV6_ADDRESS_TYPE) - .map(|v| v.encode_ipv6()) +pub fn lookup_pmip6_visited_lma_ipv6_address(packet: &Packet) -> Option> { + packet.lookup(PMIP6_VISITED_LMA_IPV6_ADDRESS_TYPE).map(|v| v.encode_ipv6()) } -pub fn lookup_all_pmip6_visited_lma_ipv6_address( - packet: &Packet, -) -> Result, AVPError> { +pub fn lookup_all_pmip6_visited_lma_ipv6_address(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); for avp in packet.lookup_all(PMIP6_VISITED_LMA_IPV6_ADDRESS_TYPE) { vec.push(avp.encode_ipv6()?) @@ -97,9 +108,7 @@ pub fn add_pmip6_home_lma_ipv4_address(packet: &mut Packet, value: &Ipv4Addr) { packet.add(AVP::from_ipv4(PMIP6_HOME_LMA_IPV4_ADDRESS_TYPE, value)); } pub fn lookup_pmip6_home_lma_ipv4_address(packet: &Packet) -> Option> { - packet - .lookup(PMIP6_HOME_LMA_IPV4_ADDRESS_TYPE) - .map(|v| v.encode_ipv4()) + packet.lookup(PMIP6_HOME_LMA_IPV4_ADDRESS_TYPE).map(|v| v.encode_ipv4()) } pub fn lookup_all_pmip6_home_lma_ipv4_address(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -116,16 +125,10 @@ pub fn delete_pmip6_visited_lma_ipv4_address(packet: &mut Packet) { pub fn add_pmip6_visited_lma_ipv4_address(packet: &mut Packet, value: &Ipv4Addr) { packet.add(AVP::from_ipv4(PMIP6_VISITED_LMA_IPV4_ADDRESS_TYPE, value)); } -pub fn lookup_pmip6_visited_lma_ipv4_address( - packet: &Packet, -) -> Option> { - packet - .lookup(PMIP6_VISITED_LMA_IPV4_ADDRESS_TYPE) - .map(|v| v.encode_ipv4()) +pub fn lookup_pmip6_visited_lma_ipv4_address(packet: &Packet) -> Option> { + packet.lookup(PMIP6_VISITED_LMA_IPV4_ADDRESS_TYPE).map(|v| v.encode_ipv4()) } -pub fn lookup_all_pmip6_visited_lma_ipv4_address( - packet: &Packet, -) -> Result, AVPError> { +pub fn lookup_all_pmip6_visited_lma_ipv4_address(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); for avp in packet.lookup_all(PMIP6_VISITED_LMA_IPV4_ADDRESS_TYPE) { vec.push(avp.encode_ipv4()?) @@ -142,9 +145,7 @@ pub fn add_pmip6_home_hn_prefix(packet: &mut Packet, value: &[u8]) -> Result<(), Ok(()) } pub fn lookup_pmip6_home_hn_prefix(packet: &Packet) -> Option, AVPError>> { - packet - .lookup(PMIP6_HOME_HN_PREFIX_TYPE) - .map(|v| v.encode_ipv6_prefix()) + packet.lookup(PMIP6_HOME_HN_PREFIX_TYPE).map(|v| v.encode_ipv6_prefix()) } pub fn lookup_all_pmip6_home_hn_prefix(packet: &Packet) -> Result>, AVPError> { let mut vec = Vec::new(); @@ -163,9 +164,7 @@ pub fn add_pmip6_visited_hn_prefix(packet: &mut Packet, value: &[u8]) -> Result< Ok(()) } pub fn lookup_pmip6_visited_hn_prefix(packet: &Packet) -> Option, AVPError>> { - packet - .lookup(PMIP6_VISITED_HN_PREFIX_TYPE) - .map(|v| v.encode_ipv6_prefix()) + packet.lookup(PMIP6_VISITED_HN_PREFIX_TYPE).map(|v| v.encode_ipv6_prefix()) } pub fn lookup_all_pmip6_visited_hn_prefix(packet: &Packet) -> Result>, AVPError> { let mut vec = Vec::new(); @@ -181,18 +180,13 @@ pub fn delete_pmip6_home_interface_id(packet: &mut Packet) { } pub fn add_pmip6_home_interface_id(packet: &mut Packet, value: &[u8]) -> Result<(), AVPError> { if value.len() != 8 { - return Err(AVPError::InvalidAttributeLengthError( - "8 bytes".to_owned(), - value.len(), - )); + return Err(AVPError::InvalidAttributeLengthError("8 bytes".to_owned(), value.len())); } packet.add(AVP::from_bytes(PMIP6_HOME_INTERFACE_ID_TYPE, value)); Ok(()) } pub fn lookup_pmip6_home_interface_id(packet: &Packet) -> Option> { - packet - .lookup(PMIP6_HOME_INTERFACE_ID_TYPE) - .map(|v| v.encode_bytes()) + packet.lookup(PMIP6_HOME_INTERFACE_ID_TYPE).map(|v| v.encode_bytes()) } pub fn lookup_all_pmip6_home_interface_id(packet: &Packet) -> Vec> { let mut vec = Vec::new(); @@ -208,18 +202,13 @@ pub fn delete_pmip6_visited_interface_id(packet: &mut Packet) { } pub fn add_pmip6_visited_interface_id(packet: &mut Packet, value: &[u8]) -> Result<(), AVPError> { if value.len() != 8 { - return Err(AVPError::InvalidAttributeLengthError( - "8 bytes".to_owned(), - value.len(), - )); + return Err(AVPError::InvalidAttributeLengthError("8 bytes".to_owned(), value.len())); } packet.add(AVP::from_bytes(PMIP6_VISITED_INTERFACE_ID_TYPE, value)); Ok(()) } pub fn lookup_pmip6_visited_interface_id(packet: &Packet) -> Option> { - packet - .lookup(PMIP6_VISITED_INTERFACE_ID_TYPE) - .map(|v| v.encode_bytes()) + packet.lookup(PMIP6_VISITED_INTERFACE_ID_TYPE).map(|v| v.encode_bytes()) } pub fn lookup_all_pmip6_visited_interface_id(packet: &Packet) -> Vec> { let mut vec = Vec::new(); @@ -238,9 +227,7 @@ pub fn add_pmip6_home_ipv4_ho_a(packet: &mut Packet, value: &[u8]) -> Result<(), Ok(()) } pub fn lookup_pmip6_home_ipv4_ho_a(packet: &Packet) -> Option, AVPError>> { - packet - .lookup(PMIP6_HOME_IPV4_HO_A_TYPE) - .map(|v| v.encode_ipv4_prefix()) + packet.lookup(PMIP6_HOME_IPV4_HO_A_TYPE).map(|v| v.encode_ipv4_prefix()) } pub fn lookup_all_pmip6_home_ipv4_ho_a(packet: &Packet) -> Result>, AVPError> { let mut vec = Vec::new(); @@ -259,9 +246,7 @@ pub fn add_pmip6_visited_ipv4_ho_a(packet: &mut Packet, value: &[u8]) -> Result< Ok(()) } pub fn lookup_pmip6_visited_ipv4_ho_a(packet: &Packet) -> Option, AVPError>> { - packet - .lookup(PMIP6_VISITED_IPV4_HO_A_TYPE) - .map(|v| v.encode_ipv4_prefix()) + packet.lookup(PMIP6_VISITED_IPV4_HO_A_TYPE).map(|v| v.encode_ipv4_prefix()) } pub fn lookup_all_pmip6_visited_ipv4_ho_a(packet: &Packet) -> Result>, AVPError> { let mut vec = Vec::new(); @@ -278,16 +263,10 @@ pub fn delete_pmip6_home_dhcp4_server_address(packet: &mut Packet) { pub fn add_pmip6_home_dhcp4_server_address(packet: &mut Packet, value: &Ipv4Addr) { packet.add(AVP::from_ipv4(PMIP6_HOME_DHCP4_SERVER_ADDRESS_TYPE, value)); } -pub fn lookup_pmip6_home_dhcp4_server_address( - packet: &Packet, -) -> Option> { - packet - .lookup(PMIP6_HOME_DHCP4_SERVER_ADDRESS_TYPE) - .map(|v| v.encode_ipv4()) +pub fn lookup_pmip6_home_dhcp4_server_address(packet: &Packet) -> Option> { + packet.lookup(PMIP6_HOME_DHCP4_SERVER_ADDRESS_TYPE).map(|v| v.encode_ipv4()) } -pub fn lookup_all_pmip6_home_dhcp4_server_address( - packet: &Packet, -) -> Result, AVPError> { +pub fn lookup_all_pmip6_home_dhcp4_server_address(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); for avp in packet.lookup_all(PMIP6_HOME_DHCP4_SERVER_ADDRESS_TYPE) { vec.push(avp.encode_ipv4()?) @@ -300,21 +279,12 @@ pub fn delete_pmip6_visited_dhcp4_server_address(packet: &mut Packet) { packet.delete(PMIP6_VISITED_DHCP4_SERVER_ADDRESS_TYPE); } pub fn add_pmip6_visited_dhcp4_server_address(packet: &mut Packet, value: &Ipv4Addr) { - packet.add(AVP::from_ipv4( - PMIP6_VISITED_DHCP4_SERVER_ADDRESS_TYPE, - value, - )); + packet.add(AVP::from_ipv4(PMIP6_VISITED_DHCP4_SERVER_ADDRESS_TYPE, value)); } -pub fn lookup_pmip6_visited_dhcp4_server_address( - packet: &Packet, -) -> Option> { - packet - .lookup(PMIP6_VISITED_DHCP4_SERVER_ADDRESS_TYPE) - .map(|v| v.encode_ipv4()) +pub fn lookup_pmip6_visited_dhcp4_server_address(packet: &Packet) -> Option> { + packet.lookup(PMIP6_VISITED_DHCP4_SERVER_ADDRESS_TYPE).map(|v| v.encode_ipv4()) } -pub fn lookup_all_pmip6_visited_dhcp4_server_address( - packet: &Packet, -) -> Result, AVPError> { +pub fn lookup_all_pmip6_visited_dhcp4_server_address(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); for avp in packet.lookup_all(PMIP6_VISITED_DHCP4_SERVER_ADDRESS_TYPE) { vec.push(avp.encode_ipv4()?) @@ -329,16 +299,10 @@ pub fn delete_pmip6_home_dhcp6_server_address(packet: &mut Packet) { pub fn add_pmip6_home_dhcp6_server_address(packet: &mut Packet, value: &Ipv6Addr) { packet.add(AVP::from_ipv6(PMIP6_HOME_DHCP6_SERVER_ADDRESS_TYPE, value)); } -pub fn lookup_pmip6_home_dhcp6_server_address( - packet: &Packet, -) -> Option> { - packet - .lookup(PMIP6_HOME_DHCP6_SERVER_ADDRESS_TYPE) - .map(|v| v.encode_ipv6()) +pub fn lookup_pmip6_home_dhcp6_server_address(packet: &Packet) -> Option> { + packet.lookup(PMIP6_HOME_DHCP6_SERVER_ADDRESS_TYPE).map(|v| v.encode_ipv6()) } -pub fn lookup_all_pmip6_home_dhcp6_server_address( - packet: &Packet, -) -> Result, AVPError> { +pub fn lookup_all_pmip6_home_dhcp6_server_address(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); for avp in packet.lookup_all(PMIP6_HOME_DHCP6_SERVER_ADDRESS_TYPE) { vec.push(avp.encode_ipv6()?) @@ -351,21 +315,12 @@ pub fn delete_pmip6_visited_dhcp6_server_address(packet: &mut Packet) { packet.delete(PMIP6_VISITED_DHCP6_SERVER_ADDRESS_TYPE); } pub fn add_pmip6_visited_dhcp6_server_address(packet: &mut Packet, value: &Ipv6Addr) { - packet.add(AVP::from_ipv6( - PMIP6_VISITED_DHCP6_SERVER_ADDRESS_TYPE, - value, - )); + packet.add(AVP::from_ipv6(PMIP6_VISITED_DHCP6_SERVER_ADDRESS_TYPE, value)); } -pub fn lookup_pmip6_visited_dhcp6_server_address( - packet: &Packet, -) -> Option> { - packet - .lookup(PMIP6_VISITED_DHCP6_SERVER_ADDRESS_TYPE) - .map(|v| v.encode_ipv6()) +pub fn lookup_pmip6_visited_dhcp6_server_address(packet: &Packet) -> Option> { + packet.lookup(PMIP6_VISITED_DHCP6_SERVER_ADDRESS_TYPE).map(|v| v.encode_ipv6()) } -pub fn lookup_all_pmip6_visited_dhcp6_server_address( - packet: &Packet, -) -> Result, AVPError> { +pub fn lookup_all_pmip6_visited_dhcp6_server_address(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); for avp in packet.lookup_all(PMIP6_VISITED_DHCP6_SERVER_ADDRESS_TYPE) { vec.push(avp.encode_ipv6()?) @@ -381,9 +336,7 @@ pub fn add_pmip6_home_ipv4_gateway(packet: &mut Packet, value: &Ipv4Addr) { packet.add(AVP::from_ipv4(PMIP6_HOME_IPV4_GATEWAY_TYPE, value)); } pub fn lookup_pmip6_home_ipv4_gateway(packet: &Packet) -> Option> { - packet - .lookup(PMIP6_HOME_IPV4_GATEWAY_TYPE) - .map(|v| v.encode_ipv4()) + packet.lookup(PMIP6_HOME_IPV4_GATEWAY_TYPE).map(|v| v.encode_ipv4()) } pub fn lookup_all_pmip6_home_ipv4_gateway(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -401,9 +354,7 @@ pub fn add_pmip6_visited_ipv4_gateway(packet: &mut Packet, value: &Ipv4Addr) { packet.add(AVP::from_ipv4(PMIP6_VISITED_IPV4_GATEWAY_TYPE, value)); } pub fn lookup_pmip6_visited_ipv4_gateway(packet: &Packet) -> Option> { - packet - .lookup(PMIP6_VISITED_IPV4_GATEWAY_TYPE) - .map(|v| v.encode_ipv4()) + packet.lookup(PMIP6_VISITED_IPV4_GATEWAY_TYPE).map(|v| v.encode_ipv4()) } pub fn lookup_all_pmip6_visited_ipv4_gateway(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); diff --git a/radius/src/rfc6677.rs b/radius/src/core/rfc6677.rs similarity index 86% rename from radius/src/rfc6677.rs rename to radius/src/core/rfc6677.rs index ba14947..ca7393c 100644 --- a/radius/src/rfc6677.rs +++ b/radius/src/core/rfc6677.rs @@ -1,7 +1,33 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; + + + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + + + + + + + + + + + + + + + + + + + + + + pub const EAP_LOWER_LAYER_TYPE: AVPType = 163; pub fn delete_eap_lower_layer(packet: &mut Packet) { @@ -11,9 +37,7 @@ pub fn add_eap_lower_layer(packet: &mut Packet, value: EapLowerLayer) { packet.add(AVP::from_u32(EAP_LOWER_LAYER_TYPE, value as u32)); } pub fn lookup_eap_lower_layer(packet: &Packet) -> Option> { - packet - .lookup(EAP_LOWER_LAYER_TYPE) - .map(|v| Ok(v.encode_u32()? as EapLowerLayer)) + packet.lookup(EAP_LOWER_LAYER_TYPE).map(|v| Ok(v.encode_u32()? as EapLowerLayer)) } pub fn lookup_all_eap_lower_layer(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -33,3 +57,4 @@ pub const EAP_LOWER_LAYER_PPP: EapLowerLayer = 6; pub const EAP_LOWER_LAYER_PANA_NO_PREAUTH: EapLowerLayer = 7; pub const EAP_LOWER_LAYER_GSS_API: EapLowerLayer = 8; pub const EAP_LOWER_LAYER_PANA_PREAUTH: EapLowerLayer = 9; + diff --git a/radius/src/rfc6911.rs b/radius/src/core/rfc6911.rs similarity index 85% rename from radius/src/rfc6911.rs rename to radius/src/core/rfc6911.rs index 61bee4c..67168b0 100644 --- a/radius/src/rfc6911.rs +++ b/radius/src/core/rfc6911.rs @@ -1,9 +1,34 @@ // Code generated by machine generator; DO NOT EDIT. -use std::net::Ipv6Addr; +use std::net::{Ipv6Addr}; + + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + + + + + + + + + + + + + + + + + + + + + + -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; pub const FRAMED_IPV6_ADDRESS_TYPE: AVPType = 168; pub fn delete_framed_ipv6_address(packet: &mut Packet) { @@ -13,9 +38,7 @@ pub fn add_framed_ipv6_address(packet: &mut Packet, value: &Ipv6Addr) { packet.add(AVP::from_ipv6(FRAMED_IPV6_ADDRESS_TYPE, value)); } pub fn lookup_framed_ipv6_address(packet: &Packet) -> Option> { - packet - .lookup(FRAMED_IPV6_ADDRESS_TYPE) - .map(|v| v.encode_ipv6()) + packet.lookup(FRAMED_IPV6_ADDRESS_TYPE).map(|v| v.encode_ipv6()) } pub fn lookup_all_framed_ipv6_address(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -33,9 +56,7 @@ pub fn add_dns_server_ipv6_address(packet: &mut Packet, value: &Ipv6Addr) { packet.add(AVP::from_ipv6(DNS_SERVER_IPV6_ADDRESS_TYPE, value)); } pub fn lookup_dns_server_ipv6_address(packet: &Packet) -> Option> { - packet - .lookup(DNS_SERVER_IPV6_ADDRESS_TYPE) - .map(|v| v.encode_ipv6()) + packet.lookup(DNS_SERVER_IPV6_ADDRESS_TYPE).map(|v| v.encode_ipv6()) } pub fn lookup_all_dns_server_ipv6_address(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -54,9 +75,7 @@ pub fn add_route_ipv6_information(packet: &mut Packet, value: &[u8]) -> Result<( Ok(()) } pub fn lookup_route_ipv6_information(packet: &Packet) -> Option, AVPError>> { - packet - .lookup(ROUTE_IPV6_INFORMATION_TYPE) - .map(|v| v.encode_ipv6_prefix()) + packet.lookup(ROUTE_IPV6_INFORMATION_TYPE).map(|v| v.encode_ipv6_prefix()) } pub fn lookup_all_route_ipv6_information(packet: &Packet) -> Result>, AVPError> { let mut vec = Vec::new(); @@ -74,9 +93,7 @@ pub fn add_delegated_ipv6_prefix_pool(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(DELEGATED_IPV6_PREFIX_POOL_TYPE, value)); } pub fn lookup_delegated_ipv6_prefix_pool(packet: &Packet) -> Option> { - packet - .lookup(DELEGATED_IPV6_PREFIX_POOL_TYPE) - .map(|v| v.encode_string()) + packet.lookup(DELEGATED_IPV6_PREFIX_POOL_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_delegated_ipv6_prefix_pool(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -94,9 +111,7 @@ pub fn add_stateful_ipv6_address_pool(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(STATEFUL_IPV6_ADDRESS_POOL_TYPE, value)); } pub fn lookup_stateful_ipv6_address_pool(packet: &Packet) -> Option> { - packet - .lookup(STATEFUL_IPV6_ADDRESS_POOL_TYPE) - .map(|v| v.encode_string()) + packet.lookup(STATEFUL_IPV6_ADDRESS_POOL_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_stateful_ipv6_address_pool(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); diff --git a/radius/src/rfc7055.rs b/radius/src/core/rfc7055.rs similarity index 85% rename from radius/src/rfc7055.rs rename to radius/src/core/rfc7055.rs index 2ebe870..4876fb7 100644 --- a/radius/src/rfc7055.rs +++ b/radius/src/core/rfc7055.rs @@ -1,7 +1,35 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; + + + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + + + + + + + + + + + + + + + + + + + + + + + + pub const GSS_ACCEPTOR_SERVICE_NAME_TYPE: AVPType = 164; pub fn delete_gss_acceptor_service_name(packet: &mut Packet) { @@ -11,9 +39,7 @@ pub fn add_gss_acceptor_service_name(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(GSS_ACCEPTOR_SERVICE_NAME_TYPE, value)); } pub fn lookup_gss_acceptor_service_name(packet: &Packet) -> Option> { - packet - .lookup(GSS_ACCEPTOR_SERVICE_NAME_TYPE) - .map(|v| v.encode_string()) + packet.lookup(GSS_ACCEPTOR_SERVICE_NAME_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_gss_acceptor_service_name(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -31,9 +57,7 @@ pub fn add_gss_acceptor_host_name(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(GSS_ACCEPTOR_HOST_NAME_TYPE, value)); } pub fn lookup_gss_acceptor_host_name(packet: &Packet) -> Option> { - packet - .lookup(GSS_ACCEPTOR_HOST_NAME_TYPE) - .map(|v| v.encode_string()) + packet.lookup(GSS_ACCEPTOR_HOST_NAME_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_gss_acceptor_host_name(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -51,9 +75,7 @@ pub fn add_gss_acceptor_service_specifics(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(GSS_ACCEPTOR_SERVICE_SPECIFICS_TYPE, value)); } pub fn lookup_gss_acceptor_service_specifics(packet: &Packet) -> Option> { - packet - .lookup(GSS_ACCEPTOR_SERVICE_SPECIFICS_TYPE) - .map(|v| v.encode_string()) + packet.lookup(GSS_ACCEPTOR_SERVICE_SPECIFICS_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_gss_acceptor_service_specifics(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); @@ -71,9 +93,7 @@ pub fn add_gss_acceptor_realm_name(packet: &mut Packet, value: &str) { packet.add(AVP::from_string(GSS_ACCEPTOR_REALM_NAME_TYPE, value)); } pub fn lookup_gss_acceptor_realm_name(packet: &Packet) -> Option> { - packet - .lookup(GSS_ACCEPTOR_REALM_NAME_TYPE) - .map(|v| v.encode_string()) + packet.lookup(GSS_ACCEPTOR_REALM_NAME_TYPE).map(|v| v.encode_string()) } pub fn lookup_all_gss_acceptor_realm_name(packet: &Packet) -> Result, AVPError> { let mut vec = Vec::new(); diff --git a/radius/src/rfc7155.rs b/radius/src/core/rfc7155.rs similarity index 71% rename from radius/src/rfc7155.rs rename to radius/src/core/rfc7155.rs index d1fb91b..cceb8bc 100644 --- a/radius/src/rfc7155.rs +++ b/radius/src/core/rfc7155.rs @@ -1,7 +1,36 @@ // Code generated by machine generator; DO NOT EDIT. -use crate::avp::{AVPError, AVPType, AVP}; -use crate::packet::Packet; + + + + +use crate::core::avp::{AVP, AVPType, AVPError}; +use crate::core::packet::Packet; + + + + + + + + + + + + + + + + + + + + + + + + + pub const ORIGINATING_LINE_INFO_TYPE: AVPType = 94; pub fn delete_originating_line_info(packet: &mut Packet) { @@ -9,18 +38,13 @@ pub fn delete_originating_line_info(packet: &mut Packet) { } pub fn add_originating_line_info(packet: &mut Packet, value: &[u8]) -> Result<(), AVPError> { if value.len() != 2 { - return Err(AVPError::InvalidAttributeLengthError( - "2 bytes".to_owned(), - value.len(), - )); + return Err(AVPError::InvalidAttributeLengthError("2 bytes".to_owned(), value.len())); } packet.add(AVP::from_bytes(ORIGINATING_LINE_INFO_TYPE, value)); Ok(()) } pub fn lookup_originating_line_info(packet: &Packet) -> Option> { - packet - .lookup(ORIGINATING_LINE_INFO_TYPE) - .map(|v| v.encode_bytes()) + packet.lookup(ORIGINATING_LINE_INFO_TYPE).map(|v| v.encode_bytes()) } pub fn lookup_all_originating_line_info(packet: &Packet) -> Vec> { let mut vec = Vec::new(); diff --git a/radius/src/tag.rs b/radius/src/core/tag.rs similarity index 97% rename from radius/src/tag.rs rename to radius/src/core/tag.rs index 7969a94..76404a1 100644 --- a/radius/src/tag.rs +++ b/radius/src/core/tag.rs @@ -33,7 +33,7 @@ impl Tag { #[cfg(test)] mod tests { - use crate::tag::Tag; + use crate::core::tag::Tag; #[test] fn test_is_zero() { diff --git a/radius/src/lib.rs b/radius/src/lib.rs index 91eeeeb..9b2f1e4 100644 --- a/radius/src/lib.rs +++ b/radius/src/lib.rs @@ -1,30 +1,6 @@ -pub(crate) mod attributes; -pub mod avp; -pub mod code; -pub mod packet; -pub mod request; -pub mod rfc2865; -pub mod rfc2866; -pub mod rfc2867; -pub mod rfc2868; -pub mod rfc2869; -pub mod rfc3162; -pub mod rfc3576; -pub mod rfc3580; -pub mod rfc4072; -pub mod rfc4372; -pub mod rfc4603; -pub mod rfc4675; -pub mod rfc4818; -pub mod rfc4849; -pub mod rfc5090; -pub mod rfc5176; -pub mod rfc5607; -pub mod rfc5904; -pub mod rfc6519; -pub mod rfc6572; -pub mod rfc6677; -pub mod rfc6911; -pub mod rfc7055; -pub mod rfc7155; -pub mod tag; +#[macro_use] +extern crate log; + +pub mod client; +pub mod core; +pub mod server; diff --git a/radius-server/src/server.rs b/radius/src/server.rs similarity index 78% rename from radius-server/src/server.rs rename to radius/src/server.rs index bb9eaae..5370783 100644 --- a/radius-server/src/server.rs +++ b/radius/src/server.rs @@ -1,3 +1,4 @@ +use async_trait::async_trait; use std::borrow::Borrow; use std::collections::HashSet; use std::future::Future; @@ -5,12 +6,11 @@ use std::io; use std::net::SocketAddr; use std::sync::{Arc, RwLock}; +use thiserror::Error; use tokio::net::UdpSocket; -use crate::request_handler::RequestHandler; -use crate::secret_provider::SecretProvider; -use radius::packet::Packet; -use radius::request::Request; +use crate::core::packet::Packet; +use crate::core::request::Request; use std::fmt::Debug; /// A basic implementation of the RADIUS server. @@ -169,6 +169,36 @@ impl Server { } } +/// RequestHandler is a handler for the received RADIUS request. +#[async_trait] +pub trait RequestHandler: 'static + Sync + Send { + /// This method has to implement the core feature of the server application what you need. + /// + /// # Arguments + /// + /// * conn - This connection is associated with the remote requester. In the most situations, + /// you have to send a response through this connection object. + /// * request - This is a request object that comes from the remote requester. + async fn handle_radius_request(&self, conn: &UdpSocket, request: &Request) -> Result; +} + +#[derive(Error, Debug)] +pub enum SecretProviderError { + /// An error that represents a failure to fetch a secret value from the provider. + #[error("failed to fetch a secret value: {0}")] + FailedFetchingError(String), + /// An error that represents a generic (i.e. unclassified) error that occurs on the secret value provider. + #[error("unexpected error: {0}")] + GenericError(String), +} + +/// SecretProvider is a provider for secret value. +pub trait SecretProvider: 'static + Sync + Send { + /// This method has to implement the generator of the secret value to verify the request of + /// `Accounting-Response`, `Accounting-Response` and `CoA-Request`. + fn fetch_secret(&self, remote_addr: SocketAddr) -> Result, SecretProviderError>; +} + #[derive(PartialEq, Eq, Hash, Clone)] struct RequestKey { ip: String, diff --git a/scripts/generate-code.sh b/scripts/generate-code.sh index f8a72ca..4e60446 100755 --- a/scripts/generate-code.sh +++ b/scripts/generate-code.sh @@ -14,13 +14,13 @@ for DICT in ${DICTS[@]}; do DICT_NAME="${DICT##*.}" DICT_FILE="${DICTS_DIR}/dictionary.${DICT_NAME}" if [ -f "$DICT_FILE" ]; then - cat /dev/null > "${SRC_DIR}/${DICT_NAME}.rs" + cat /dev/null > "${SRC_DIR}/core/${DICT_NAME}.rs" DICT_FILES+=("$DICT_FILE") fi done # shellcheck disable=SC2068 -cargo run --bin code-generator -- --out-dir="${SRC_DIR}/" ${DICT_FILES[@]} +cargo run --bin code-generator -- --out-dir="${SRC_DIR}/core/" ${DICT_FILES[@]} cargo fix --allow-dirty --allow-staged cargo fmt