systemconfiguration-rs 0.2.1

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

use super::core::Handle;

unsafe extern "C" {
    pub(crate) fn sc_network_interface_get_type_id() -> u64;
    pub(crate) fn sc_network_interface_copy_all() -> Handle;
    pub(crate) fn sc_network_interface_copy_ipv4() -> Handle;
    pub(crate) fn sc_network_interface_copy_supported_interface_types(raw: Handle) -> Handle;
    pub(crate) fn sc_network_interface_copy_supported_protocol_types(raw: Handle) -> Handle;
    pub(crate) fn sc_network_interface_create_with_interface(raw: Handle, interface_type: *const c_char) -> Handle;
    pub(crate) fn sc_network_interface_copy_bsd_name(raw: Handle) -> Handle;
    pub(crate) fn sc_network_interface_copy_configuration(raw: Handle) -> Handle;
    pub(crate) fn sc_network_interface_copy_extended_configuration(raw: Handle, extended_type: *const c_char) -> Handle;
    pub(crate) fn sc_network_interface_copy_hardware_address(raw: Handle) -> Handle;
    pub(crate) fn sc_network_interface_copy_underlying_interface(raw: Handle) -> Handle;
    pub(crate) fn sc_network_interface_copy_interface_type(raw: Handle) -> Handle;
    pub(crate) fn sc_network_interface_copy_localized_display_name(raw: Handle) -> Handle;
    pub(crate) fn sc_network_interface_copy_media_options_current(raw: Handle, filter: u8) -> Handle;
    pub(crate) fn sc_network_interface_copy_media_options_active(raw: Handle, filter: u8) -> Handle;
    pub(crate) fn sc_network_interface_copy_media_options_available(raw: Handle, filter: u8) -> Handle;
    pub(crate) fn sc_network_interface_copy_media_subtypes(available_raw: Handle) -> Handle;
    pub(crate) fn sc_network_interface_copy_media_subtype_options(
        available_raw: Handle,
        subtype: *const c_char,
    ) -> Handle;
    pub(crate) fn sc_network_interface_copy_mtu_info(raw: Handle) -> Handle;
    pub(crate) fn sc_network_interface_set_configuration(raw: Handle, config_raw: Handle) -> u8;
    pub(crate) fn sc_network_interface_set_extended_configuration(
        raw: Handle,
        extended_type: *const c_char,
        config_raw: Handle,
    ) -> u8;
    pub(crate) fn sc_network_interface_set_media_options(
        raw: Handle,
        subtype: *const c_char,
        options: *const *const c_char,
        count: isize,
    ) -> u8;
    pub(crate) fn sc_network_interface_set_mtu(raw: Handle, mtu: i32) -> u8;
    pub(crate) fn sc_network_interface_force_configuration_refresh(raw: Handle) -> u8;

    pub(crate) fn sc_bond_interface_copy_all(prefs_raw: Handle) -> Handle;
    pub(crate) fn sc_bond_interface_copy_available_member_interfaces(prefs_raw: Handle) -> Handle;
    pub(crate) fn sc_bond_interface_create(prefs_raw: Handle) -> Handle;
    pub(crate) fn sc_bond_interface_remove(raw: Handle) -> u8;
    pub(crate) fn sc_bond_interface_copy_member_interfaces(raw: Handle) -> Handle;
    pub(crate) fn sc_bond_interface_copy_options(raw: Handle) -> Handle;
    pub(crate) fn sc_bond_interface_set_member_interfaces(
        raw: Handle,
        members: *const Handle,
        count: isize,
    ) -> u8;
    pub(crate) fn sc_bond_interface_set_localized_display_name(raw: Handle, name: *const c_char) -> u8;
    pub(crate) fn sc_bond_interface_set_options(raw: Handle, options_raw: Handle) -> u8;
    pub(crate) fn sc_bond_interface_copy_status(raw: Handle) -> Handle;
    pub(crate) fn sc_bond_status_get_type_id() -> u64;
    pub(crate) fn sc_bond_status_copy_device_aggregation_status_key() -> Handle;
    pub(crate) fn sc_bond_status_copy_device_collecting_key() -> Handle;
    pub(crate) fn sc_bond_status_copy_device_distributing_key() -> Handle;
    pub(crate) fn sc_bond_status_copy_member_interfaces(raw: Handle) -> Handle;
    pub(crate) fn sc_bond_status_copy_interface_status(raw: Handle, interface_raw: Handle) -> Handle;

    pub(crate) fn sc_vlan_interface_copy_all(prefs_raw: Handle) -> Handle;
    pub(crate) fn sc_vlan_interface_copy_available_physical_interfaces() -> Handle;
    pub(crate) fn sc_vlan_interface_create(prefs_raw: Handle, physical_raw: Handle, tag: i32) -> Handle;
    pub(crate) fn sc_vlan_interface_remove(raw: Handle) -> u8;
    pub(crate) fn sc_vlan_interface_copy_physical_interface(raw: Handle) -> Handle;
    pub(crate) fn sc_vlan_interface_get_tag(raw: Handle, out_tag: *mut i32) -> u8;
    pub(crate) fn sc_vlan_interface_copy_options(raw: Handle) -> Handle;
    pub(crate) fn sc_vlan_interface_set_physical_interface_and_tag(
        raw: Handle,
        physical_raw: Handle,
        tag: i32,
    ) -> u8;
    pub(crate) fn sc_vlan_interface_set_localized_display_name(raw: Handle, name: *const c_char) -> u8;
    pub(crate) fn sc_vlan_interface_set_options(raw: Handle, options_raw: Handle) -> u8;
}