systemconfiguration-rs 0.2.1

Safe Rust bindings for Apple's SystemConfiguration framework via a Swift bridge on macOS
Documentation
use std::ffi::c_void;

use super::core::Handle;

pub(crate) type ReachabilityCallback = Option<unsafe extern "C" fn(flags: u32, info: *mut c_void)>;

unsafe extern "C" {
    pub(crate) fn sc_reachability_create_with_name(name: *const libc::c_char) -> Handle;
    pub(crate) fn sc_reachability_create_with_address(bytes: *const u8, count: isize) -> Handle;
    pub(crate) fn sc_reachability_create_with_address_pair(
        local_bytes: *const u8,
        local_count: isize,
        remote_bytes: *const u8,
        remote_count: isize,
    ) -> Handle;
    pub(crate) fn sc_reachability_get_flags(raw: Handle, out_flags: *mut u32) -> u8;
    pub(crate) fn sc_reachability_set_callback(raw: Handle, callback: ReachabilityCallback, info: *mut c_void) -> u8;
    pub(crate) fn sc_reachability_schedule_with_run_loop_current(raw: Handle) -> u8;
    pub(crate) fn sc_reachability_unschedule_from_run_loop_current(raw: Handle) -> u8;
}