use crate::core::avp::{AVPError, AVPType, AVP};
use crate::core::packet::Packet;
pub const DELEGATED_IPV6_PREFIX_TYPE: AVPType = 123;
pub fn delete_delegated_ipv6_prefix(packet: &mut Packet) {
packet.delete(DELEGATED_IPV6_PREFIX_TYPE);
}
pub fn add_delegated_ipv6_prefix(packet: &mut Packet, value: &[u8]) -> Result<(), AVPError> {
packet.add(AVP::from_ipv6_prefix(DELEGATED_IPV6_PREFIX_TYPE, value)?);
Ok(())
}
pub fn lookup_delegated_ipv6_prefix(packet: &Packet) -> Option<Result<Vec<u8>, AVPError>> {
packet
.lookup(DELEGATED_IPV6_PREFIX_TYPE)
.map(|v| v.encode_ipv6_prefix())
}
pub fn lookup_all_delegated_ipv6_prefix(packet: &Packet) -> Result<Vec<Vec<u8>>, AVPError> {
let mut vec = Vec::new();
for avp in packet.lookup_all(DELEGATED_IPV6_PREFIX_TYPE) {
vec.push(avp.encode_ipv6_prefix()?)
}
Ok(vec)
}