///|
#borrow(path)
extern "c" fn pcap_open_ffi(path : Bytes, snaplen : Int, linktype : Int) -> Int = "lockwire_native_pcap_open"

///|
#borrow(frame)
extern "c" fn pcap_write_packet_ffi(fd : Int, frame : Bytes) -> Int = "lockwire_native_pcap_write_packet"

///|
#borrow(frame)
extern "c" fn pcap_write_packet_at_ffi(
  fd : Int,
  frame : Bytes,
  sec : Int,
  usec : Int,
) -> Int = "lockwire_native_pcap_write_packet_at"

///|
extern "c" fn pcap_close_ffi(fd : Int) -> Int = "lockwire_native_pcap_close"

///|
fn ffi_pcap_open(path : Bytes, snaplen : Int, linktype : Int) -> Int {
  pcap_open_ffi(path, snaplen, linktype)
}

///|
fn ffi_pcap_write_packet(fd : Int, frame : Bytes) -> Int {
  pcap_write_packet_ffi(fd, frame)
}

///|
fn ffi_pcap_write_packet_at(
  fd : Int,
  frame : Bytes,
  sec : Int,
  usec : Int,
) -> Int {
  pcap_write_packet_at_ffi(fd, frame, sec, usec)
}

///|
fn ffi_pcap_close(fd : Int) -> Int {
  pcap_close_ffi(fd)
}