use libc::{c_char, c_int, size_t, timeval};
use super::scamper_addr::ScamperAddrT;
use super::scamper_list::{ScamperListT, ScamperCycleT};
use super::scamper_icmpext::ScamperIcmpextsT;
#[repr(C)]
pub struct ScamperTraceT {
_opaque: [u8; 0],
}
#[repr(C)]
pub struct ScamperTraceProbeT {
_opaque: [u8; 0],
}
#[repr(C)]
pub struct ScamperTraceReplyT {
_opaque: [u8; 0],
}
#[repr(C)]
pub struct ScamperTraceHopiterT {
_opaque: [u8; 0],
}
#[repr(C)]
pub struct ScamperTracePmtudT {
_opaque: [u8; 0],
}
#[repr(C)]
pub struct ScamperTracePmtudNoteT {
_opaque: [u8; 0],
}
#[repr(C)]
pub struct ScamperTracePmtudNoteiterT {
_opaque: [u8; 0],
}
pub const SCAMPER_TRACE_TYPE_ICMP_ECHO_PARIS: u8 = 4;
pub const SCAMPER_TRACE_FLAG_RXERR: u32 = 0x0100;
pub const SCAMPER_TRACE_REPLY_FLAG_REPLY_TTL: u8 = 0x01;
pub const SCAMPER_TRACE_STOP_NONE: u8 = 0;
pub const SCAMPER_TRACE_STOP_COMPLETED: u8 = 1;
pub const SCAMPER_TRACE_STOP_UNREACH: u8 = 2;
pub const SCAMPER_TRACE_STOP_ICMP: u8 = 3;
pub const SCAMPER_TRACE_STOP_LOOP: u8 = 4;
pub const SCAMPER_TRACE_STOP_GAPLIMIT: u8 = 5;
pub const SCAMPER_TRACE_STOP_ERROR: u8 = 6;
pub const SCAMPER_TRACE_STOP_HOPLIMIT: u8 = 7;
pub const SCAMPER_TRACE_STOP_GSS: u8 = 8;
pub const SCAMPER_TRACE_STOP_HALTED: u8 = 9;
pub const SCAMPER_TRACE_STOP_INPROGRESS: u8 = 10;
unsafe extern "C" {
pub fn scamper_trace_tojson(trace: *const ScamperTraceT, l: *mut size_t) -> *mut c_char;
pub fn scamper_trace_totext(trace: *const ScamperTraceT, l: *mut size_t) -> *mut c_char;
pub fn scamper_trace_free(trace: *mut ScamperTraceT);
pub fn scamper_trace_list_get(trace: *const ScamperTraceT) -> *mut ScamperListT;
pub fn scamper_trace_cycle_get(trace: *const ScamperTraceT) -> *mut ScamperCycleT;
pub fn scamper_trace_src_get(trace: *const ScamperTraceT) -> *mut ScamperAddrT;
pub fn scamper_trace_dst_get(trace: *const ScamperTraceT) -> *mut ScamperAddrT;
pub fn scamper_trace_rtr_get(trace: *const ScamperTraceT) -> *mut ScamperAddrT;
pub fn scamper_trace_userid_get(trace: *const ScamperTraceT) -> u32;
pub fn scamper_trace_start_get(trace: *const ScamperTraceT) -> *const timeval;
pub fn scamper_trace_stop_reason_get(trace: *const ScamperTraceT) -> u8;
pub fn scamper_trace_stop_data_get(trace: *const ScamperTraceT) -> u8;
pub fn scamper_trace_errmsg_get(trace: *const ScamperTraceT) -> *const c_char;
pub fn scamper_trace_stop_tostr(
trace: *const ScamperTraceT,
buf: *mut c_char,
len: size_t,
) -> *mut c_char;
pub fn scamper_trace_hop_count_get(trace: *const ScamperTraceT) -> u16;
pub fn scamper_trace_stop_hop_get(trace: *const ScamperTraceT) -> u8;
pub fn scamper_trace_type_get(trace: *const ScamperTraceT) -> u8;
pub fn scamper_trace_attempts_get(trace: *const ScamperTraceT) -> u8;
pub fn scamper_trace_hoplimit_get(trace: *const ScamperTraceT) -> u8;
pub fn scamper_trace_squeries_get(trace: *const ScamperTraceT) -> u8;
pub fn scamper_trace_gaplimit_get(trace: *const ScamperTraceT) -> u8;
pub fn scamper_trace_gapaction_get(trace: *const ScamperTraceT) -> u8;
pub fn scamper_trace_firsthop_get(trace: *const ScamperTraceT) -> u8;
pub fn scamper_trace_tos_get(trace: *const ScamperTraceT) -> u8;
pub fn scamper_trace_wait_timeout_get(trace: *const ScamperTraceT) -> *const timeval;
pub fn scamper_trace_wait_probe_get(trace: *const ScamperTraceT) -> *const timeval;
pub fn scamper_trace_loops_get(trace: *const ScamperTraceT) -> u8;
pub fn scamper_trace_loopaction_get(trace: *const ScamperTraceT) -> u8;
pub fn scamper_trace_confidence_get(trace: *const ScamperTraceT) -> u8;
pub fn scamper_trace_size_get(trace: *const ScamperTraceT) -> u16;
pub fn scamper_trace_sport_get(trace: *const ScamperTraceT) -> u16;
pub fn scamper_trace_dport_get(trace: *const ScamperTraceT) -> u16;
pub fn scamper_trace_offset_get(trace: *const ScamperTraceT) -> u16;
pub fn scamper_trace_flags_get(trace: *const ScamperTraceT) -> u32;
pub fn scamper_trace_payload_len_get(trace: *const ScamperTraceT) -> u16;
pub fn scamper_trace_payload_get(trace: *const ScamperTraceT) -> *const u8;
pub fn scamper_trace_probec_get(trace: *const ScamperTraceT) -> u16;
pub fn scamper_trace_type_is_udp(trace: *const ScamperTraceT) -> c_int;
pub fn scamper_trace_type_is_tcp(trace: *const ScamperTraceT) -> c_int;
pub fn scamper_trace_type_is_icmp(trace: *const ScamperTraceT) -> c_int;
pub fn scamper_trace_flag_is_icmpcsumdp(trace: *const ScamperTraceT) -> c_int;
pub fn scamper_trace_hopiter_alloc() -> *mut ScamperTraceHopiterT;
pub fn scamper_trace_hopiter_free(hi: *mut ScamperTraceHopiterT);
pub fn scamper_trace_hopiter_reset(hi: *mut ScamperTraceHopiterT);
pub fn scamper_trace_hopiter_ttl_set(
hi: *mut ScamperTraceHopiterT,
ttl: u8,
max: u8,
) -> c_int;
pub fn scamper_trace_hopiter_probe_get(
hi: *const ScamperTraceHopiterT,
) -> *mut ScamperTraceProbeT;
pub fn scamper_trace_hopiter_next(
trace: *const ScamperTraceT,
hi: *mut ScamperTraceHopiterT,
) -> *mut ScamperTraceReplyT;
pub fn scamper_trace_probe_use(probe: *mut ScamperTraceProbeT) -> *mut ScamperTraceProbeT;
pub fn scamper_trace_probe_free(probe: *mut ScamperTraceProbeT);
pub fn scamper_trace_probe_id_get(probe: *const ScamperTraceProbeT) -> u8;
pub fn scamper_trace_probe_ttl_get(probe: *const ScamperTraceProbeT) -> u8;
pub fn scamper_trace_probe_size_get(probe: *const ScamperTraceProbeT) -> u16;
pub fn scamper_trace_probe_tx_get(probe: *const ScamperTraceProbeT) -> *const timeval;
pub fn scamper_trace_reply_use(reply: *mut ScamperTraceReplyT) -> *mut ScamperTraceReplyT;
pub fn scamper_trace_reply_free(reply: *mut ScamperTraceReplyT);
pub fn scamper_trace_reply_addr_get(reply: *const ScamperTraceReplyT) -> *mut ScamperAddrT;
pub fn scamper_trace_reply_name_get(reply: *const ScamperTraceReplyT) -> *const c_char;
pub fn scamper_trace_reply_flags_get(reply: *const ScamperTraceReplyT) -> u32;
pub fn scamper_trace_reply_rtt_get(reply: *const ScamperTraceReplyT) -> *const timeval;
pub fn scamper_trace_reply_ttl_get(reply: *const ScamperTraceReplyT) -> u8;
pub fn scamper_trace_reply_tos_get(reply: *const ScamperTraceReplyT) -> u8;
pub fn scamper_trace_reply_size_get(reply: *const ScamperTraceReplyT) -> u16;
pub fn scamper_trace_reply_ipid_get(reply: *const ScamperTraceReplyT) -> u16;
pub fn scamper_trace_reply_icmp_type_get(reply: *const ScamperTraceReplyT) -> u8;
pub fn scamper_trace_reply_icmp_code_get(reply: *const ScamperTraceReplyT) -> u8;
pub fn scamper_trace_reply_is_tcp(reply: *const ScamperTraceReplyT) -> c_int;
pub fn scamper_trace_reply_is_icmp(reply: *const ScamperTraceReplyT) -> c_int;
pub fn scamper_trace_reply_is_icmp_q(reply: *const ScamperTraceReplyT) -> c_int;
pub fn scamper_trace_reply_is_icmp_unreach_port(
reply: *const ScamperTraceReplyT,
) -> c_int;
pub fn scamper_trace_reply_is_icmp_echo_reply(reply: *const ScamperTraceReplyT) -> c_int;
pub fn scamper_trace_reply_is_icmp_ttl_exp(reply: *const ScamperTraceReplyT) -> c_int;
pub fn scamper_trace_reply_is_icmp_ptb(reply: *const ScamperTraceReplyT) -> c_int;
pub fn scamper_trace_reply_icmp_nhmtu_get(reply: *const ScamperTraceReplyT) -> u16;
pub fn scamper_trace_reply_icmp_q_ttl_get(reply: *const ScamperTraceReplyT) -> u8;
pub fn scamper_trace_reply_icmp_q_tos_get(reply: *const ScamperTraceReplyT) -> u8;
pub fn scamper_trace_reply_icmp_q_ipl_get(reply: *const ScamperTraceReplyT) -> u16;
pub fn scamper_trace_reply_tcp_flags_get(reply: *const ScamperTraceReplyT) -> u8;
pub fn scamper_trace_reply_icmp_exts_get(
reply: *const ScamperTraceReplyT,
) -> *mut ScamperIcmpextsT;
pub fn scamper_trace_pmtud_get(trace: *const ScamperTraceT) -> *mut ScamperTracePmtudT;
pub fn scamper_trace_pmtud_free(pmtud: *mut ScamperTracePmtudT);
pub fn scamper_trace_pmtud_use(pmtud: *mut ScamperTracePmtudT) -> *mut ScamperTracePmtudT;
pub fn scamper_trace_pmtud_ver_get(pmtud: *const ScamperTracePmtudT) -> u8;
pub fn scamper_trace_pmtud_pmtu_get(pmtud: *const ScamperTracePmtudT) -> u16;
pub fn scamper_trace_pmtud_ifmtu_get(pmtud: *const ScamperTracePmtudT) -> u16;
pub fn scamper_trace_pmtud_outmtu_get(pmtud: *const ScamperTracePmtudT) -> u16;
pub fn scamper_trace_pmtud_note_use(
n: *mut ScamperTracePmtudNoteT,
) -> *mut ScamperTracePmtudNoteT;
pub fn scamper_trace_pmtud_note_free(n: *mut ScamperTracePmtudNoteT);
pub fn scamper_trace_pmtud_note_probe_get(
n: *const ScamperTracePmtudNoteT,
) -> *mut ScamperTraceProbeT;
pub fn scamper_trace_pmtud_note_reply_get(
n: *const ScamperTracePmtudNoteT,
) -> *mut ScamperTraceReplyT;
pub fn scamper_trace_pmtud_note_nhmtu_get(n: *const ScamperTracePmtudNoteT) -> u16;
pub fn scamper_trace_pmtud_note_type_get(n: *const ScamperTracePmtudNoteT) -> u8;
pub fn scamper_trace_pmtud_note_type_tostr(
n: *const ScamperTracePmtudNoteT,
buf: *mut c_char,
len: size_t,
) -> *mut c_char;
pub fn scamper_trace_pmtud_noteiter_alloc() -> *mut ScamperTracePmtudNoteiterT;
pub fn scamper_trace_pmtud_noteiter_free(ni: *mut ScamperTracePmtudNoteiterT);
pub fn scamper_trace_pmtud_noteiter_next(
trace: *const ScamperTraceT,
ni: *mut ScamperTracePmtudNoteiterT,
) -> *mut ScamperTracePmtudNoteT;
pub fn scamper_trace_pmtud_noteiter_dist_get(
trace: *const ScamperTraceT,
ni: *mut ScamperTracePmtudNoteiterT,
) -> u8;
}