use crate::core::avp::{AVPError, AVPType, AVP};
use crate::core::packet::Packet;
pub const ACCT_STATUS_TYPE_TYPE: AVPType = 40;
pub fn delete_acct_status_type(packet: &mut Packet) {
packet.delete(ACCT_STATUS_TYPE_TYPE);
}
pub fn add_acct_status_type(packet: &mut Packet, value: AcctStatusType) {
packet.add(AVP::from_u32(ACCT_STATUS_TYPE_TYPE, value));
}
pub fn lookup_acct_status_type(packet: &Packet) -> Option<Result<AcctStatusType, AVPError>> {
packet
.lookup(ACCT_STATUS_TYPE_TYPE)
.map(|v| Ok(v.encode_u32()? as AcctStatusType))
}
pub fn lookup_all_acct_status_type(packet: &Packet) -> Result<Vec<AcctStatusType>, AVPError> {
let mut vec = Vec::new();
for avp in packet.lookup_all(ACCT_STATUS_TYPE_TYPE) {
vec.push(avp.encode_u32()? as AcctStatusType)
}
Ok(vec)
}
pub const ACCT_DELAY_TIME_TYPE: AVPType = 41;
pub fn delete_acct_delay_time(packet: &mut Packet) {
packet.delete(ACCT_DELAY_TIME_TYPE);
}
pub fn add_acct_delay_time(packet: &mut Packet, value: u32) {
packet.add(AVP::from_u32(ACCT_DELAY_TIME_TYPE, value));
}
pub fn lookup_acct_delay_time(packet: &Packet) -> Option<Result<u32, AVPError>> {
packet.lookup(ACCT_DELAY_TIME_TYPE).map(|v| v.encode_u32())
}
pub fn lookup_all_acct_delay_time(packet: &Packet) -> Result<Vec<u32>, AVPError> {
let mut vec = Vec::new();
for avp in packet.lookup_all(ACCT_DELAY_TIME_TYPE) {
vec.push(avp.encode_u32()?)
}
Ok(vec)
}
pub const ACCT_INPUT_OCTETS_TYPE: AVPType = 42;
pub fn delete_acct_input_octets(packet: &mut Packet) {
packet.delete(ACCT_INPUT_OCTETS_TYPE);
}
pub fn 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<Result<u32, AVPError>> {
packet
.lookup(ACCT_INPUT_OCTETS_TYPE)
.map(|v| v.encode_u32())
}
pub fn lookup_all_acct_input_octets(packet: &Packet) -> Result<Vec<u32>, AVPError> {
let mut vec = Vec::new();
for avp in packet.lookup_all(ACCT_INPUT_OCTETS_TYPE) {
vec.push(avp.encode_u32()?)
}
Ok(vec)
}
pub const ACCT_OUTPUT_OCTETS_TYPE: AVPType = 43;
pub fn delete_acct_output_octets(packet: &mut Packet) {
packet.delete(ACCT_OUTPUT_OCTETS_TYPE);
}
pub fn 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<Result<u32, AVPError>> {
packet
.lookup(ACCT_OUTPUT_OCTETS_TYPE)
.map(|v| v.encode_u32())
}
pub fn lookup_all_acct_output_octets(packet: &Packet) -> Result<Vec<u32>, AVPError> {
let mut vec = Vec::new();
for avp in packet.lookup_all(ACCT_OUTPUT_OCTETS_TYPE) {
vec.push(avp.encode_u32()?)
}
Ok(vec)
}
pub const ACCT_SESSION_ID_TYPE: AVPType = 44;
pub fn delete_acct_session_id(packet: &mut Packet) {
packet.delete(ACCT_SESSION_ID_TYPE);
}
pub fn 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<Result<String, AVPError>> {
packet
.lookup(ACCT_SESSION_ID_TYPE)
.map(|v| v.encode_string())
}
pub fn lookup_all_acct_session_id(packet: &Packet) -> Result<Vec<String>, AVPError> {
let mut vec = Vec::new();
for avp in packet.lookup_all(ACCT_SESSION_ID_TYPE) {
vec.push(avp.encode_string()?)
}
Ok(vec)
}
pub const ACCT_AUTHENTIC_TYPE: AVPType = 45;
pub fn delete_acct_authentic(packet: &mut Packet) {
packet.delete(ACCT_AUTHENTIC_TYPE);
}
pub fn add_acct_authentic(packet: &mut Packet, value: AcctAuthentic) {
packet.add(AVP::from_u32(ACCT_AUTHENTIC_TYPE, value));
}
pub fn lookup_acct_authentic(packet: &Packet) -> Option<Result<AcctAuthentic, AVPError>> {
packet
.lookup(ACCT_AUTHENTIC_TYPE)
.map(|v| Ok(v.encode_u32()? as AcctAuthentic))
}
pub fn lookup_all_acct_authentic(packet: &Packet) -> Result<Vec<AcctAuthentic>, AVPError> {
let mut vec = Vec::new();
for avp in packet.lookup_all(ACCT_AUTHENTIC_TYPE) {
vec.push(avp.encode_u32()? as AcctAuthentic)
}
Ok(vec)
}
pub const ACCT_SESSION_TIME_TYPE: AVPType = 46;
pub fn delete_acct_session_time(packet: &mut Packet) {
packet.delete(ACCT_SESSION_TIME_TYPE);
}
pub fn 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<Result<u32, AVPError>> {
packet
.lookup(ACCT_SESSION_TIME_TYPE)
.map(|v| v.encode_u32())
}
pub fn lookup_all_acct_session_time(packet: &Packet) -> Result<Vec<u32>, AVPError> {
let mut vec = Vec::new();
for avp in packet.lookup_all(ACCT_SESSION_TIME_TYPE) {
vec.push(avp.encode_u32()?)
}
Ok(vec)
}
pub const ACCT_INPUT_PACKETS_TYPE: AVPType = 47;
pub fn delete_acct_input_packets(packet: &mut Packet) {
packet.delete(ACCT_INPUT_PACKETS_TYPE);
}
pub fn 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<Result<u32, AVPError>> {
packet
.lookup(ACCT_INPUT_PACKETS_TYPE)
.map(|v| v.encode_u32())
}
pub fn lookup_all_acct_input_packets(packet: &Packet) -> Result<Vec<u32>, AVPError> {
let mut vec = Vec::new();
for avp in packet.lookup_all(ACCT_INPUT_PACKETS_TYPE) {
vec.push(avp.encode_u32()?)
}
Ok(vec)
}
pub const ACCT_OUTPUT_PACKETS_TYPE: AVPType = 48;
pub fn delete_acct_output_packets(packet: &mut Packet) {
packet.delete(ACCT_OUTPUT_PACKETS_TYPE);
}
pub fn 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<Result<u32, AVPError>> {
packet
.lookup(ACCT_OUTPUT_PACKETS_TYPE)
.map(|v| v.encode_u32())
}
pub fn lookup_all_acct_output_packets(packet: &Packet) -> Result<Vec<u32>, AVPError> {
let mut vec = Vec::new();
for avp in packet.lookup_all(ACCT_OUTPUT_PACKETS_TYPE) {
vec.push(avp.encode_u32()?)
}
Ok(vec)
}
pub const ACCT_TERMINATE_CAUSE_TYPE: AVPType = 49;
pub fn delete_acct_terminate_cause(packet: &mut Packet) {
packet.delete(ACCT_TERMINATE_CAUSE_TYPE);
}
pub fn add_acct_terminate_cause(packet: &mut Packet, value: AcctTerminateCause) {
packet.add(AVP::from_u32(ACCT_TERMINATE_CAUSE_TYPE, value));
}
pub fn lookup_acct_terminate_cause(
packet: &Packet,
) -> Option<Result<AcctTerminateCause, AVPError>> {
packet
.lookup(ACCT_TERMINATE_CAUSE_TYPE)
.map(|v| Ok(v.encode_u32()? as AcctTerminateCause))
}
pub fn lookup_all_acct_terminate_cause(
packet: &Packet,
) -> Result<Vec<AcctTerminateCause>, AVPError> {
let mut vec = Vec::new();
for avp in packet.lookup_all(ACCT_TERMINATE_CAUSE_TYPE) {
vec.push(avp.encode_u32()? as AcctTerminateCause)
}
Ok(vec)
}
pub const ACCT_MULTI_SESSION_ID_TYPE: AVPType = 50;
pub fn delete_acct_multi_session_id(packet: &mut Packet) {
packet.delete(ACCT_MULTI_SESSION_ID_TYPE);
}
pub fn 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<Result<String, AVPError>> {
packet
.lookup(ACCT_MULTI_SESSION_ID_TYPE)
.map(|v| v.encode_string())
}
pub fn lookup_all_acct_multi_session_id(packet: &Packet) -> Result<Vec<String>, AVPError> {
let mut vec = Vec::new();
for avp in packet.lookup_all(ACCT_MULTI_SESSION_ID_TYPE) {
vec.push(avp.encode_string()?)
}
Ok(vec)
}
pub const ACCT_LINK_COUNT_TYPE: AVPType = 51;
pub fn delete_acct_link_count(packet: &mut Packet) {
packet.delete(ACCT_LINK_COUNT_TYPE);
}
pub fn add_acct_link_count(packet: &mut Packet, value: u32) {
packet.add(AVP::from_u32(ACCT_LINK_COUNT_TYPE, value));
}
pub fn lookup_acct_link_count(packet: &Packet) -> Option<Result<u32, AVPError>> {
packet.lookup(ACCT_LINK_COUNT_TYPE).map(|v| v.encode_u32())
}
pub fn lookup_all_acct_link_count(packet: &Packet) -> Result<Vec<u32>, AVPError> {
let mut vec = Vec::new();
for avp in packet.lookup_all(ACCT_LINK_COUNT_TYPE) {
vec.push(avp.encode_u32()?)
}
Ok(vec)
}
pub type AcctAuthentic = u32;
pub const ACCT_AUTHENTIC_RADIUS: AcctAuthentic = 1;
pub const ACCT_AUTHENTIC_LOCAL: AcctAuthentic = 2;
pub const ACCT_AUTHENTIC_REMOTE: AcctAuthentic = 3;
pub const ACCT_AUTHENTIC_DIAMETER: AcctAuthentic = 4;
pub type AcctStatusType = u32;
pub const ACCT_STATUS_TYPE_START: AcctStatusType = 1;
pub const ACCT_STATUS_TYPE_STOP: AcctStatusType = 2;
pub const ACCT_STATUS_TYPE_ALIVE: AcctStatusType = 3;
pub const ACCT_STATUS_TYPE_INTERIM_UPDATE: AcctStatusType = 3;
pub const ACCT_STATUS_TYPE_ACCOUNTING_ON: AcctStatusType = 7;
pub const ACCT_STATUS_TYPE_ACCOUNTING_OFF: AcctStatusType = 8;
pub const ACCT_STATUS_TYPE_FAILED: AcctStatusType = 15;
pub type AcctTerminateCause = u32;
pub const ACCT_TERMINATE_CAUSE_USER_REQUEST: AcctTerminateCause = 1;
pub const ACCT_TERMINATE_CAUSE_LOST_CARRIER: AcctTerminateCause = 2;
pub const ACCT_TERMINATE_CAUSE_LOST_SERVICE: AcctTerminateCause = 3;
pub const ACCT_TERMINATE_CAUSE_IDLE_TIMEOUT: AcctTerminateCause = 4;
pub const ACCT_TERMINATE_CAUSE_SESSION_TIMEOUT: AcctTerminateCause = 5;
pub const ACCT_TERMINATE_CAUSE_ADMIN_RESET: AcctTerminateCause = 6;
pub const ACCT_TERMINATE_CAUSE_ADMIN_REBOOT: AcctTerminateCause = 7;
pub const ACCT_TERMINATE_CAUSE_PORT_ERROR: AcctTerminateCause = 8;
pub const ACCT_TERMINATE_CAUSE_NAS_ERROR: AcctTerminateCause = 9;
pub const ACCT_TERMINATE_CAUSE_NAS_REQUEST: AcctTerminateCause = 10;
pub const ACCT_TERMINATE_CAUSE_NAS_REBOOT: AcctTerminateCause = 11;
pub const ACCT_TERMINATE_CAUSE_PORT_UNNEEDED: AcctTerminateCause = 12;
pub const ACCT_TERMINATE_CAUSE_PORT_PREEMPTED: AcctTerminateCause = 13;
pub const ACCT_TERMINATE_CAUSE_PORT_SUSPENDED: AcctTerminateCause = 14;
pub const ACCT_TERMINATE_CAUSE_SERVICE_UNAVAILABLE: AcctTerminateCause = 15;
pub const ACCT_TERMINATE_CAUSE_CALLBACK: AcctTerminateCause = 16;
pub const ACCT_TERMINATE_CAUSE_USER_ERROR: AcctTerminateCause = 17;
pub const ACCT_TERMINATE_CAUSE_HOST_REQUEST: AcctTerminateCause = 18;