baryl 0.0.2

Public SDK for Baryl, a full-system emulation and introspection engine
/* automatically generated by rust-bindgen 0.72.1 */

pub const BARYL_NET_ABI_VERSION: u32 = 2;
pub const BARYL_NET_MIN_ABI_VERSION: u32 = 2;
pub const BARYL_NET_SOCKET_NONE: u32 = 0;
pub const BARYL_TCP_CLOSED: u32 = 0;
pub const BARYL_TCP_LISTENING: u32 = 1;
pub const BARYL_TCP_OPENING: u32 = 2;
pub const BARYL_TCP_ESTABLISHED: u32 = 3;
pub const BARYL_TCP_CLOSING: u32 = 4;
pub type NetSocket = u32;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NetRef {
    pub ctx: *mut ::core::ffi::c_void,
    pub vtable: *const NetVtable,
}
impl Default for NetRef {
    fn default() -> Self {
        let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct NetEndpoint {
    pub ip: u32,
    pub port: u16,
    pub reserved: u16,
}
pub type NetFrameFn = ::core::option::Option<
    unsafe extern "C" fn(
        obj: *mut ::core::ffi::c_void,
        ctl: *mut ::core::ffi::c_void,
        frame: *const u8,
        len: u64,
    ),
>;
pub type NetPollFn = ::core::option::Option<
    unsafe extern "C" fn(
        obj: *mut ::core::ffi::c_void,
        ctl: *mut ::core::ffi::c_void,
        virtual_ns: u64,
    ),
>;
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct NetCallbacks {
    pub on_guest_tx: NetFrameFn,
    pub on_guest_rx: NetFrameFn,
    pub on_poll: NetPollFn,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct NetVtable {
    pub guest_ip: ::core::option::Option<unsafe extern "C" fn(n: NetRef) -> u32>,
    pub guest_mac:
        ::core::option::Option<unsafe extern "C" fn(n: NetRef, out: *mut u8) -> ::core::ffi::c_int>,
    pub dequeue_guest_tx:
        ::core::option::Option<unsafe extern "C" fn(n: NetRef, out: *mut u8, cap: u64) -> u64>,
    pub enqueue_guest_rx:
        ::core::option::Option<unsafe extern "C" fn(n: NetRef, frame: *const u8, len: u64)>,
    pub tcp_connect: ::core::option::Option<
        unsafe extern "C" fn(
            n: NetRef,
            remote_ip: u32,
            remote_port: u16,
            local_port: u16,
        ) -> NetSocket,
    >,
    pub tcp_listen: ::core::option::Option<
        unsafe extern "C" fn(n: NetRef, local_ip: u32, local_port: u16) -> NetSocket,
    >,
    pub tcp_state: ::core::option::Option<unsafe extern "C" fn(n: NetRef, s: NetSocket) -> u32>,
    pub tcp_send: ::core::option::Option<
        unsafe extern "C" fn(n: NetRef, s: NetSocket, buf: *const u8, len: u64) -> u64,
    >,
    pub tcp_receive: ::core::option::Option<
        unsafe extern "C" fn(n: NetRef, s: NetSocket, out: *mut u8, cap: u64) -> u64,
    >,
    pub tcp_remote_endpoint: ::core::option::Option<
        unsafe extern "C" fn(n: NetRef, s: NetSocket, out: *mut NetEndpoint) -> ::core::ffi::c_int,
    >,
    pub tcp_close: ::core::option::Option<unsafe extern "C" fn(n: NetRef, s: NetSocket)>,
    pub udp_open: ::core::option::Option<
        unsafe extern "C" fn(n: NetRef, local_ip: u32, local_port: u16) -> NetSocket,
    >,
    pub udp_send_to: ::core::option::Option<
        unsafe extern "C" fn(
            n: NetRef,
            s: NetSocket,
            remote_ip: u32,
            remote_port: u16,
            payload: *const u8,
            len: u64,
        ) -> u64,
    >,
    pub udp_receive_from: ::core::option::Option<
        unsafe extern "C" fn(
            n: NetRef,
            s: NetSocket,
            from: *mut NetEndpoint,
            out: *mut u8,
            cap: u64,
        ) -> u64,
    >,
    pub udp_close: ::core::option::Option<unsafe extern "C" fn(n: NetRef, s: NetSocket)>,
    pub take_rx_ring_dropped: ::core::option::Option<unsafe extern "C" fn(n: NetRef) -> u64>,
    pub take_tx_ring_dropped: ::core::option::Option<unsafe extern "C" fn(n: NetRef) -> u64>,
}