mirror of
https://github.com/cubixle/radius-rs.git
synced 2026-04-30 08:48:45 +01:00
Support the following RFC dictionaries
- RFC4603 - RFC4675 - RFC4818 - RFC4849 - RFC5176 - RFC6911 - RFC7055 - RFC7155
This commit is contained in:
@@ -13,8 +13,16 @@ 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 rfc6519;
|
||||
pub mod rfc6677;
|
||||
pub mod rfc6911;
|
||||
pub mod rfc7055;
|
||||
pub mod rfc7155;
|
||||
pub mod tag;
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
// Code generated by machine generator; DO NOT EDIT.
|
||||
|
||||
pub type NasPortType = u32;
|
||||
pub const NAS_PORT_TYPE_PP_PO_A: NasPortType = 30;
|
||||
pub const NAS_PORT_TYPE_PP_PO_EO_A: NasPortType = 31;
|
||||
pub const NAS_PORT_TYPE_PP_PO_EO_E: NasPortType = 32;
|
||||
pub const NAS_PORT_TYPE_PP_PO_EO_VLAN: NasPortType = 33;
|
||||
pub const NAS_PORT_TYPE_PP_PO_EO_QIN_Q: NasPortType = 34;
|
||||
@@ -0,0 +1,86 @@
|
||||
// Code generated by machine generator; DO NOT EDIT.
|
||||
|
||||
use crate::avp::{AVPError, AVPType, AVP};
|
||||
use crate::packet::Packet;
|
||||
|
||||
pub type IngressFilters = u32;
|
||||
pub const INGRESS_FILTERS_ENABLED: IngressFilters = 1;
|
||||
pub const INGRESS_FILTERS_DISABLED: IngressFilters = 2;
|
||||
|
||||
pub const EGRESS_VLANID_TYPE: AVPType = 56;
|
||||
pub fn delete_egress_vlanid(packet: &mut Packet) {
|
||||
packet.delete(EGRESS_VLANID_TYPE);
|
||||
}
|
||||
pub fn add_egress_vlanid(packet: &mut Packet, value: u32) {
|
||||
packet.add(AVP::from_u32(EGRESS_VLANID_TYPE, value));
|
||||
}
|
||||
pub fn lookup_egress_vlanid(packet: &Packet) -> Option<Result<u32, AVPError>> {
|
||||
packet.lookup(EGRESS_VLANID_TYPE).map(|v| v.encode_u32())
|
||||
}
|
||||
pub fn lookup_all_egress_vlanid(packet: &Packet) -> Result<Vec<u32>, AVPError> {
|
||||
let mut vec = Vec::new();
|
||||
for avp in packet.lookup_all(EGRESS_VLANID_TYPE) {
|
||||
vec.push(avp.encode_u32()?)
|
||||
}
|
||||
Ok(vec)
|
||||
}
|
||||
|
||||
pub const INGRESS_FILTERS_TYPE: AVPType = 57;
|
||||
pub fn delete_ingress_filters(packet: &mut Packet) {
|
||||
packet.delete(INGRESS_FILTERS_TYPE);
|
||||
}
|
||||
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<Result<IngressFilters, AVPError>> {
|
||||
packet
|
||||
.lookup(INGRESS_FILTERS_TYPE)
|
||||
.map(|v| Ok(v.encode_u32()? as IngressFilters))
|
||||
}
|
||||
pub fn lookup_all_ingress_filters(packet: &Packet) -> Result<Vec<IngressFilters>, AVPError> {
|
||||
let mut vec = Vec::new();
|
||||
for avp in packet.lookup_all(INGRESS_FILTERS_TYPE) {
|
||||
vec.push(avp.encode_u32()? as IngressFilters)
|
||||
}
|
||||
Ok(vec)
|
||||
}
|
||||
|
||||
pub const EGRESS_VLAN_NAME_TYPE: AVPType = 58;
|
||||
pub fn delete_egress_vlan_name(packet: &mut Packet) {
|
||||
packet.delete(EGRESS_VLAN_NAME_TYPE);
|
||||
}
|
||||
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<Result<String, AVPError>> {
|
||||
packet
|
||||
.lookup(EGRESS_VLAN_NAME_TYPE)
|
||||
.map(|v| v.encode_string())
|
||||
}
|
||||
pub fn lookup_all_egress_vlan_name(packet: &Packet) -> Result<Vec<String>, AVPError> {
|
||||
let mut vec = Vec::new();
|
||||
for avp in packet.lookup_all(EGRESS_VLAN_NAME_TYPE) {
|
||||
vec.push(avp.encode_string()?)
|
||||
}
|
||||
Ok(vec)
|
||||
}
|
||||
|
||||
pub const USER_PRIORITY_TABLE_TYPE: AVPType = 59;
|
||||
pub fn delete_user_priority_table(packet: &mut Packet) {
|
||||
packet.delete(USER_PRIORITY_TABLE_TYPE);
|
||||
}
|
||||
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<Vec<u8>> {
|
||||
packet
|
||||
.lookup(USER_PRIORITY_TABLE_TYPE)
|
||||
.map(|v| v.encode_bytes())
|
||||
}
|
||||
pub fn lookup_all_user_priority_table(packet: &Packet) -> Vec<Vec<u8>> {
|
||||
let mut vec = Vec::new();
|
||||
for avp in packet.lookup_all(USER_PRIORITY_TABLE_TYPE) {
|
||||
vec.push(avp.encode_bytes())
|
||||
}
|
||||
vec
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
// Code generated by machine generator; DO NOT EDIT.
|
||||
|
||||
use crate::avp::{AVPError, AVPType, AVP};
|
||||
use crate::packet::Packet;
|
||||
|
||||
pub const DELEGATED_I_PV_6_PREFIX_TYPE: AVPType = 123;
|
||||
pub fn delete_delegated_i_pv_6_prefix(packet: &mut Packet) {
|
||||
packet.delete(DELEGATED_I_PV_6_PREFIX_TYPE);
|
||||
}
|
||||
pub fn add_delegated_i_pv_6_prefix(packet: &mut Packet, value: &[u8]) -> Result<(), AVPError> {
|
||||
packet.add(AVP::from_ipv6_prefix(DELEGATED_I_PV_6_PREFIX_TYPE, value)?);
|
||||
Ok(())
|
||||
}
|
||||
pub fn lookup_delegated_i_pv_6_prefix(packet: &Packet) -> Option<Result<Vec<u8>, AVPError>> {
|
||||
packet
|
||||
.lookup(DELEGATED_I_PV_6_PREFIX_TYPE)
|
||||
.map(|v| v.encode_ipv6_prefix())
|
||||
}
|
||||
pub fn lookup_all_delegated_i_pv_6_prefix(packet: &Packet) -> Result<Vec<Vec<u8>>, AVPError> {
|
||||
let mut vec = Vec::new();
|
||||
for avp in packet.lookup_all(DELEGATED_I_PV_6_PREFIX_TYPE) {
|
||||
vec.push(avp.encode_ipv6_prefix()?)
|
||||
}
|
||||
Ok(vec)
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
// Code generated by machine generator; DO NOT EDIT.
|
||||
|
||||
use crate::avp::{AVPError, AVPType, AVP};
|
||||
use crate::packet::Packet;
|
||||
|
||||
pub const NAS_FILTER_RULE_TYPE: AVPType = 92;
|
||||
pub fn delete_nas_filter_rule(packet: &mut Packet) {
|
||||
packet.delete(NAS_FILTER_RULE_TYPE);
|
||||
}
|
||||
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<Result<String, AVPError>> {
|
||||
packet
|
||||
.lookup(NAS_FILTER_RULE_TYPE)
|
||||
.map(|v| v.encode_string())
|
||||
}
|
||||
pub fn lookup_all_nas_filter_rule(packet: &Packet) -> Result<Vec<String>, AVPError> {
|
||||
let mut vec = Vec::new();
|
||||
for avp in packet.lookup_all(NAS_FILTER_RULE_TYPE) {
|
||||
vec.push(avp.encode_string()?)
|
||||
}
|
||||
Ok(vec)
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
// Code generated by machine generator; DO NOT EDIT.
|
||||
|
||||
pub type ErrorCause = u32;
|
||||
pub const ERROR_CAUSE_INVALID_ATTRIBUTE_VALUE: ErrorCause = 407;
|
||||
pub const ERROR_CAUSE_MULTIPLE_SESSION_SELECTION_UNSUPPORTED: ErrorCause = 508;
|
||||
@@ -0,0 +1,107 @@
|
||||
// Code generated by machine generator; DO NOT EDIT.
|
||||
|
||||
use std::net::Ipv6Addr;
|
||||
|
||||
use crate::avp::{AVPError, AVPType, AVP};
|
||||
use crate::packet::Packet;
|
||||
|
||||
pub const FRAMED_I_PV_6_ADDRESS_TYPE: AVPType = 168;
|
||||
pub fn delete_framed_i_pv_6_address(packet: &mut Packet) {
|
||||
packet.delete(FRAMED_I_PV_6_ADDRESS_TYPE);
|
||||
}
|
||||
pub fn add_framed_i_pv_6_address(packet: &mut Packet, value: &Ipv6Addr) {
|
||||
packet.add(AVP::from_ipv6(FRAMED_I_PV_6_ADDRESS_TYPE, value));
|
||||
}
|
||||
pub fn lookup_framed_i_pv_6_address(packet: &Packet) -> Option<Result<Ipv6Addr, AVPError>> {
|
||||
packet
|
||||
.lookup(FRAMED_I_PV_6_ADDRESS_TYPE)
|
||||
.map(|v| v.encode_ipv6())
|
||||
}
|
||||
pub fn lookup_all_framed_i_pv_6_address(packet: &Packet) -> Result<Vec<Ipv6Addr>, AVPError> {
|
||||
let mut vec = Vec::new();
|
||||
for avp in packet.lookup_all(FRAMED_I_PV_6_ADDRESS_TYPE) {
|
||||
vec.push(avp.encode_ipv6()?)
|
||||
}
|
||||
Ok(vec)
|
||||
}
|
||||
|
||||
pub const DNS_SERVER_I_PV_6_ADDRESS_TYPE: AVPType = 169;
|
||||
pub fn delete_dns_server_i_pv_6_address(packet: &mut Packet) {
|
||||
packet.delete(DNS_SERVER_I_PV_6_ADDRESS_TYPE);
|
||||
}
|
||||
pub fn add_dns_server_i_pv_6_address(packet: &mut Packet, value: &Ipv6Addr) {
|
||||
packet.add(AVP::from_ipv6(DNS_SERVER_I_PV_6_ADDRESS_TYPE, value));
|
||||
}
|
||||
pub fn lookup_dns_server_i_pv_6_address(packet: &Packet) -> Option<Result<Ipv6Addr, AVPError>> {
|
||||
packet
|
||||
.lookup(DNS_SERVER_I_PV_6_ADDRESS_TYPE)
|
||||
.map(|v| v.encode_ipv6())
|
||||
}
|
||||
pub fn lookup_all_dns_server_i_pv_6_address(packet: &Packet) -> Result<Vec<Ipv6Addr>, AVPError> {
|
||||
let mut vec = Vec::new();
|
||||
for avp in packet.lookup_all(DNS_SERVER_I_PV_6_ADDRESS_TYPE) {
|
||||
vec.push(avp.encode_ipv6()?)
|
||||
}
|
||||
Ok(vec)
|
||||
}
|
||||
|
||||
pub const ROUTE_I_PV_6_INFORMATION_TYPE: AVPType = 170;
|
||||
pub fn delete_route_i_pv_6_information(packet: &mut Packet) {
|
||||
packet.delete(ROUTE_I_PV_6_INFORMATION_TYPE);
|
||||
}
|
||||
pub fn add_route_i_pv_6_information(packet: &mut Packet, value: &[u8]) -> Result<(), AVPError> {
|
||||
packet.add(AVP::from_ipv6_prefix(ROUTE_I_PV_6_INFORMATION_TYPE, value)?);
|
||||
Ok(())
|
||||
}
|
||||
pub fn lookup_route_i_pv_6_information(packet: &Packet) -> Option<Result<Vec<u8>, AVPError>> {
|
||||
packet
|
||||
.lookup(ROUTE_I_PV_6_INFORMATION_TYPE)
|
||||
.map(|v| v.encode_ipv6_prefix())
|
||||
}
|
||||
pub fn lookup_all_route_i_pv_6_information(packet: &Packet) -> Result<Vec<Vec<u8>>, AVPError> {
|
||||
let mut vec = Vec::new();
|
||||
for avp in packet.lookup_all(ROUTE_I_PV_6_INFORMATION_TYPE) {
|
||||
vec.push(avp.encode_ipv6_prefix()?)
|
||||
}
|
||||
Ok(vec)
|
||||
}
|
||||
|
||||
pub const DELEGATED_I_PV_6_PREFIX_POOL_TYPE: AVPType = 171;
|
||||
pub fn delete_delegated_i_pv_6_prefix_pool(packet: &mut Packet) {
|
||||
packet.delete(DELEGATED_I_PV_6_PREFIX_POOL_TYPE);
|
||||
}
|
||||
pub fn add_delegated_i_pv_6_prefix_pool(packet: &mut Packet, value: &str) {
|
||||
packet.add(AVP::from_string(DELEGATED_I_PV_6_PREFIX_POOL_TYPE, value));
|
||||
}
|
||||
pub fn lookup_delegated_i_pv_6_prefix_pool(packet: &Packet) -> Option<Result<String, AVPError>> {
|
||||
packet
|
||||
.lookup(DELEGATED_I_PV_6_PREFIX_POOL_TYPE)
|
||||
.map(|v| v.encode_string())
|
||||
}
|
||||
pub fn lookup_all_delegated_i_pv_6_prefix_pool(packet: &Packet) -> Result<Vec<String>, AVPError> {
|
||||
let mut vec = Vec::new();
|
||||
for avp in packet.lookup_all(DELEGATED_I_PV_6_PREFIX_POOL_TYPE) {
|
||||
vec.push(avp.encode_string()?)
|
||||
}
|
||||
Ok(vec)
|
||||
}
|
||||
|
||||
pub const STATEFUL_I_PV_6_ADDRESS_POOL_TYPE: AVPType = 172;
|
||||
pub fn delete_stateful_i_pv_6_address_pool(packet: &mut Packet) {
|
||||
packet.delete(STATEFUL_I_PV_6_ADDRESS_POOL_TYPE);
|
||||
}
|
||||
pub fn add_stateful_i_pv_6_address_pool(packet: &mut Packet, value: &str) {
|
||||
packet.add(AVP::from_string(STATEFUL_I_PV_6_ADDRESS_POOL_TYPE, value));
|
||||
}
|
||||
pub fn lookup_stateful_i_pv_6_address_pool(packet: &Packet) -> Option<Result<String, AVPError>> {
|
||||
packet
|
||||
.lookup(STATEFUL_I_PV_6_ADDRESS_POOL_TYPE)
|
||||
.map(|v| v.encode_string())
|
||||
}
|
||||
pub fn lookup_all_stateful_i_pv_6_address_pool(packet: &Packet) -> Result<Vec<String>, AVPError> {
|
||||
let mut vec = Vec::new();
|
||||
for avp in packet.lookup_all(STATEFUL_I_PV_6_ADDRESS_POOL_TYPE) {
|
||||
vec.push(avp.encode_string()?)
|
||||
}
|
||||
Ok(vec)
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
// Code generated by machine generator; DO NOT EDIT.
|
||||
|
||||
use crate::avp::{AVPError, AVPType, AVP};
|
||||
use crate::packet::Packet;
|
||||
|
||||
pub const GSS_ACCEPTOR_SERVICE_NAME_TYPE: AVPType = 164;
|
||||
pub fn delete_gss_acceptor_service_name(packet: &mut Packet) {
|
||||
packet.delete(GSS_ACCEPTOR_SERVICE_NAME_TYPE);
|
||||
}
|
||||
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<Result<String, AVPError>> {
|
||||
packet
|
||||
.lookup(GSS_ACCEPTOR_SERVICE_NAME_TYPE)
|
||||
.map(|v| v.encode_string())
|
||||
}
|
||||
pub fn lookup_all_gss_acceptor_service_name(packet: &Packet) -> Result<Vec<String>, AVPError> {
|
||||
let mut vec = Vec::new();
|
||||
for avp in packet.lookup_all(GSS_ACCEPTOR_SERVICE_NAME_TYPE) {
|
||||
vec.push(avp.encode_string()?)
|
||||
}
|
||||
Ok(vec)
|
||||
}
|
||||
|
||||
pub const GSS_ACCEPTOR_HOST_NAME_TYPE: AVPType = 165;
|
||||
pub fn delete_gss_acceptor_host_name(packet: &mut Packet) {
|
||||
packet.delete(GSS_ACCEPTOR_HOST_NAME_TYPE);
|
||||
}
|
||||
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<Result<String, AVPError>> {
|
||||
packet
|
||||
.lookup(GSS_ACCEPTOR_HOST_NAME_TYPE)
|
||||
.map(|v| v.encode_string())
|
||||
}
|
||||
pub fn lookup_all_gss_acceptor_host_name(packet: &Packet) -> Result<Vec<String>, AVPError> {
|
||||
let mut vec = Vec::new();
|
||||
for avp in packet.lookup_all(GSS_ACCEPTOR_HOST_NAME_TYPE) {
|
||||
vec.push(avp.encode_string()?)
|
||||
}
|
||||
Ok(vec)
|
||||
}
|
||||
|
||||
pub const GSS_ACCEPTOR_SERVICE_SPECIFICS_TYPE: AVPType = 166;
|
||||
pub fn delete_gss_acceptor_service_specifics(packet: &mut Packet) {
|
||||
packet.delete(GSS_ACCEPTOR_SERVICE_SPECIFICS_TYPE);
|
||||
}
|
||||
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<Result<String, AVPError>> {
|
||||
packet
|
||||
.lookup(GSS_ACCEPTOR_SERVICE_SPECIFICS_TYPE)
|
||||
.map(|v| v.encode_string())
|
||||
}
|
||||
pub fn lookup_all_gss_acceptor_service_specifics(packet: &Packet) -> Result<Vec<String>, AVPError> {
|
||||
let mut vec = Vec::new();
|
||||
for avp in packet.lookup_all(GSS_ACCEPTOR_SERVICE_SPECIFICS_TYPE) {
|
||||
vec.push(avp.encode_string()?)
|
||||
}
|
||||
Ok(vec)
|
||||
}
|
||||
|
||||
pub const GSS_ACCEPTOR_REALM_NAME_TYPE: AVPType = 167;
|
||||
pub fn delete_gss_acceptor_realm_name(packet: &mut Packet) {
|
||||
packet.delete(GSS_ACCEPTOR_REALM_NAME_TYPE);
|
||||
}
|
||||
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<Result<String, AVPError>> {
|
||||
packet
|
||||
.lookup(GSS_ACCEPTOR_REALM_NAME_TYPE)
|
||||
.map(|v| v.encode_string())
|
||||
}
|
||||
pub fn lookup_all_gss_acceptor_realm_name(packet: &Packet) -> Result<Vec<String>, AVPError> {
|
||||
let mut vec = Vec::new();
|
||||
for avp in packet.lookup_all(GSS_ACCEPTOR_REALM_NAME_TYPE) {
|
||||
vec.push(avp.encode_string()?)
|
||||
}
|
||||
Ok(vec)
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
// Code generated by machine generator; DO NOT EDIT.
|
||||
|
||||
use crate::avp::{AVPError, AVPType, AVP};
|
||||
use crate::packet::Packet;
|
||||
|
||||
pub const ORIGINATING_LINE_INFO_TYPE: AVPType = 94;
|
||||
pub fn delete_originating_line_info(packet: &mut Packet) {
|
||||
packet.delete(ORIGINATING_LINE_INFO_TYPE);
|
||||
}
|
||||
pub fn add_originating_line_info(packet: &mut Packet, value: &[u8]) -> Result<(), AVPError> {
|
||||
if value.len() != 2 {
|
||||
return Err(AVPError::InvalidAttributeLengthError(2));
|
||||
}
|
||||
packet.add(AVP::from_bytes(ORIGINATING_LINE_INFO_TYPE, value));
|
||||
Ok(())
|
||||
}
|
||||
pub fn lookup_originating_line_info(packet: &Packet) -> Option<Vec<u8>> {
|
||||
packet
|
||||
.lookup(ORIGINATING_LINE_INFO_TYPE)
|
||||
.map(|v| v.encode_bytes())
|
||||
}
|
||||
pub fn lookup_all_originating_line_info(packet: &Packet) -> Vec<Vec<u8>> {
|
||||
let mut vec = Vec::new();
|
||||
for avp in packet.lookup_all(ORIGINATING_LINE_INFO_TYPE) {
|
||||
vec.push(avp.encode_bytes())
|
||||
}
|
||||
vec
|
||||
}
|
||||
Reference in New Issue
Block a user