|
@@ -24,6 +24,9 @@
|
|
|
#ifndef _LINUX_AUDIT_H_
|
|
|
#define _LINUX_AUDIT_H_
|
|
|
|
|
|
+#include <linux/sched.h>
|
|
|
+#include <linux/elf.h>
|
|
|
+
|
|
|
/* Request and reply types */
|
|
|
#define AUDIT_GET 1000 /* Get status */
|
|
|
#define AUDIT_SET 1001 /* Set status (enable/disable/auditd) */
|
|
@@ -67,6 +70,7 @@
|
|
|
#define AUDIT_FSGID 8
|
|
|
#define AUDIT_LOGINUID 9
|
|
|
#define AUDIT_PERS 10
|
|
|
+#define AUDIT_ARCH 11
|
|
|
|
|
|
/* These are ONLY useful when checking
|
|
|
* at syscall exit time (AUDIT_AT_EXIT). */
|
|
@@ -96,6 +100,38 @@
|
|
|
#define AUDIT_FAIL_PRINTK 1
|
|
|
#define AUDIT_FAIL_PANIC 2
|
|
|
|
|
|
+/* distinguish syscall tables */
|
|
|
+#define __AUDIT_ARCH_64BIT 0x80000000
|
|
|
+#define __AUDIT_ARCH_LE 0x40000000
|
|
|
+#define AUDIT_ARCH_ALPHA (EM_ALPHA|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
|
|
+#define AUDIT_ARCH_ARM (EM_ARM|__AUDIT_ARCH_LE)
|
|
|
+#define AUDIT_ARCH_ARMEB (EM_ARM)
|
|
|
+#define AUDIT_ARCH_CRIS (EM_CRIS|__AUDIT_ARCH_LE)
|
|
|
+#define AUDIT_ARCH_FRV (EM_FRV)
|
|
|
+#define AUDIT_ARCH_H8300 (EM_H8_300)
|
|
|
+#define AUDIT_ARCH_I386 (EM_386|__AUDIT_ARCH_LE)
|
|
|
+#define AUDIT_ARCH_IA64 (EM_IA_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
|
|
+#define AUDIT_ARCH_M32R (EM_M32R)
|
|
|
+#define AUDIT_ARCH_M68K (EM_68K)
|
|
|
+#define AUDIT_ARCH_MIPS (EM_MIPS)
|
|
|
+#define AUDIT_ARCH_MIPSEL (EM_MIPS|__AUDIT_ARCH_LE)
|
|
|
+#define AUDIT_ARCH_MIPS64 (EM_MIPS|__AUDIT_ARCH_64BIT)
|
|
|
+#define AUDIT_ARCH_MIPSEL64 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
|
|
+#define AUDIT_ARCH_PARISC (EM_PARISC)
|
|
|
+#define AUDIT_ARCH_PARISC64 (EM_PARISC|__AUDIT_ARCH_64BIT)
|
|
|
+#define AUDIT_ARCH_PPC (EM_PPC)
|
|
|
+#define AUDIT_ARCH_PPC64 (EM_PPC64|__AUDIT_ARCH_64BIT)
|
|
|
+#define AUDIT_ARCH_S390 (EM_S390)
|
|
|
+#define AUDIT_ARCH_S390X (EM_S390|__AUDIT_ARCH_64BIT)
|
|
|
+#define AUDIT_ARCH_SH (EM_SH)
|
|
|
+#define AUDIT_ARCH_SHEL (EM_SH|__AUDIT_ARCH_LE)
|
|
|
+#define AUDIT_ARCH_SH64 (EM_SH|__AUDIT_ARCH_64BIT)
|
|
|
+#define AUDIT_ARCH_SHEL64 (EM_SH|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
|
|
+#define AUDIT_ARCH_SPARC (EM_SPARC)
|
|
|
+#define AUDIT_ARCH_SPARC64 (EM_SPARC64|__AUDIT_ARCH_64BIT)
|
|
|
+#define AUDIT_ARCH_V850 (EM_V850|__AUDIT_ARCH_LE)
|
|
|
+#define AUDIT_ARCH_X86_64 (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
|
|
+
|
|
|
#ifndef __KERNEL__
|
|
|
struct audit_message {
|
|
|
struct nlmsghdr nlh;
|
|
@@ -129,15 +165,19 @@ struct audit_buffer;
|
|
|
struct audit_context;
|
|
|
struct inode;
|
|
|
|
|
|
+#define AUDITSC_INVALID 0
|
|
|
+#define AUDITSC_SUCCESS 1
|
|
|
+#define AUDITSC_FAILURE 2
|
|
|
+#define AUDITSC_RESULT(x) ( ((long)(x))<0?AUDITSC_FAILURE:AUDITSC_SUCCESS )
|
|
|
#ifdef CONFIG_AUDITSYSCALL
|
|
|
/* These are defined in auditsc.c */
|
|
|
/* Public API */
|
|
|
extern int audit_alloc(struct task_struct *task);
|
|
|
extern void audit_free(struct task_struct *task);
|
|
|
-extern void audit_syscall_entry(struct task_struct *task,
|
|
|
+extern void audit_syscall_entry(struct task_struct *task, int arch,
|
|
|
int major, unsigned long a0, unsigned long a1,
|
|
|
unsigned long a2, unsigned long a3);
|
|
|
-extern void audit_syscall_exit(struct task_struct *task, int return_code);
|
|
|
+extern void audit_syscall_exit(struct task_struct *task, int failed, long return_code);
|
|
|
extern void audit_getname(const char *name);
|
|
|
extern void audit_putname(const char *name);
|
|
|
extern void audit_inode(const char *name, const struct inode *inode);
|
|
@@ -153,8 +193,8 @@ extern int audit_ipc_perms(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mo
|
|
|
#else
|
|
|
#define audit_alloc(t) ({ 0; })
|
|
|
#define audit_free(t) do { ; } while (0)
|
|
|
-#define audit_syscall_entry(t,a,b,c,d,e) do { ; } while (0)
|
|
|
-#define audit_syscall_exit(t,r) do { ; } while (0)
|
|
|
+#define audit_syscall_entry(t,ta,a,b,c,d,e) do { ; } while (0)
|
|
|
+#define audit_syscall_exit(t,f,r) do { ; } while (0)
|
|
|
#define audit_getname(n) do { ; } while (0)
|
|
|
#define audit_putname(n) do { ; } while (0)
|
|
|
#define audit_inode(n,i) do { ; } while (0)
|