use libc::{c_char, c_int, c_void, size_t, timeval};
#[repr(C)]
pub struct ScamperCtrlT {
_opaque: [u8; 0],
}
#[repr(C)]
pub struct ScamperInstT {
_opaque: [u8; 0],
}
#[repr(C)]
pub struct ScamperAttpT {
_opaque: [u8; 0],
}
#[repr(C)]
pub struct ScamperTaskT {
_opaque: [u8; 0],
}
#[repr(C)]
pub struct ScamperMuxT {
_opaque: [u8; 0],
}
#[repr(C)]
pub struct ScamperVpsetT {
_opaque: [u8; 0],
}
#[repr(C)]
pub struct ScamperVpT {
_opaque: [u8; 0],
}
pub const SCAMPER_CTRL_TYPE_DATA: u8 = 1;
pub const SCAMPER_CTRL_TYPE_MORE: u8 = 2;
pub const SCAMPER_CTRL_TYPE_ERR: u8 = 3;
pub const SCAMPER_CTRL_TYPE_EOF: u8 = 4;
pub const SCAMPER_CTRL_TYPE_FATAL: u8 = 5;
pub type ScamperCtrlCbT = unsafe extern "C" fn(
inst: *mut ScamperInstT,
kind: u8,
task: *mut ScamperTaskT,
data: *const c_void,
len: size_t,
);
unsafe extern "C" {
pub fn scamper_ctrl_alloc(cb: ScamperCtrlCbT) -> *mut ScamperCtrlT;
pub fn scamper_ctrl_wait(ctrl: *mut ScamperCtrlT, to: *mut timeval) -> c_int;
pub fn scamper_ctrl_free(ctrl: *mut ScamperCtrlT);
pub fn scamper_ctrl_isdone(ctrl: *mut ScamperCtrlT) -> c_int;
pub fn scamper_ctrl_param_get(ctrl: *const ScamperCtrlT) -> *mut c_void;
pub fn scamper_ctrl_param_set(ctrl: *mut ScamperCtrlT, param: *mut c_void);
pub fn scamper_ctrl_strerror(ctrl: *const ScamperCtrlT) -> *const c_char;
pub fn scamper_inst_vp(
ctrl: *mut ScamperCtrlT,
vp: *const ScamperVpT,
) -> *mut ScamperInstT;
pub fn scamper_inst_unix(
ctrl: *mut ScamperCtrlT,
attp: *const ScamperAttpT,
path: *const c_char,
) -> *mut ScamperInstT;
pub fn scamper_inst_inet(
ctrl: *mut ScamperCtrlT,
attp: *const ScamperAttpT,
addr: *const c_char,
port: u16,
) -> *mut ScamperInstT;
pub fn scamper_inst_remote(
ctrl: *mut ScamperCtrlT,
path: *const c_char,
) -> *mut ScamperInstT;
pub fn scamper_inst_free(inst: *mut ScamperInstT);
pub fn scamper_inst_do(
inst: *mut ScamperInstT,
cmd: *const c_char,
p: *mut c_void,
) -> *mut ScamperTaskT;
pub fn scamper_inst_done(inst: *mut ScamperInstT) -> c_int;
pub fn scamper_inst_param_get(inst: *const ScamperInstT) -> *mut c_void;
pub fn scamper_inst_param_set(inst: *mut ScamperInstT, param: *mut c_void);
pub fn scamper_inst_ctrl_get(inst: *const ScamperInstT) -> *mut ScamperCtrlT;
pub fn scamper_inst_name_get(inst: *const ScamperInstT) -> *const c_char;
pub fn scamper_inst_vp_get(inst: *const ScamperInstT) -> *mut ScamperVpT;
pub fn scamper_inst_is_muxvp(inst: *const ScamperInstT) -> c_int;
pub fn scamper_inst_is_inet(inst: *const ScamperInstT) -> c_int;
pub fn scamper_inst_is_unix(inst: *const ScamperInstT) -> c_int;
pub fn scamper_inst_is_remote(inst: *const ScamperInstT) -> c_int;
pub fn scamper_task_halt(task: *mut ScamperTaskT) -> c_int;
pub fn scamper_task_param_get(task: *const ScamperTaskT) -> *mut c_void;
pub fn scamper_task_param_set(task: *mut ScamperTaskT, param: *mut c_void);
pub fn scamper_task_free(task: *mut ScamperTaskT);
pub fn scamper_task_use(task: *mut ScamperTaskT) -> *mut ScamperTaskT;
pub fn scamper_mux_add(
ctrl: *mut ScamperCtrlT,
path: *const c_char,
) -> *mut ScamperMuxT;
pub fn scamper_vpset_get(mux: *const ScamperMuxT) -> *mut ScamperVpsetT;
pub fn scamper_vpset_free(vps: *mut ScamperVpsetT);
pub fn scamper_vpset_vp_count(vps: *const ScamperVpsetT) -> size_t;
pub fn scamper_vpset_vp_get(vps: *const ScamperVpsetT, i: size_t) -> *mut ScamperVpT;
pub fn scamper_vp_free(vp: *mut ScamperVpT);
pub fn scamper_vp_use(vp: *mut ScamperVpT) -> *mut ScamperVpT;
pub fn scamper_vp_name_get(vp: *const ScamperVpT) -> *const c_char;
pub fn scamper_vp_shortname_get(vp: *const ScamperVpT) -> *const c_char;
pub fn scamper_vp_ipv4_get(vp: *const ScamperVpT) -> *const c_char;
pub fn scamper_vp_asn4_get(vp: *const ScamperVpT) -> *const c_char;
pub fn scamper_vp_cc_get(vp: *const ScamperVpT) -> *const c_char;
pub fn scamper_vp_st_get(vp: *const ScamperVpT) -> *const c_char;
pub fn scamper_vp_place_get(vp: *const ScamperVpT) -> *const c_char;
pub fn scamper_vp_latlong_get(vp: *const ScamperVpT) -> *const c_char;
pub fn scamper_vp_iata_get(vp: *const ScamperVpT) -> *const c_char;
pub fn scamper_vp_tagc_get(vp: *const ScamperVpT) -> size_t;
pub fn scamper_vp_tag_get(vp: *const ScamperVpT, i: size_t) -> *const c_char;
pub fn scamper_attp_alloc() -> *mut ScamperAttpT;
pub fn scamper_attp_listid_set(attp: *mut ScamperAttpT, list_id: u32);
pub fn scamper_attp_listname_set(attp: *mut ScamperAttpT, list_name: *mut c_char) -> c_int;
pub fn scamper_attp_listdescr_set(attp: *mut ScamperAttpT, list_descr: *mut c_char) -> c_int;
pub fn scamper_attp_listmonitor_set(
attp: *mut ScamperAttpT,
list_monitor: *mut c_char,
) -> c_int;
pub fn scamper_attp_cycleid_set(attp: *mut ScamperAttpT, cycle_id: u32);
pub fn scamper_attp_priority_set(attp: *mut ScamperAttpT, priority: u32);
pub fn scamper_attp_free(attp: *mut ScamperAttpT);
}