Support the following RFC dictionaries

- RFC4603
- RFC4675
- RFC4818
- RFC4849
- RFC5176
- RFC6911
- RFC7055
- RFC7155
This commit is contained in:
moznion
2020-12-06 16:09:03 +09:00
parent bece870914
commit 2b6b80a83e
19 changed files with 518 additions and 10 deletions
+8
View File
@@ -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;
+8
View File
@@ -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;
+86
View File
@@ -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
}
+25
View File
@@ -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)
}
+24
View File
@@ -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)
}
+5
View File
@@ -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;
+107
View File
@@ -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)
}
+84
View File
@@ -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)
}
+28
View File
@@ -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
}