📄 avc.h
字号:
/* * Access vector cache interface for object managers. * * Author : Stephen Smalley, <sds@epoch.ncsc.mil> */#ifndef _SELINUX_AVC_H_#define _SELINUX_AVC_H_#include <linux/stddef.h>#include <linux/errno.h>#include <linux/kernel.h>#include <linux/kdev_t.h>#include <linux/spinlock.h>#include <linux/init.h>#include <linux/in6.h>#include <asm/system.h>#include "flask.h"#include "av_permissions.h"#include "security.h"#ifdef CONFIG_SECURITY_SELINUX_DEVELOPextern int selinux_enforcing;#else#define selinux_enforcing 1#endif/* * An entry in the AVC. */struct avc_entry;struct task_struct;struct vfsmount;struct dentry;struct inode;struct sock;struct sk_buff;/* Auxiliary data to use in generating the audit record. */struct avc_audit_data { char type;#define AVC_AUDIT_DATA_FS 1#define AVC_AUDIT_DATA_NET 2#define AVC_AUDIT_DATA_CAP 3#define AVC_AUDIT_DATA_IPC 4 struct task_struct *tsk; union { struct { struct vfsmount *mnt; struct dentry *dentry; struct inode *inode; } fs; struct { char *netif; struct sock *sk; u16 family; u16 dport; u16 sport; union { struct { u32 daddr; u32 saddr; } v4; struct { struct in6_addr daddr; struct in6_addr saddr; } v6; } fam; } net; int cap; int ipc_id; } u;};#define v4info fam.v4#define v6info fam.v6/* Initialize an AVC audit data structure. */#define AVC_AUDIT_DATA_INIT(_d,_t) \ { memset((_d), 0, sizeof(struct avc_audit_data)); (_d)->type = AVC_AUDIT_DATA_##_t; }/* * AVC statistics */struct avc_cache_stats{ unsigned int lookups; unsigned int hits; unsigned int misses; unsigned int allocations; unsigned int reclaims; unsigned int frees;};/* * AVC display support */struct audit_buffer;void avc_dump_av(struct audit_buffer *ab, u16 tclass, u32 av);void avc_dump_query(struct audit_buffer *ab, u32 ssid, u32 tsid, u16 tclass);/* * AVC operations */void __init avc_init(void);void avc_audit(u32 ssid, u32 tsid, u16 tclass, u32 requested, struct av_decision *avd, int result, struct avc_audit_data *auditdata);int avc_has_perm_noaudit(u32 ssid, u32 tsid, u16 tclass, u32 requested, struct av_decision *avd);int avc_has_perm(u32 ssid, u32 tsid, u16 tclass, u32 requested, struct avc_audit_data *auditdata);#define AVC_CALLBACK_GRANT 1#define AVC_CALLBACK_TRY_REVOKE 2#define AVC_CALLBACK_REVOKE 4#define AVC_CALLBACK_RESET 8#define AVC_CALLBACK_AUDITALLOW_ENABLE 16#define AVC_CALLBACK_AUDITALLOW_DISABLE 32#define AVC_CALLBACK_AUDITDENY_ENABLE 64#define AVC_CALLBACK_AUDITDENY_DISABLE 128int avc_add_callback(int (*callback)(u32 event, u32 ssid, u32 tsid, u16 tclass, u32 perms, u32 *out_retained), u32 events, u32 ssid, u32 tsid, u16 tclass, u32 perms);/* Exported to selinuxfs */int avc_get_hash_stats(char *page);extern unsigned int avc_cache_threshold;#ifdef CONFIG_SECURITY_SELINUX_AVC_STATSDECLARE_PER_CPU(struct avc_cache_stats, avc_cache_stats);#endif#endif /* _SELINUX_AVC_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -