use std::net::Ipv6Addr;
use crate::interface::ipv6_addr_flags::Ipv6AddrFlags;
use super::lifreq::{SIOCGLIFFLAGS, get_lifreq};
const IFF_DEPRECATED: u64 = 0x0000040000;
const IFF_TEMPORARY: u64 = 0x0800000000;
const IFF_DUPLICATE: u64 = 0x4000000000;
pub(crate) fn get_ipv6_addr_flags(ifname: &str, _addr: &Ipv6Addr) -> Ipv6AddrFlags {
let flags = get_lifreq(libc::AF_INET6, ifname, SIOCGLIFFLAGS)
.map(|req| unsafe { req.flags() })
.unwrap_or(0);
Ipv6AddrFlags {
deprecated: flags & IFF_DEPRECATED != 0,
temporary: flags & IFF_TEMPORARY != 0,
tentative: false,
duplicated: flags & IFF_DUPLICATE != 0,
permanent: false,
}
}