static int send_trigger(int trigger) { mach_port_t serverPort; kern_return_t error; error = host_get_audit_control_port(mach_host_self(), &serverPort); if (error != KERN_SUCCESS) { if (geteuid() != 0) { errno = EPERM; perror("audit requires root privileges"); } else mach_error("Cannot get auditd_control Mach port:", error); return (-1); } error = auditd_control(serverPort, trigger); if (error != KERN_SUCCESS) { mach_error("Error sending trigger: ", error); return (-1); } return (0); }
/* * Do all the real work. * Send a message to the audit daemon and check the return code. */ void process(int flags) { kern_return_t retcode; retcode = auditd_control(serverPort, flags); if(retcode != KERN_SUCCESS) { mach_error("error doing IPC: ", retcode); exit(1); } printf("Client call successful\n"); }