#![deny(missing_docs)]
#![deny(clippy::allow_attributes_without_reason)]
#![deny(clippy::arithmetic_side_effects)]
#![deny(clippy::as_ptr_cast_mut)]
#![deny(clippy::as_underscore)]
#![deny(clippy::assertions_on_result_states)]
#![deny(clippy::borrow_as_ptr)]
#![deny(clippy::branches_sharing_code)]
#![deny(clippy::case_sensitive_file_extension_comparisons)]
#![deny(clippy::cast_lossless)]
#![deny(clippy::cast_possible_truncation)]
#![deny(clippy::cast_possible_wrap)]
#![deny(clippy::cast_precision_loss)]
#![deny(clippy::cast_ptr_alignment)]
#![deny(clippy::cast_sign_loss)]
#![deny(clippy::checked_conversions)]
#![deny(clippy::clear_with_drain)]
#![deny(clippy::clone_on_ref_ptr)]
#![deny(clippy::cloned_instead_of_copied)]
#![deny(clippy::cognitive_complexity)]
#![deny(clippy::collection_is_never_read)]
#![deny(clippy::copy_iterator)]
#![deny(clippy::create_dir)]
#![deny(clippy::dbg_macro)]
#![deny(clippy::debug_assert_with_mut_call)]
#![deny(clippy::decimal_literal_representation)]
#![deny(clippy::default_trait_access)]
#![deny(clippy::default_union_representation)]
#![deny(clippy::derive_partial_eq_without_eq)]
#![deny(clippy::doc_link_with_quotes)]
#![deny(clippy::doc_markdown)]
#![deny(clippy::explicit_into_iter_loop)]
#![deny(clippy::explicit_iter_loop)]
#![deny(clippy::fallible_impl_from)]
#![deny(clippy::missing_safety_doc)]
#![deny(clippy::undocumented_unsafe_blocks)]
use std::{
ffi::{CStr, OsStr, OsString},
fs::{symlink_metadata, Metadata},
os::{
raw::{c_char, c_int},
unix::{
ffi::OsStrExt,
fs::{FileTypeExt, MetadataExt},
},
},
path::{Path, PathBuf},
};
#[repr(u8)]
#[allow(non_camel_case_types)]
pub enum lock_state_t {
LOCK_OFF,
LOCK_EXEC,
LOCK_ON,
}
#[repr(u8)]
#[allow(non_camel_case_types)]
pub enum action_t {
ALLOW,
WARN,
FILTER,
DENY,
PANIC,
STOP,
KILL,
EXIT,
}
const EFAULT: i32 = 14;
const EINVAL: i32 = 22;
#[inline(always)]
fn check_stat(stat: &Metadata) -> bool {
if !stat.file_type().is_char_device() {
return false;
}
let rdev = stat.rdev();
let major = (rdev >> 8) & 0xff;
let minor = rdev & 0xff;
major == 1 && minor == 3
}
fn stat<P: AsRef<Path>>(path: P) -> c_int {
match symlink_metadata(path) {
Ok(stat) if check_stat(&stat) => 0,
Ok(_) => -EINVAL,
Err(error) => match error.raw_os_error() {
Some(e) => e.checked_neg().unwrap_or(-EINVAL),
None => -EINVAL,
},
}
}
fn esyd<P: AsRef<Path>>(rule: P, elem: *const c_char, op: u8) -> c_int {
if !matches!(op, b'+' | b'-' | b'^' | b':') {
return -EINVAL;
}
if elem.is_null() {
return -EFAULT;
}
let elem = unsafe { CStr::from_ptr(elem) };
let elem = OsStr::from_bytes(elem.to_bytes());
let mut path = OsString::from("/dev/syd/");
path.push(rule.as_ref());
path.push(OsStr::from_bytes(&[op]));
path.push(elem);
let path = PathBuf::from(path);
stat(path)
}
#[no_mangle]
pub extern "C" fn syd_api() -> c_int {
match stat("/dev/syd/3") {
0 => 3,
n => n,
}
}
#[no_mangle]
pub extern "C" fn syd_check() -> c_int {
stat("/dev/syd")
}
#[no_mangle]
pub extern "C" fn syd_panic() -> c_int {
stat("/dev/syd/panic")
}
#[no_mangle]
pub extern "C" fn syd_reset() -> c_int {
stat("/dev/syd/reset")
}
#[no_mangle]
pub extern "C" fn syd_load(fd: c_int) -> c_int {
let mut path = PathBuf::from("/dev/syd/load");
let mut buf = itoa::Buffer::new();
path.push(buf.format(fd));
stat(path)
}
#[no_mangle]
pub extern "C" fn syd_lock(state: lock_state_t) -> c_int {
match state as u8 {
0 => stat("/dev/syd/lock:off"),
1 => stat("/dev/syd/lock:exec"),
2 => stat("/dev/syd/lock:on"),
_ => -EINVAL,
}
}
#[no_mangle]
pub extern "C" fn syd_enabled_stat() -> bool {
stat("/dev/syd/sandbox/stat?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_stat() -> c_int {
stat("/dev/syd/sandbox/stat:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_stat() -> c_int {
stat("/dev/syd/sandbox/stat:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_read() -> bool {
stat("/dev/syd/sandbox/read?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_read() -> c_int {
stat("/dev/syd/sandbox/read:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_read() -> c_int {
stat("/dev/syd/sandbox/read:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_write() -> bool {
stat("/dev/syd/sandbox/write?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_write() -> c_int {
stat("/dev/syd/sandbox/write:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_write() -> c_int {
stat("/dev/syd/sandbox/write:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_exec() -> bool {
stat("/dev/syd/sandbox/exec?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_exec() -> c_int {
stat("/dev/syd/sandbox/exec:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_exec() -> c_int {
stat("/dev/syd/sandbox/exec:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_ioctl() -> bool {
stat("/dev/syd/sandbox/ioctl?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_ioctl() -> c_int {
stat("/dev/syd/sandbox/ioctl:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_ioctl() -> c_int {
stat("/dev/syd/sandbox/ioctl:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_create() -> bool {
stat("/dev/syd/sandbox/create?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_create() -> c_int {
stat("/dev/syd/sandbox/create:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_create() -> c_int {
stat("/dev/syd/sandbox/create:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_delete() -> bool {
stat("/dev/syd/sandbox/delete?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_delete() -> c_int {
stat("/dev/syd/sandbox/delete:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_delete() -> c_int {
stat("/dev/syd/sandbox/delete:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_rename() -> bool {
stat("/dev/syd/sandbox/rename?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_rename() -> c_int {
stat("/dev/syd/sandbox/rename:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_rename() -> c_int {
stat("/dev/syd/sandbox/rename:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_symlink() -> bool {
stat("/dev/syd/sandbox/symlink?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_symlink() -> c_int {
stat("/dev/syd/sandbox/symlink:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_symlink() -> c_int {
stat("/dev/syd/sandbox/symlink:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_truncate() -> bool {
stat("/dev/syd/sandbox/truncate?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_truncate() -> c_int {
stat("/dev/syd/sandbox/truncate:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_truncate() -> c_int {
stat("/dev/syd/sandbox/truncate:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_chdir() -> bool {
stat("/dev/syd/sandbox/chdir?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_chdir() -> c_int {
stat("/dev/syd/sandbox/chdir:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_chdir() -> c_int {
stat("/dev/syd/sandbox/chdir:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_readdir() -> bool {
stat("/dev/syd/sandbox/readdir?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_readdir() -> c_int {
stat("/dev/syd/sandbox/readdir:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_readdir() -> c_int {
stat("/dev/syd/sandbox/readdir:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_mkdir() -> bool {
stat("/dev/syd/sandbox/mkdir?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_mkdir() -> c_int {
stat("/dev/syd/sandbox/mkdir:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_mkdir() -> c_int {
stat("/dev/syd/sandbox/mkdir:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_chown() -> bool {
stat("/dev/syd/sandbox/chown?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_chown() -> c_int {
stat("/dev/syd/sandbox/chown:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_chown() -> c_int {
stat("/dev/syd/sandbox/chown:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_chgrp() -> bool {
stat("/dev/syd/sandbox/chgrp?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_chgrp() -> c_int {
stat("/dev/syd/sandbox/chgrp:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_chgrp() -> c_int {
stat("/dev/syd/sandbox/chgrp:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_chmod() -> bool {
stat("/dev/syd/sandbox/chmod?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_chmod() -> c_int {
stat("/dev/syd/sandbox/chmod:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_chmod() -> c_int {
stat("/dev/syd/sandbox/chmod:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_chattr() -> bool {
stat("/dev/syd/sandbox/chattr?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_chattr() -> c_int {
stat("/dev/syd/sandbox/chattr:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_chattr() -> c_int {
stat("/dev/syd/sandbox/chattr:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_chroot() -> bool {
stat("/dev/syd/sandbox/chroot?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_chroot() -> c_int {
stat("/dev/syd/sandbox/chroot:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_chroot() -> c_int {
stat("/dev/syd/sandbox/chroot:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_utime() -> bool {
stat("/dev/syd/sandbox/utime?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_utime() -> c_int {
stat("/dev/syd/sandbox/utime:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_utime() -> c_int {
stat("/dev/syd/sandbox/utime:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_mkdev() -> bool {
stat("/dev/syd/sandbox/mkdev?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_mkdev() -> c_int {
stat("/dev/syd/sandbox/mkdev:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_mkdev() -> c_int {
stat("/dev/syd/sandbox/mkdev:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_mkfifo() -> bool {
stat("/dev/syd/sandbox/mkfifo?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_mkfifo() -> c_int {
stat("/dev/syd/sandbox/mkfifo:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_mkfifo() -> c_int {
stat("/dev/syd/sandbox/mkfifo:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_mktemp() -> bool {
stat("/dev/syd/sandbox/mktemp?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_mktemp() -> c_int {
stat("/dev/syd/sandbox/mktemp:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_mktemp() -> c_int {
stat("/dev/syd/sandbox/mktemp:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_net() -> bool {
stat("/dev/syd/sandbox/net?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_net() -> c_int {
stat("/dev/syd/sandbox/net:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_net() -> c_int {
stat("/dev/syd/sandbox/net:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_mem() -> bool {
stat("/dev/syd/sandbox/mem?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_mem() -> c_int {
stat("/dev/syd/sandbox/mem:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_mem() -> c_int {
stat("/dev/syd/sandbox/mem:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_pid() -> bool {
stat("/dev/syd/sandbox/pid?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_pid() -> c_int {
stat("/dev/syd/sandbox/pid:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_pid() -> c_int {
stat("/dev/syd/sandbox/pid:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_lock() -> bool {
stat("/dev/syd/sandbox/lock?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enabled_crypt() -> bool {
stat("/dev/syd/sandbox/crypt?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enabled_proxy() -> bool {
stat("/dev/syd/sandbox/proxy?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enabled_force() -> bool {
stat("/dev/syd/sandbox/force?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_force() -> c_int {
stat("/dev/syd/sandbox/force:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_force() -> c_int {
stat("/dev/syd/sandbox/force:off")
}
#[no_mangle]
pub extern "C" fn syd_enabled_tpe() -> bool {
stat("/dev/syd/sandbox/tpe?") == 0
}
#[no_mangle]
pub extern "C" fn syd_enable_tpe() -> c_int {
stat("/dev/syd/sandbox/tpe:on")
}
#[no_mangle]
pub extern "C" fn syd_disable_tpe() -> c_int {
stat("/dev/syd/sandbox/tpe:off")
}
#[no_mangle]
pub extern "C" fn syd_default_stat(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/stat:allow",
action_t::WARN => "/dev/syd/default/stat:warn",
action_t::FILTER => "/dev/syd/default/stat:filter",
action_t::DENY => "/dev/syd/default/stat:deny",
action_t::PANIC => "/dev/syd/default/stat:panic",
action_t::STOP => "/dev/syd/default/stat:stop",
action_t::KILL => "/dev/syd/default/stat:kill",
action_t::EXIT => "/dev/syd/default/stat:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_read(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/read:allow",
action_t::WARN => "/dev/syd/default/read:warn",
action_t::FILTER => "/dev/syd/default/read:filter",
action_t::DENY => "/dev/syd/default/read:deny",
action_t::PANIC => "/dev/syd/default/read:panic",
action_t::STOP => "/dev/syd/default/read:stop",
action_t::KILL => "/dev/syd/default/read:kill",
action_t::EXIT => "/dev/syd/default/read:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_write(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/write:allow",
action_t::WARN => "/dev/syd/default/write:warn",
action_t::FILTER => "/dev/syd/default/write:filter",
action_t::DENY => "/dev/syd/default/write:deny",
action_t::PANIC => "/dev/syd/default/write:panic",
action_t::STOP => "/dev/syd/default/write:stop",
action_t::KILL => "/dev/syd/default/write:kill",
action_t::EXIT => "/dev/syd/default/write:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_exec(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/exec:allow",
action_t::WARN => "/dev/syd/default/exec:warn",
action_t::FILTER => "/dev/syd/default/exec:filter",
action_t::DENY => "/dev/syd/default/exec:deny",
action_t::PANIC => "/dev/syd/default/exec:panic",
action_t::STOP => "/dev/syd/default/exec:stop",
action_t::KILL => "/dev/syd/default/exec:kill",
action_t::EXIT => "/dev/syd/default/exec:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_ioctl(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/ioctl:allow",
action_t::WARN => "/dev/syd/default/ioctl:warn",
action_t::FILTER => "/dev/syd/default/ioctl:filter",
action_t::DENY => "/dev/syd/default/ioctl:deny",
action_t::PANIC => "/dev/syd/default/ioctl:panic",
action_t::STOP => "/dev/syd/default/ioctl:stop",
action_t::KILL => "/dev/syd/default/ioctl:kill",
action_t::EXIT => "/dev/syd/default/ioctl:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_create(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/create:allow",
action_t::WARN => "/dev/syd/default/create:warn",
action_t::FILTER => "/dev/syd/default/create:filter",
action_t::DENY => "/dev/syd/default/create:deny",
action_t::PANIC => "/dev/syd/default/create:panic",
action_t::STOP => "/dev/syd/default/create:stop",
action_t::KILL => "/dev/syd/default/create:kill",
action_t::EXIT => "/dev/syd/default/create:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_delete(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/delete:allow",
action_t::WARN => "/dev/syd/default/delete:warn",
action_t::FILTER => "/dev/syd/default/delete:filter",
action_t::DENY => "/dev/syd/default/delete:deny",
action_t::PANIC => "/dev/syd/default/delete:panic",
action_t::STOP => "/dev/syd/default/delete:stop",
action_t::KILL => "/dev/syd/default/delete:kill",
action_t::EXIT => "/dev/syd/default/delete:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_rename(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/rename:allow",
action_t::WARN => "/dev/syd/default/rename:warn",
action_t::FILTER => "/dev/syd/default/rename:filter",
action_t::DENY => "/dev/syd/default/rename:deny",
action_t::PANIC => "/dev/syd/default/rename:panic",
action_t::STOP => "/dev/syd/default/rename:stop",
action_t::KILL => "/dev/syd/default/rename:kill",
action_t::EXIT => "/dev/syd/default/rename:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_symlink(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/symlink:allow",
action_t::WARN => "/dev/syd/default/symlink:warn",
action_t::FILTER => "/dev/syd/default/symlink:filter",
action_t::DENY => "/dev/syd/default/symlink:deny",
action_t::PANIC => "/dev/syd/default/symlink:panic",
action_t::STOP => "/dev/syd/default/symlink:stop",
action_t::KILL => "/dev/syd/default/symlink:kill",
action_t::EXIT => "/dev/syd/default/symlink:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_truncate(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/truncate:allow",
action_t::WARN => "/dev/syd/default/truncate:warn",
action_t::FILTER => "/dev/syd/default/truncate:filter",
action_t::DENY => "/dev/syd/default/truncate:deny",
action_t::PANIC => "/dev/syd/default/truncate:panic",
action_t::STOP => "/dev/syd/default/truncate:stop",
action_t::KILL => "/dev/syd/default/truncate:kill",
action_t::EXIT => "/dev/syd/default/truncate:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_chdir(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/chdir:allow",
action_t::WARN => "/dev/syd/default/chdir:warn",
action_t::FILTER => "/dev/syd/default/chdir:filter",
action_t::DENY => "/dev/syd/default/chdir:deny",
action_t::PANIC => "/dev/syd/default/chdir:panic",
action_t::STOP => "/dev/syd/default/chdir:stop",
action_t::KILL => "/dev/syd/default/chdir:kill",
action_t::EXIT => "/dev/syd/default/chdir:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_readdir(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/readdir:allow",
action_t::WARN => "/dev/syd/default/readdir:warn",
action_t::FILTER => "/dev/syd/default/readdir:filter",
action_t::DENY => "/dev/syd/default/readdir:deny",
action_t::PANIC => "/dev/syd/default/readdir:panic",
action_t::STOP => "/dev/syd/default/readdir:stop",
action_t::KILL => "/dev/syd/default/readdir:kill",
action_t::EXIT => "/dev/syd/default/readdir:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_mkdir(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/mkdir:allow",
action_t::WARN => "/dev/syd/default/mkdir:warn",
action_t::FILTER => "/dev/syd/default/mkdir:filter",
action_t::DENY => "/dev/syd/default/mkdir:deny",
action_t::PANIC => "/dev/syd/default/mkdir:panic",
action_t::STOP => "/dev/syd/default/mkdir:stop",
action_t::KILL => "/dev/syd/default/mkdir:kill",
action_t::EXIT => "/dev/syd/default/mkdir:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_chown(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/chown:allow",
action_t::WARN => "/dev/syd/default/chown:warn",
action_t::FILTER => "/dev/syd/default/chown:filter",
action_t::DENY => "/dev/syd/default/chown:deny",
action_t::PANIC => "/dev/syd/default/chown:panic",
action_t::STOP => "/dev/syd/default/chown:stop",
action_t::KILL => "/dev/syd/default/chown:kill",
action_t::EXIT => "/dev/syd/default/chown:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_chgrp(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/chgrp:allow",
action_t::WARN => "/dev/syd/default/chgrp:warn",
action_t::FILTER => "/dev/syd/default/chgrp:filter",
action_t::DENY => "/dev/syd/default/chgrp:deny",
action_t::PANIC => "/dev/syd/default/chgrp:panic",
action_t::STOP => "/dev/syd/default/chgrp:stop",
action_t::KILL => "/dev/syd/default/chgrp:kill",
action_t::EXIT => "/dev/syd/default/chgrp:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_chmod(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/chmod:allow",
action_t::WARN => "/dev/syd/default/chmod:warn",
action_t::FILTER => "/dev/syd/default/chmod:filter",
action_t::DENY => "/dev/syd/default/chmod:deny",
action_t::PANIC => "/dev/syd/default/chmod:panic",
action_t::STOP => "/dev/syd/default/chmod:stop",
action_t::KILL => "/dev/syd/default/chmod:kill",
action_t::EXIT => "/dev/syd/default/chmod:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_chattr(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/chattr:allow",
action_t::WARN => "/dev/syd/default/chattr:warn",
action_t::FILTER => "/dev/syd/default/chattr:filter",
action_t::DENY => "/dev/syd/default/chattr:deny",
action_t::PANIC => "/dev/syd/default/chattr:panic",
action_t::STOP => "/dev/syd/default/chattr:stop",
action_t::KILL => "/dev/syd/default/chattr:kill",
action_t::EXIT => "/dev/syd/default/chattr:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_chroot(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/chroot:allow",
action_t::WARN => "/dev/syd/default/chroot:warn",
action_t::FILTER => "/dev/syd/default/chroot:filter",
action_t::DENY => "/dev/syd/default/chroot:deny",
action_t::PANIC => "/dev/syd/default/chroot:panic",
action_t::STOP => "/dev/syd/default/chroot:stop",
action_t::KILL => "/dev/syd/default/chroot:kill",
action_t::EXIT => "/dev/syd/default/chroot:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_utime(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/utime:allow",
action_t::WARN => "/dev/syd/default/utime:warn",
action_t::FILTER => "/dev/syd/default/utime:filter",
action_t::DENY => "/dev/syd/default/utime:deny",
action_t::PANIC => "/dev/syd/default/utime:panic",
action_t::STOP => "/dev/syd/default/utime:stop",
action_t::KILL => "/dev/syd/default/utime:kill",
action_t::EXIT => "/dev/syd/default/utime:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_mkdev(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/mkdev:allow",
action_t::WARN => "/dev/syd/default/mkdev:warn",
action_t::FILTER => "/dev/syd/default/mkdev:filter",
action_t::DENY => "/dev/syd/default/mkdev:deny",
action_t::PANIC => "/dev/syd/default/mkdev:panic",
action_t::STOP => "/dev/syd/default/mkdev:stop",
action_t::KILL => "/dev/syd/default/mkdev:kill",
action_t::EXIT => "/dev/syd/default/mkdev:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_mkfifo(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/mkfifo:allow",
action_t::WARN => "/dev/syd/default/mkfifo:warn",
action_t::FILTER => "/dev/syd/default/mkfifo:filter",
action_t::DENY => "/dev/syd/default/mkfifo:deny",
action_t::PANIC => "/dev/syd/default/mkfifo:panic",
action_t::STOP => "/dev/syd/default/mkfifo:stop",
action_t::KILL => "/dev/syd/default/mkfifo:kill",
action_t::EXIT => "/dev/syd/default/mkfifo:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_mktemp(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/mktemp:allow",
action_t::WARN => "/dev/syd/default/mktemp:warn",
action_t::FILTER => "/dev/syd/default/mktemp:filter",
action_t::DENY => "/dev/syd/default/mktemp:deny",
action_t::PANIC => "/dev/syd/default/mktemp:panic",
action_t::STOP => "/dev/syd/default/mktemp:stop",
action_t::KILL => "/dev/syd/default/mktemp:kill",
action_t::EXIT => "/dev/syd/default/mktemp:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_net(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/net:allow",
action_t::WARN => "/dev/syd/default/net:warn",
action_t::FILTER => "/dev/syd/default/net:filter",
action_t::DENY => "/dev/syd/default/net:deny",
action_t::PANIC => "/dev/syd/default/net:panic",
action_t::STOP => "/dev/syd/default/net:stop",
action_t::KILL => "/dev/syd/default/net:kill",
action_t::EXIT => "/dev/syd/default/net:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_block(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/block:allow",
action_t::WARN => "/dev/syd/default/block:warn",
action_t::FILTER => "/dev/syd/default/block:filter",
action_t::DENY => "/dev/syd/default/block:deny",
action_t::PANIC => "/dev/syd/default/block:panic",
action_t::STOP => "/dev/syd/default/block:stop",
action_t::KILL => "/dev/syd/default/block:kill",
action_t::EXIT => "/dev/syd/default/block:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_mem(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/mem:allow",
action_t::WARN => "/dev/syd/default/mem:warn",
action_t::FILTER => "/dev/syd/default/mem:filter",
action_t::DENY => "/dev/syd/default/mem:deny",
action_t::PANIC => "/dev/syd/default/mem:panic",
action_t::STOP => "/dev/syd/default/mem:stop",
action_t::KILL => "/dev/syd/default/mem:kill",
action_t::EXIT => "/dev/syd/default/mem:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_pid(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/pid:allow",
action_t::WARN => "/dev/syd/default/pid:warn",
action_t::FILTER => "/dev/syd/default/pid:filter",
action_t::DENY => "/dev/syd/default/pid:deny",
action_t::PANIC => "/dev/syd/default/pid:panic",
action_t::STOP => "/dev/syd/default/pid:stop",
action_t::KILL => "/dev/syd/default/pid:kill",
action_t::EXIT => "/dev/syd/default/pid:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_force(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/force:allow",
action_t::WARN => "/dev/syd/default/force:warn",
action_t::FILTER => "/dev/syd/default/force:filter",
action_t::DENY => "/dev/syd/default/force:deny",
action_t::PANIC => "/dev/syd/default/force:panic",
action_t::STOP => "/dev/syd/default/force:stop",
action_t::KILL => "/dev/syd/default/force:kill",
action_t::EXIT => "/dev/syd/default/force:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_segvguard(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/segvguard:allow",
action_t::WARN => "/dev/syd/default/segvguard:warn",
action_t::FILTER => "/dev/syd/default/segvguard:filter",
action_t::DENY => "/dev/syd/default/segvguard:deny",
action_t::PANIC => "/dev/syd/default/segvguard:panic",
action_t::STOP => "/dev/syd/default/segvguard:stop",
action_t::KILL => "/dev/syd/default/segvguard:kill",
action_t::EXIT => "/dev/syd/default/segvguard:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_default_tpe(action: action_t) -> c_int {
stat(match action {
action_t::ALLOW => "/dev/syd/default/tpe:allow",
action_t::WARN => "/dev/syd/default/tpe:warn",
action_t::FILTER => "/dev/syd/default/tpe:filter",
action_t::DENY => "/dev/syd/default/tpe:deny",
action_t::PANIC => "/dev/syd/default/tpe:panic",
action_t::STOP => "/dev/syd/default/tpe:stop",
action_t::KILL => "/dev/syd/default/tpe:kill",
action_t::EXIT => "/dev/syd/default/tpe:exit",
})
}
#[no_mangle]
pub extern "C" fn syd_ioctl_deny(request: u64) -> c_int {
stat(&format!("/dev/syd/ioctl/deny+{request}"))
}
#[no_mangle]
pub unsafe extern "C" fn syd_force_add(
path: *const c_char,
hash: *const c_char,
action: action_t,
) -> c_int {
if path.is_null() || hash.is_null() {
return -EFAULT;
}
let path = unsafe { CStr::from_ptr(path) };
let hash = unsafe { CStr::from_ptr(hash) };
let path = match path.to_str() {
Ok(s) => s,
Err(_) => return -EINVAL,
};
let hash = match hash.to_str() {
Ok(s) => s,
Err(_) => return -EINVAL,
};
let action = match action {
action_t::WARN => "warn",
action_t::STOP => "stop",
action_t::KILL => "kill",
_ => return -EINVAL,
};
stat(format!("/dev/syd/force+{path}:{hash}:{action}"))
}
#[no_mangle]
pub unsafe extern "C" fn syd_force_del(path: *const c_char) -> c_int {
if path.is_null() {
return -EFAULT;
}
let path = unsafe { CStr::from_ptr(path) };
let path = match path.to_str() {
Ok(s) => s,
Err(_) => return -EINVAL,
};
stat(format!("/dev/syd/force-{path}"))
}
#[no_mangle]
pub extern "C" fn syd_force_clr() -> c_int {
stat("/dev/syd/force^")
}
#[no_mangle]
pub extern "C" fn syd_stat_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/stat", glob, b'+'),
action_t::WARN => esyd("warn/stat", glob, b'+'),
action_t::FILTER => esyd("filter/stat", glob, b'+'),
action_t::DENY => esyd("deny/stat", glob, b'+'),
action_t::PANIC => esyd("panic/stat", glob, b'+'),
action_t::STOP => esyd("stop/stat", glob, b'+'),
action_t::KILL => esyd("kill/stat", glob, b'+'),
action_t::EXIT => esyd("exit/stat", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_stat_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/stat", glob, b'-'),
action_t::WARN => esyd("warn/stat", glob, b'-'),
action_t::FILTER => esyd("filter/stat", glob, b'-'),
action_t::DENY => esyd("deny/stat", glob, b'-'),
action_t::PANIC => esyd("panic/stat", glob, b'-'),
action_t::STOP => esyd("stop/stat", glob, b'-'),
action_t::KILL => esyd("kill/stat", glob, b'-'),
action_t::EXIT => esyd("exit/stat", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_stat_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/stat", glob, b'^'),
action_t::WARN => esyd("warn/stat", glob, b'^'),
action_t::FILTER => esyd("filter/stat", glob, b'^'),
action_t::DENY => esyd("deny/stat", glob, b'^'),
action_t::PANIC => esyd("panic/stat", glob, b'^'),
action_t::STOP => esyd("stop/stat", glob, b'^'),
action_t::KILL => esyd("kill/stat", glob, b'^'),
action_t::EXIT => esyd("exit/stat", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_read_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/read", glob, b'+'),
action_t::WARN => esyd("warn/read", glob, b'+'),
action_t::FILTER => esyd("filter/read", glob, b'+'),
action_t::DENY => esyd("deny/read", glob, b'+'),
action_t::PANIC => esyd("panic/read", glob, b'+'),
action_t::STOP => esyd("stop/read", glob, b'+'),
action_t::KILL => esyd("kill/read", glob, b'+'),
action_t::EXIT => esyd("exit/read", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_read_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/read", glob, b'-'),
action_t::WARN => esyd("warn/read", glob, b'-'),
action_t::FILTER => esyd("filter/read", glob, b'-'),
action_t::DENY => esyd("deny/read", glob, b'-'),
action_t::PANIC => esyd("panic/read", glob, b'-'),
action_t::STOP => esyd("stop/read", glob, b'-'),
action_t::KILL => esyd("kill/read", glob, b'-'),
action_t::EXIT => esyd("exit/read", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_read_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/read", glob, b'^'),
action_t::WARN => esyd("warn/read", glob, b'^'),
action_t::FILTER => esyd("filter/read", glob, b'^'),
action_t::DENY => esyd("deny/read", glob, b'^'),
action_t::PANIC => esyd("panic/read", glob, b'^'),
action_t::STOP => esyd("stop/read", glob, b'^'),
action_t::KILL => esyd("kill/read", glob, b'^'),
action_t::EXIT => esyd("exit/read", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_write_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/write", glob, b'+'),
action_t::WARN => esyd("warn/write", glob, b'+'),
action_t::FILTER => esyd("filter/write", glob, b'+'),
action_t::DENY => esyd("deny/write", glob, b'+'),
action_t::PANIC => esyd("panic/write", glob, b'+'),
action_t::STOP => esyd("stop/write", glob, b'+'),
action_t::KILL => esyd("kill/write", glob, b'+'),
action_t::EXIT => esyd("exit/write", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_write_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/write", glob, b'-'),
action_t::WARN => esyd("warn/write", glob, b'-'),
action_t::FILTER => esyd("filter/write", glob, b'-'),
action_t::DENY => esyd("deny/write", glob, b'-'),
action_t::PANIC => esyd("panic/write", glob, b'-'),
action_t::STOP => esyd("stop/write", glob, b'-'),
action_t::KILL => esyd("kill/write", glob, b'-'),
action_t::EXIT => esyd("exit/write", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_write_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/write", glob, b'^'),
action_t::WARN => esyd("warn/write", glob, b'^'),
action_t::FILTER => esyd("filter/write", glob, b'^'),
action_t::DENY => esyd("deny/write", glob, b'^'),
action_t::PANIC => esyd("panic/write", glob, b'^'),
action_t::STOP => esyd("stop/write", glob, b'^'),
action_t::KILL => esyd("kill/write", glob, b'^'),
action_t::EXIT => esyd("exit/write", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_exec_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/exec", glob, b'+'),
action_t::WARN => esyd("warn/exec", glob, b'+'),
action_t::FILTER => esyd("filter/exec", glob, b'+'),
action_t::DENY => esyd("deny/exec", glob, b'+'),
action_t::PANIC => esyd("panic/exec", glob, b'+'),
action_t::STOP => esyd("stop/exec", glob, b'+'),
action_t::KILL => esyd("kill/exec", glob, b'+'),
action_t::EXIT => esyd("exit/exec", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_exec_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/exec", glob, b'-'),
action_t::WARN => esyd("warn/exec", glob, b'-'),
action_t::FILTER => esyd("filter/exec", glob, b'-'),
action_t::DENY => esyd("deny/exec", glob, b'-'),
action_t::PANIC => esyd("panic/exec", glob, b'-'),
action_t::STOP => esyd("stop/exec", glob, b'-'),
action_t::KILL => esyd("kill/exec", glob, b'-'),
action_t::EXIT => esyd("exit/exec", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_exec_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/exec", glob, b'^'),
action_t::WARN => esyd("warn/exec", glob, b'^'),
action_t::FILTER => esyd("filter/exec", glob, b'^'),
action_t::DENY => esyd("deny/exec", glob, b'^'),
action_t::PANIC => esyd("panic/exec", glob, b'^'),
action_t::STOP => esyd("stop/exec", glob, b'^'),
action_t::KILL => esyd("kill/exec", glob, b'^'),
action_t::EXIT => esyd("exit/exec", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_ioctl_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/ioctl", glob, b'+'),
action_t::WARN => esyd("warn/ioctl", glob, b'+'),
action_t::FILTER => esyd("filter/ioctl", glob, b'+'),
action_t::DENY => esyd("deny/ioctl", glob, b'+'),
action_t::PANIC => esyd("panic/ioctl", glob, b'+'),
action_t::STOP => esyd("stop/ioctl", glob, b'+'),
action_t::KILL => esyd("kill/ioctl", glob, b'+'),
action_t::EXIT => esyd("exit/ioctl", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_ioctl_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/ioctl", glob, b'-'),
action_t::WARN => esyd("warn/ioctl", glob, b'-'),
action_t::FILTER => esyd("filter/ioctl", glob, b'-'),
action_t::DENY => esyd("deny/ioctl", glob, b'-'),
action_t::PANIC => esyd("panic/ioctl", glob, b'-'),
action_t::STOP => esyd("stop/ioctl", glob, b'-'),
action_t::KILL => esyd("kill/ioctl", glob, b'-'),
action_t::EXIT => esyd("exit/ioctl", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_ioctl_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/ioctl", glob, b'^'),
action_t::WARN => esyd("warn/ioctl", glob, b'^'),
action_t::FILTER => esyd("filter/ioctl", glob, b'^'),
action_t::DENY => esyd("deny/ioctl", glob, b'^'),
action_t::PANIC => esyd("panic/ioctl", glob, b'^'),
action_t::STOP => esyd("stop/ioctl", glob, b'^'),
action_t::KILL => esyd("kill/ioctl", glob, b'^'),
action_t::EXIT => esyd("exit/ioctl", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_create_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/create", glob, b'+'),
action_t::WARN => esyd("warn/create", glob, b'+'),
action_t::FILTER => esyd("filter/create", glob, b'+'),
action_t::DENY => esyd("deny/create", glob, b'+'),
action_t::PANIC => esyd("panic/create", glob, b'+'),
action_t::STOP => esyd("stop/create", glob, b'+'),
action_t::KILL => esyd("kill/create", glob, b'+'),
action_t::EXIT => esyd("exit/create", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_create_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/create", glob, b'-'),
action_t::WARN => esyd("warn/create", glob, b'-'),
action_t::FILTER => esyd("filter/create", glob, b'-'),
action_t::DENY => esyd("deny/create", glob, b'-'),
action_t::PANIC => esyd("panic/create", glob, b'-'),
action_t::STOP => esyd("stop/create", glob, b'-'),
action_t::KILL => esyd("kill/create", glob, b'-'),
action_t::EXIT => esyd("exit/create", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_create_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/create", glob, b'^'),
action_t::WARN => esyd("warn/create", glob, b'^'),
action_t::FILTER => esyd("filter/create", glob, b'^'),
action_t::DENY => esyd("deny/create", glob, b'^'),
action_t::PANIC => esyd("panic/create", glob, b'^'),
action_t::STOP => esyd("stop/create", glob, b'^'),
action_t::KILL => esyd("kill/create", glob, b'^'),
action_t::EXIT => esyd("exit/create", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_delete_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/delete", glob, b'+'),
action_t::WARN => esyd("warn/delete", glob, b'+'),
action_t::FILTER => esyd("filter/delete", glob, b'+'),
action_t::DENY => esyd("deny/delete", glob, b'+'),
action_t::PANIC => esyd("panic/delete", glob, b'+'),
action_t::STOP => esyd("stop/delete", glob, b'+'),
action_t::KILL => esyd("kill/delete", glob, b'+'),
action_t::EXIT => esyd("exit/delete", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_delete_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/delete", glob, b'-'),
action_t::WARN => esyd("warn/delete", glob, b'-'),
action_t::FILTER => esyd("filter/delete", glob, b'-'),
action_t::DENY => esyd("deny/delete", glob, b'-'),
action_t::PANIC => esyd("panic/delete", glob, b'-'),
action_t::STOP => esyd("stop/delete", glob, b'-'),
action_t::KILL => esyd("kill/delete", glob, b'-'),
action_t::EXIT => esyd("exit/delete", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_delete_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/delete", glob, b'^'),
action_t::WARN => esyd("warn/delete", glob, b'^'),
action_t::FILTER => esyd("filter/delete", glob, b'^'),
action_t::DENY => esyd("deny/delete", glob, b'^'),
action_t::PANIC => esyd("panic/delete", glob, b'^'),
action_t::STOP => esyd("stop/delete", glob, b'^'),
action_t::KILL => esyd("kill/delete", glob, b'^'),
action_t::EXIT => esyd("exit/delete", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_rename_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/rename", glob, b'+'),
action_t::WARN => esyd("warn/rename", glob, b'+'),
action_t::FILTER => esyd("filter/rename", glob, b'+'),
action_t::DENY => esyd("deny/rename", glob, b'+'),
action_t::PANIC => esyd("panic/rename", glob, b'+'),
action_t::STOP => esyd("stop/rename", glob, b'+'),
action_t::KILL => esyd("kill/rename", glob, b'+'),
action_t::EXIT => esyd("exit/rename", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_rename_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/rename", glob, b'-'),
action_t::WARN => esyd("warn/rename", glob, b'-'),
action_t::FILTER => esyd("filter/rename", glob, b'-'),
action_t::DENY => esyd("deny/rename", glob, b'-'),
action_t::PANIC => esyd("panic/rename", glob, b'-'),
action_t::STOP => esyd("stop/rename", glob, b'-'),
action_t::KILL => esyd("kill/rename", glob, b'-'),
action_t::EXIT => esyd("exit/rename", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_rename_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/rename", glob, b'^'),
action_t::WARN => esyd("warn/rename", glob, b'^'),
action_t::FILTER => esyd("filter/rename", glob, b'^'),
action_t::DENY => esyd("deny/rename", glob, b'^'),
action_t::PANIC => esyd("panic/rename", glob, b'^'),
action_t::STOP => esyd("stop/rename", glob, b'^'),
action_t::KILL => esyd("kill/rename", glob, b'^'),
action_t::EXIT => esyd("exit/rename", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_symlink_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/symlink", glob, b'+'),
action_t::WARN => esyd("warn/symlink", glob, b'+'),
action_t::FILTER => esyd("filter/symlink", glob, b'+'),
action_t::DENY => esyd("deny/symlink", glob, b'+'),
action_t::PANIC => esyd("panic/symlink", glob, b'+'),
action_t::STOP => esyd("stop/symlink", glob, b'+'),
action_t::KILL => esyd("kill/symlink", glob, b'+'),
action_t::EXIT => esyd("exit/symlink", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_symlink_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/symlink", glob, b'-'),
action_t::WARN => esyd("warn/symlink", glob, b'-'),
action_t::FILTER => esyd("filter/symlink", glob, b'-'),
action_t::DENY => esyd("deny/symlink", glob, b'-'),
action_t::PANIC => esyd("panic/symlink", glob, b'-'),
action_t::STOP => esyd("stop/symlink", glob, b'-'),
action_t::KILL => esyd("kill/symlink", glob, b'-'),
action_t::EXIT => esyd("exit/symlink", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_symlink_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/symlink", glob, b'^'),
action_t::WARN => esyd("warn/symlink", glob, b'^'),
action_t::FILTER => esyd("filter/symlink", glob, b'^'),
action_t::DENY => esyd("deny/symlink", glob, b'^'),
action_t::PANIC => esyd("panic/symlink", glob, b'^'),
action_t::STOP => esyd("stop/symlink", glob, b'^'),
action_t::KILL => esyd("kill/symlink", glob, b'^'),
action_t::EXIT => esyd("exit/symlink", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_truncate_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/truncate", glob, b'+'),
action_t::WARN => esyd("warn/truncate", glob, b'+'),
action_t::FILTER => esyd("filter/truncate", glob, b'+'),
action_t::DENY => esyd("deny/truncate", glob, b'+'),
action_t::PANIC => esyd("panic/truncate", glob, b'+'),
action_t::STOP => esyd("stop/truncate", glob, b'+'),
action_t::KILL => esyd("kill/truncate", glob, b'+'),
action_t::EXIT => esyd("exit/truncate", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_truncate_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/truncate", glob, b'-'),
action_t::WARN => esyd("warn/truncate", glob, b'-'),
action_t::FILTER => esyd("filter/truncate", glob, b'-'),
action_t::DENY => esyd("deny/truncate", glob, b'-'),
action_t::PANIC => esyd("panic/truncate", glob, b'-'),
action_t::STOP => esyd("stop/truncate", glob, b'-'),
action_t::KILL => esyd("kill/truncate", glob, b'-'),
action_t::EXIT => esyd("exit/truncate", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_truncate_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/truncate", glob, b'^'),
action_t::WARN => esyd("warn/truncate", glob, b'^'),
action_t::FILTER => esyd("filter/truncate", glob, b'^'),
action_t::DENY => esyd("deny/truncate", glob, b'^'),
action_t::PANIC => esyd("panic/truncate", glob, b'^'),
action_t::STOP => esyd("stop/truncate", glob, b'^'),
action_t::KILL => esyd("kill/truncate", glob, b'^'),
action_t::EXIT => esyd("exit/truncate", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_chdir_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chdir", glob, b'+'),
action_t::WARN => esyd("warn/chdir", glob, b'+'),
action_t::FILTER => esyd("filter/chdir", glob, b'+'),
action_t::DENY => esyd("deny/chdir", glob, b'+'),
action_t::PANIC => esyd("panic/chdir", glob, b'+'),
action_t::STOP => esyd("stop/chdir", glob, b'+'),
action_t::KILL => esyd("kill/chdir", glob, b'+'),
action_t::EXIT => esyd("exit/chdir", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_chdir_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chdir", glob, b'-'),
action_t::WARN => esyd("warn/chdir", glob, b'-'),
action_t::FILTER => esyd("filter/chdir", glob, b'-'),
action_t::DENY => esyd("deny/chdir", glob, b'-'),
action_t::PANIC => esyd("panic/chdir", glob, b'-'),
action_t::STOP => esyd("stop/chdir", glob, b'-'),
action_t::KILL => esyd("kill/chdir", glob, b'-'),
action_t::EXIT => esyd("exit/chdir", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_chdir_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chdir", glob, b'^'),
action_t::WARN => esyd("warn/chdir", glob, b'^'),
action_t::FILTER => esyd("filter/chdir", glob, b'^'),
action_t::DENY => esyd("deny/chdir", glob, b'^'),
action_t::PANIC => esyd("panic/chdir", glob, b'^'),
action_t::STOP => esyd("stop/chdir", glob, b'^'),
action_t::KILL => esyd("kill/chdir", glob, b'^'),
action_t::EXIT => esyd("exit/chdir", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_readdir_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/readdir", glob, b'+'),
action_t::WARN => esyd("warn/readdir", glob, b'+'),
action_t::FILTER => esyd("filter/readdir", glob, b'+'),
action_t::DENY => esyd("deny/readdir", glob, b'+'),
action_t::PANIC => esyd("panic/readdir", glob, b'+'),
action_t::STOP => esyd("stop/readdir", glob, b'+'),
action_t::KILL => esyd("kill/readdir", glob, b'+'),
action_t::EXIT => esyd("exit/readdir", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_readdir_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/readdir", glob, b'-'),
action_t::WARN => esyd("warn/readdir", glob, b'-'),
action_t::FILTER => esyd("filter/readdir", glob, b'-'),
action_t::DENY => esyd("deny/readdir", glob, b'-'),
action_t::PANIC => esyd("panic/readdir", glob, b'-'),
action_t::STOP => esyd("stop/readdir", glob, b'-'),
action_t::KILL => esyd("kill/readdir", glob, b'-'),
action_t::EXIT => esyd("exit/readdir", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_readdir_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/readdir", glob, b'^'),
action_t::WARN => esyd("warn/readdir", glob, b'^'),
action_t::FILTER => esyd("filter/readdir", glob, b'^'),
action_t::DENY => esyd("deny/readdir", glob, b'^'),
action_t::PANIC => esyd("panic/readdir", glob, b'^'),
action_t::STOP => esyd("stop/readdir", glob, b'^'),
action_t::KILL => esyd("kill/readdir", glob, b'^'),
action_t::EXIT => esyd("exit/readdir", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_mkdir_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/mkdir", glob, b'+'),
action_t::WARN => esyd("warn/mkdir", glob, b'+'),
action_t::FILTER => esyd("filter/mkdir", glob, b'+'),
action_t::DENY => esyd("deny/mkdir", glob, b'+'),
action_t::PANIC => esyd("panic/mkdir", glob, b'+'),
action_t::STOP => esyd("stop/mkdir", glob, b'+'),
action_t::KILL => esyd("kill/mkdir", glob, b'+'),
action_t::EXIT => esyd("exit/mkdir", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_mkdir_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/mkdir", glob, b'-'),
action_t::WARN => esyd("warn/mkdir", glob, b'-'),
action_t::FILTER => esyd("filter/mkdir", glob, b'-'),
action_t::DENY => esyd("deny/mkdir", glob, b'-'),
action_t::PANIC => esyd("panic/mkdir", glob, b'-'),
action_t::STOP => esyd("stop/mkdir", glob, b'-'),
action_t::KILL => esyd("kill/mkdir", glob, b'-'),
action_t::EXIT => esyd("exit/mkdir", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_mkdir_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/mkdir", glob, b'^'),
action_t::WARN => esyd("warn/mkdir", glob, b'^'),
action_t::FILTER => esyd("filter/mkdir", glob, b'^'),
action_t::DENY => esyd("deny/mkdir", glob, b'^'),
action_t::PANIC => esyd("panic/mkdir", glob, b'^'),
action_t::STOP => esyd("stop/mkdir", glob, b'^'),
action_t::KILL => esyd("kill/mkdir", glob, b'^'),
action_t::EXIT => esyd("exit/mkdir", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_chown_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chown", glob, b'+'),
action_t::WARN => esyd("warn/chown", glob, b'+'),
action_t::FILTER => esyd("filter/chown", glob, b'+'),
action_t::DENY => esyd("deny/chown", glob, b'+'),
action_t::PANIC => esyd("panic/chown", glob, b'+'),
action_t::STOP => esyd("stop/chown", glob, b'+'),
action_t::KILL => esyd("kill/chown", glob, b'+'),
action_t::EXIT => esyd("exit/chown", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_chown_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chown", glob, b'-'),
action_t::WARN => esyd("warn/chown", glob, b'-'),
action_t::FILTER => esyd("filter/chown", glob, b'-'),
action_t::DENY => esyd("deny/chown", glob, b'-'),
action_t::PANIC => esyd("panic/chown", glob, b'-'),
action_t::STOP => esyd("stop/chown", glob, b'-'),
action_t::KILL => esyd("kill/chown", glob, b'-'),
action_t::EXIT => esyd("exit/chown", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_chown_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chown", glob, b'^'),
action_t::WARN => esyd("warn/chown", glob, b'^'),
action_t::FILTER => esyd("filter/chown", glob, b'^'),
action_t::DENY => esyd("deny/chown", glob, b'^'),
action_t::PANIC => esyd("panic/chown", glob, b'^'),
action_t::STOP => esyd("stop/chown", glob, b'^'),
action_t::KILL => esyd("kill/chown", glob, b'^'),
action_t::EXIT => esyd("exit/chown", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_chgrp_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chgrp", glob, b'+'),
action_t::WARN => esyd("warn/chgrp", glob, b'+'),
action_t::FILTER => esyd("filter/chgrp", glob, b'+'),
action_t::DENY => esyd("deny/chgrp", glob, b'+'),
action_t::PANIC => esyd("panic/chgrp", glob, b'+'),
action_t::STOP => esyd("stop/chgrp", glob, b'+'),
action_t::KILL => esyd("kill/chgrp", glob, b'+'),
action_t::EXIT => esyd("exit/chgrp", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_chgrp_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chgrp", glob, b'-'),
action_t::WARN => esyd("warn/chgrp", glob, b'-'),
action_t::FILTER => esyd("filter/chgrp", glob, b'-'),
action_t::DENY => esyd("deny/chgrp", glob, b'-'),
action_t::PANIC => esyd("panic/chgrp", glob, b'-'),
action_t::STOP => esyd("stop/chgrp", glob, b'-'),
action_t::KILL => esyd("kill/chgrp", glob, b'-'),
action_t::EXIT => esyd("exit/chgrp", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_chgrp_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chgrp", glob, b'^'),
action_t::WARN => esyd("warn/chgrp", glob, b'^'),
action_t::FILTER => esyd("filter/chgrp", glob, b'^'),
action_t::DENY => esyd("deny/chgrp", glob, b'^'),
action_t::PANIC => esyd("panic/chgrp", glob, b'^'),
action_t::STOP => esyd("stop/chgrp", glob, b'^'),
action_t::KILL => esyd("kill/chgrp", glob, b'^'),
action_t::EXIT => esyd("exit/chgrp", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_chmod_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chmod", glob, b'+'),
action_t::WARN => esyd("warn/chmod", glob, b'+'),
action_t::FILTER => esyd("filter/chmod", glob, b'+'),
action_t::DENY => esyd("deny/chmod", glob, b'+'),
action_t::PANIC => esyd("panic/chmod", glob, b'+'),
action_t::STOP => esyd("stop/chmod", glob, b'+'),
action_t::KILL => esyd("kill/chmod", glob, b'+'),
action_t::EXIT => esyd("exit/chmod", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_chmod_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chmod", glob, b'-'),
action_t::WARN => esyd("warn/chmod", glob, b'-'),
action_t::FILTER => esyd("filter/chmod", glob, b'-'),
action_t::DENY => esyd("deny/chmod", glob, b'-'),
action_t::PANIC => esyd("panic/chmod", glob, b'-'),
action_t::STOP => esyd("stop/chmod", glob, b'-'),
action_t::KILL => esyd("kill/chmod", glob, b'-'),
action_t::EXIT => esyd("exit/chmod", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_chmod_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chmod", glob, b'^'),
action_t::WARN => esyd("warn/chmod", glob, b'^'),
action_t::FILTER => esyd("filter/chmod", glob, b'^'),
action_t::DENY => esyd("deny/chmod", glob, b'^'),
action_t::PANIC => esyd("panic/chmod", glob, b'^'),
action_t::STOP => esyd("stop/chmod", glob, b'^'),
action_t::KILL => esyd("kill/chmod", glob, b'^'),
action_t::EXIT => esyd("exit/chmod", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_chattr_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chattr", glob, b'+'),
action_t::WARN => esyd("warn/chattr", glob, b'+'),
action_t::FILTER => esyd("filter/chattr", glob, b'+'),
action_t::DENY => esyd("deny/chattr", glob, b'+'),
action_t::PANIC => esyd("panic/chattr", glob, b'+'),
action_t::STOP => esyd("stop/chattr", glob, b'+'),
action_t::KILL => esyd("kill/chattr", glob, b'+'),
action_t::EXIT => esyd("exit/chattr", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_chattr_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chattr", glob, b'-'),
action_t::WARN => esyd("warn/chattr", glob, b'-'),
action_t::FILTER => esyd("filter/chattr", glob, b'-'),
action_t::DENY => esyd("deny/chattr", glob, b'-'),
action_t::PANIC => esyd("panic/chattr", glob, b'-'),
action_t::STOP => esyd("stop/chattr", glob, b'-'),
action_t::KILL => esyd("kill/chattr", glob, b'-'),
action_t::EXIT => esyd("exit/chattr", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_chattr_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chattr", glob, b'^'),
action_t::WARN => esyd("warn/chattr", glob, b'^'),
action_t::FILTER => esyd("filter/chattr", glob, b'^'),
action_t::DENY => esyd("deny/chattr", glob, b'^'),
action_t::PANIC => esyd("panic/chattr", glob, b'^'),
action_t::STOP => esyd("stop/chattr", glob, b'^'),
action_t::KILL => esyd("kill/chattr", glob, b'^'),
action_t::EXIT => esyd("exit/chattr", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_chroot_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chroot", glob, b'+'),
action_t::WARN => esyd("warn/chroot", glob, b'+'),
action_t::FILTER => esyd("filter/chroot", glob, b'+'),
action_t::DENY => esyd("deny/chroot", glob, b'+'),
action_t::PANIC => esyd("panic/chroot", glob, b'+'),
action_t::STOP => esyd("stop/chroot", glob, b'+'),
action_t::KILL => esyd("kill/chroot", glob, b'+'),
action_t::EXIT => esyd("exit/chroot", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_chroot_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chroot", glob, b'-'),
action_t::WARN => esyd("warn/chroot", glob, b'-'),
action_t::FILTER => esyd("filter/chroot", glob, b'-'),
action_t::DENY => esyd("deny/chroot", glob, b'-'),
action_t::PANIC => esyd("panic/chroot", glob, b'-'),
action_t::STOP => esyd("stop/chroot", glob, b'-'),
action_t::KILL => esyd("kill/chroot", glob, b'-'),
action_t::EXIT => esyd("exit/chroot", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_chroot_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/chroot", glob, b'^'),
action_t::WARN => esyd("warn/chroot", glob, b'^'),
action_t::FILTER => esyd("filter/chroot", glob, b'^'),
action_t::DENY => esyd("deny/chroot", glob, b'^'),
action_t::PANIC => esyd("panic/chroot", glob, b'^'),
action_t::STOP => esyd("stop/chroot", glob, b'^'),
action_t::KILL => esyd("kill/chroot", glob, b'^'),
action_t::EXIT => esyd("exit/chroot", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_utime_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/utime", glob, b'+'),
action_t::WARN => esyd("warn/utime", glob, b'+'),
action_t::FILTER => esyd("filter/utime", glob, b'+'),
action_t::DENY => esyd("deny/utime", glob, b'+'),
action_t::PANIC => esyd("panic/utime", glob, b'+'),
action_t::STOP => esyd("stop/utime", glob, b'+'),
action_t::KILL => esyd("kill/utime", glob, b'+'),
action_t::EXIT => esyd("exit/utime", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_utime_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/utime", glob, b'-'),
action_t::WARN => esyd("warn/utime", glob, b'-'),
action_t::FILTER => esyd("filter/utime", glob, b'-'),
action_t::DENY => esyd("deny/utime", glob, b'-'),
action_t::PANIC => esyd("panic/utime", glob, b'-'),
action_t::STOP => esyd("stop/utime", glob, b'-'),
action_t::KILL => esyd("kill/utime", glob, b'-'),
action_t::EXIT => esyd("exit/utime", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_utime_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/utime", glob, b'^'),
action_t::WARN => esyd("warn/utime", glob, b'^'),
action_t::FILTER => esyd("filter/utime", glob, b'^'),
action_t::DENY => esyd("deny/utime", glob, b'^'),
action_t::PANIC => esyd("panic/utime", glob, b'^'),
action_t::STOP => esyd("stop/utime", glob, b'^'),
action_t::KILL => esyd("kill/utime", glob, b'^'),
action_t::EXIT => esyd("exit/utime", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_mkdev_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/mkdev", glob, b'+'),
action_t::WARN => esyd("warn/mkdev", glob, b'+'),
action_t::FILTER => esyd("filter/mkdev", glob, b'+'),
action_t::DENY => esyd("deny/mkdev", glob, b'+'),
action_t::PANIC => esyd("panic/mkdev", glob, b'+'),
action_t::STOP => esyd("stop/mkdev", glob, b'+'),
action_t::KILL => esyd("kill/mkdev", glob, b'+'),
action_t::EXIT => esyd("exit/mkdev", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_mkdev_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/mkdev", glob, b'-'),
action_t::WARN => esyd("warn/mkdev", glob, b'-'),
action_t::FILTER => esyd("filter/mkdev", glob, b'-'),
action_t::DENY => esyd("deny/mkdev", glob, b'-'),
action_t::PANIC => esyd("panic/mkdev", glob, b'-'),
action_t::STOP => esyd("stop/mkdev", glob, b'-'),
action_t::KILL => esyd("kill/mkdev", glob, b'-'),
action_t::EXIT => esyd("exit/mkdev", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_mkdev_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/mkdev", glob, b'^'),
action_t::WARN => esyd("warn/mkdev", glob, b'^'),
action_t::FILTER => esyd("filter/mkdev", glob, b'^'),
action_t::DENY => esyd("deny/mkdev", glob, b'^'),
action_t::PANIC => esyd("panic/mkdev", glob, b'^'),
action_t::STOP => esyd("stop/mkdev", glob, b'^'),
action_t::KILL => esyd("kill/mkdev", glob, b'^'),
action_t::EXIT => esyd("exit/mkdev", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_mkfifo_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/mkfifo", glob, b'+'),
action_t::WARN => esyd("warn/mkfifo", glob, b'+'),
action_t::FILTER => esyd("filter/mkfifo", glob, b'+'),
action_t::DENY => esyd("deny/mkfifo", glob, b'+'),
action_t::PANIC => esyd("panic/mkfifo", glob, b'+'),
action_t::STOP => esyd("stop/mkfifo", glob, b'+'),
action_t::KILL => esyd("kill/mkfifo", glob, b'+'),
action_t::EXIT => esyd("exit/mkfifo", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_mkfifo_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/mkfifo", glob, b'-'),
action_t::WARN => esyd("warn/mkfifo", glob, b'-'),
action_t::FILTER => esyd("filter/mkfifo", glob, b'-'),
action_t::DENY => esyd("deny/mkfifo", glob, b'-'),
action_t::PANIC => esyd("panic/mkfifo", glob, b'-'),
action_t::STOP => esyd("stop/mkfifo", glob, b'-'),
action_t::KILL => esyd("kill/mkfifo", glob, b'-'),
action_t::EXIT => esyd("exit/mkfifo", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_mkfifo_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/mkfifo", glob, b'^'),
action_t::WARN => esyd("warn/mkfifo", glob, b'^'),
action_t::FILTER => esyd("filter/mkfifo", glob, b'^'),
action_t::DENY => esyd("deny/mkfifo", glob, b'^'),
action_t::PANIC => esyd("panic/mkfifo", glob, b'^'),
action_t::STOP => esyd("stop/mkfifo", glob, b'^'),
action_t::KILL => esyd("kill/mkfifo", glob, b'^'),
action_t::EXIT => esyd("exit/mkfifo", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_mktemp_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/mktemp", glob, b'+'),
action_t::WARN => esyd("warn/mktemp", glob, b'+'),
action_t::FILTER => esyd("filter/mktemp", glob, b'+'),
action_t::DENY => esyd("deny/mktemp", glob, b'+'),
action_t::PANIC => esyd("panic/mktemp", glob, b'+'),
action_t::STOP => esyd("stop/mktemp", glob, b'+'),
action_t::KILL => esyd("kill/mktemp", glob, b'+'),
action_t::EXIT => esyd("exit/mktemp", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_mktemp_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/mktemp", glob, b'-'),
action_t::WARN => esyd("warn/mktemp", glob, b'-'),
action_t::FILTER => esyd("filter/mktemp", glob, b'-'),
action_t::DENY => esyd("deny/mktemp", glob, b'-'),
action_t::PANIC => esyd("panic/mktemp", glob, b'-'),
action_t::STOP => esyd("stop/mktemp", glob, b'-'),
action_t::KILL => esyd("kill/mktemp", glob, b'-'),
action_t::EXIT => esyd("exit/mktemp", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_mktemp_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/mktemp", glob, b'^'),
action_t::WARN => esyd("warn/mktemp", glob, b'^'),
action_t::FILTER => esyd("filter/mktemp", glob, b'^'),
action_t::DENY => esyd("deny/mktemp", glob, b'^'),
action_t::PANIC => esyd("panic/mktemp", glob, b'^'),
action_t::STOP => esyd("stop/mktemp", glob, b'^'),
action_t::KILL => esyd("kill/mktemp", glob, b'^'),
action_t::EXIT => esyd("exit/mktemp", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_net_bind_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/net/bind", glob, b'+'),
action_t::WARN => esyd("warn/net/bind", glob, b'+'),
action_t::FILTER => esyd("filter/net/bind", glob, b'+'),
action_t::DENY => esyd("deny/net/bind", glob, b'+'),
action_t::PANIC => esyd("panic/net/bind", glob, b'+'),
action_t::STOP => esyd("stop/net/bind", glob, b'+'),
action_t::KILL => esyd("kill/net/bind", glob, b'+'),
action_t::EXIT => esyd("exit/net/bind", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_net_bind_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/net/bind", glob, b'-'),
action_t::WARN => esyd("warn/net/bind", glob, b'-'),
action_t::FILTER => esyd("filter/net/bind", glob, b'-'),
action_t::DENY => esyd("deny/net/bind", glob, b'-'),
action_t::PANIC => esyd("panic/net/bind", glob, b'-'),
action_t::STOP => esyd("stop/net/bind", glob, b'-'),
action_t::KILL => esyd("kill/net/bind", glob, b'-'),
action_t::EXIT => esyd("exit/net/bind", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_net_bind_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/net/bind", glob, b'^'),
action_t::WARN => esyd("warn/net/bind", glob, b'^'),
action_t::FILTER => esyd("filter/net/bind", glob, b'^'),
action_t::DENY => esyd("deny/net/bind", glob, b'^'),
action_t::PANIC => esyd("panic/net/bind", glob, b'^'),
action_t::STOP => esyd("stop/net/bind", glob, b'^'),
action_t::KILL => esyd("kill/net/bind", glob, b'^'),
action_t::EXIT => esyd("exit/net/bind", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_net_connect_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/net/connect", glob, b'+'),
action_t::WARN => esyd("warn/net/connect", glob, b'+'),
action_t::FILTER => esyd("filter/net/connect", glob, b'+'),
action_t::DENY => esyd("deny/net/connect", glob, b'+'),
action_t::PANIC => esyd("panic/net/connect", glob, b'+'),
action_t::STOP => esyd("stop/net/connect", glob, b'+'),
action_t::KILL => esyd("kill/net/connect", glob, b'+'),
action_t::EXIT => esyd("exit/net/connect", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_net_connect_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/net/connect", glob, b'-'),
action_t::WARN => esyd("warn/net/connect", glob, b'-'),
action_t::FILTER => esyd("filter/net/connect", glob, b'-'),
action_t::DENY => esyd("deny/net/connect", glob, b'-'),
action_t::PANIC => esyd("panic/net/connect", glob, b'-'),
action_t::STOP => esyd("stop/net/connect", glob, b'-'),
action_t::KILL => esyd("kill/net/connect", glob, b'-'),
action_t::EXIT => esyd("exit/net/connect", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_net_connect_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/net/connect", glob, b'^'),
action_t::WARN => esyd("warn/net/connect", glob, b'^'),
action_t::FILTER => esyd("filter/net/connect", glob, b'^'),
action_t::DENY => esyd("deny/net/connect", glob, b'^'),
action_t::PANIC => esyd("panic/net/connect", glob, b'^'),
action_t::STOP => esyd("stop/net/connect", glob, b'^'),
action_t::KILL => esyd("kill/net/connect", glob, b'^'),
action_t::EXIT => esyd("exit/net/connect", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_net_sendfd_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/net/sendfd", glob, b'+'),
action_t::WARN => esyd("warn/net/sendfd", glob, b'+'),
action_t::FILTER => esyd("filter/net/sendfd", glob, b'+'),
action_t::DENY => esyd("deny/net/sendfd", glob, b'+'),
action_t::PANIC => esyd("panic/net/sendfd", glob, b'+'),
action_t::STOP => esyd("stop/net/sendfd", glob, b'+'),
action_t::KILL => esyd("kill/net/sendfd", glob, b'+'),
action_t::EXIT => esyd("exit/net/sendfd", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_net_sendfd_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/net/sendfd", glob, b'-'),
action_t::WARN => esyd("warn/net/sendfd", glob, b'-'),
action_t::FILTER => esyd("filter/net/sendfd", glob, b'-'),
action_t::DENY => esyd("deny/net/sendfd", glob, b'-'),
action_t::PANIC => esyd("panic/net/sendfd", glob, b'-'),
action_t::STOP => esyd("stop/net/sendfd", glob, b'-'),
action_t::KILL => esyd("kill/net/sendfd", glob, b'-'),
action_t::EXIT => esyd("exit/net/sendfd", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_net_sendfd_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/net/sendfd", glob, b'^'),
action_t::WARN => esyd("warn/net/sendfd", glob, b'^'),
action_t::FILTER => esyd("filter/net/sendfd", glob, b'^'),
action_t::DENY => esyd("deny/net/sendfd", glob, b'^'),
action_t::PANIC => esyd("panic/net/sendfd", glob, b'^'),
action_t::STOP => esyd("stop/net/sendfd", glob, b'^'),
action_t::KILL => esyd("kill/net/sendfd", glob, b'^'),
action_t::EXIT => esyd("exit/net/sendfd", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_net_link_add(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/net/link", glob, b'+'),
action_t::WARN => esyd("warn/net/link", glob, b'+'),
action_t::FILTER => esyd("filter/net/link", glob, b'+'),
action_t::DENY => esyd("deny/net/link", glob, b'+'),
action_t::PANIC => esyd("panic/net/link", glob, b'+'),
action_t::STOP => esyd("stop/net/link", glob, b'+'),
action_t::KILL => esyd("kill/net/link", glob, b'+'),
action_t::EXIT => esyd("exit/net/link", glob, b'+'),
}
}
#[no_mangle]
pub extern "C" fn syd_net_link_del(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/net/link", glob, b'-'),
action_t::WARN => esyd("warn/net/link", glob, b'-'),
action_t::FILTER => esyd("filter/net/link", glob, b'-'),
action_t::DENY => esyd("deny/net/link", glob, b'-'),
action_t::PANIC => esyd("panic/net/link", glob, b'-'),
action_t::STOP => esyd("stop/net/link", glob, b'-'),
action_t::KILL => esyd("kill/net/link", glob, b'-'),
action_t::EXIT => esyd("exit/net/link", glob, b'-'),
}
}
#[no_mangle]
pub extern "C" fn syd_net_link_rem(action: action_t, glob: *const c_char) -> c_int {
match action {
action_t::ALLOW => esyd("allow/net/link", glob, b'^'),
action_t::WARN => esyd("warn/net/link", glob, b'^'),
action_t::FILTER => esyd("filter/net/link", glob, b'^'),
action_t::DENY => esyd("deny/net/link", glob, b'^'),
action_t::PANIC => esyd("panic/net/link", glob, b'^'),
action_t::STOP => esyd("stop/net/link", glob, b'^'),
action_t::KILL => esyd("kill/net/link", glob, b'^'),
action_t::EXIT => esyd("exit/net/link", glob, b'^'),
}
}
#[no_mangle]
pub extern "C" fn syd_mem_max(size: *const c_char) -> c_int {
esyd("mem/max", size, b':')
}
#[no_mangle]
pub extern "C" fn syd_mem_vm_max(size: *const c_char) -> c_int {
esyd("mem/vm_max", size, b':')
}
#[no_mangle]
pub extern "C" fn syd_pid_max(size: usize) -> c_int {
let mut path = OsString::from("/dev/syd/pid/max:");
let mut buf = itoa::Buffer::new();
let max_str = OsStr::from_bytes(buf.format(size).as_bytes());
path.push(max_str);
stat(path)
}
#[no_mangle]
pub extern "C" fn syd_segvguard_expiry(timeout: u64) -> c_int {
let mut path = OsString::from("/dev/syd/segvguard/expiry:");
let mut buf = itoa::Buffer::new();
let exp_str = OsStr::from_bytes(buf.format(timeout).as_bytes());
path.push(exp_str);
stat(path)
}
#[no_mangle]
pub extern "C" fn syd_segvguard_suspension(timeout: u64) -> c_int {
let mut path = OsString::from("/dev/syd/segvguard/suspension:");
let mut buf = itoa::Buffer::new();
let exp_str = OsStr::from_bytes(buf.format(timeout).as_bytes());
path.push(exp_str);
stat(path)
}
#[no_mangle]
pub extern "C" fn syd_segvguard_maxcrashes(max: u8) -> c_int {
let mut path = OsString::from("/dev/syd/segvguard/maxcrashes:");
let mut buf = itoa::Buffer::new();
let max_str = OsStr::from_bytes(buf.format(max).as_bytes());
path.push(max_str);
stat(path)
}
#[no_mangle]
pub unsafe extern "C" fn syd_exec(file: *const c_char, argv: *const *const c_char) -> c_int {
if file.is_null() || argv.is_null() {
return -EFAULT;
}
let file = CStr::from_ptr(file);
let file = OsStr::from_bytes(file.to_bytes());
let mut path = OsString::from("/dev/syd/cmd/exec!");
path.push(file);
let mut idx: isize = 0;
while !(*argv.offset(idx)).is_null() {
let arg = CStr::from_ptr(*argv.offset(idx));
let arg = OsStr::from_bytes(arg.to_bytes());
path.push(OsStr::from_bytes(&[b'\x1F'])); path.push(arg);
idx = idx.saturating_add(1);
}
let path = PathBuf::from(path);
stat(path)
}