use libc::{c_char, c_int, c_void, size_t};
#[repr(C)]
pub struct ScamperAddrT {
_opaque: [u8; 0],
}
pub const SCAMPER_ADDR_TYPE_IPV4: c_int = 1;
pub const SCAMPER_ADDR_TYPE_IPV6: c_int = 2;
pub const SCAMPER_ADDR_TYPE_ETHERNET: c_int = 3;
unsafe extern "C" {
pub fn scamper_addr_free(sa: *mut ScamperAddrT);
pub fn scamper_addr_use(sa: *mut ScamperAddrT) -> *mut ScamperAddrT;
pub fn scamper_addr_fromstr(kind: c_int, addr: *const c_char) -> *mut ScamperAddrT;
pub fn scamper_addr_alloc(kind: c_int, addr: *const c_void) -> *mut ScamperAddrT;
pub fn scamper_addr_tostr(
sa: *const ScamperAddrT,
dst: *mut c_char,
size: size_t,
) -> *const c_char;
pub fn scamper_addr_cmp(a: *const ScamperAddrT, b: *const ScamperAddrT) -> c_int;
pub fn scamper_addr_human_cmp(a: *const ScamperAddrT, b: *const ScamperAddrT) -> c_int;
pub fn scamper_addr_islinklocal(a: *const ScamperAddrT) -> c_int;
pub fn scamper_addr_isrfc1918(a: *const ScamperAddrT) -> c_int;
pub fn scamper_addr_isunicast(a: *const ScamperAddrT) -> c_int;
pub fn scamper_addr_is6to4(a: *const ScamperAddrT) -> c_int;
pub fn scamper_addr_isreserved(a: *const ScamperAddrT) -> c_int;
pub fn scamper_addr_isipv4(a: *const ScamperAddrT) -> c_int;
pub fn scamper_addr_isipv6(a: *const ScamperAddrT) -> c_int;
pub fn scamper_addr_isethernet(a: *const ScamperAddrT) -> c_int;
pub fn scamper_addr_isfirewire(a: *const ScamperAddrT) -> c_int;
pub fn scamper_addr_addr_get(addr: *const ScamperAddrT) -> *const c_void;
pub fn scamper_addr_type_get(addr: *const ScamperAddrT) -> c_int;
pub fn scamper_addr_len_get(addr: *const ScamperAddrT) -> size_t;
}