1 /* 2 * AppArmor security module 3 * 4 * This file contains AppArmor policy loading interface function definitions. 5 * 6 * Copyright (C) 1998-2008 Novell/SUSE 7 * Copyright 2009-2010 Canonical Ltd. 8 * 9 * This program is free software; you can redistribute it and/or 10 * modify it under the terms of the GNU General Public License as 11 * published by the Free Software Foundation, version 2 of the 12 * License. 13 */ 14 15 #ifndef __POLICY_INTERFACE_H 16 #define __POLICY_INTERFACE_H 17 18 #include <linux/list.h> 19 #include <linux/kref.h> 20 21 struct aa_load_ent { 22 struct list_head list; 23 struct aa_profile *new; 24 struct aa_profile *old; 25 struct aa_profile *rename; 26 const char *ns_name; 27 }; 28 29 void aa_load_ent_free(struct aa_load_ent *ent); 30 struct aa_load_ent *aa_load_ent_alloc(void); 31 32 #define PACKED_FLAG_HAT 1 33 34 #define PACKED_MODE_ENFORCE 0 35 #define PACKED_MODE_COMPLAIN 1 36 #define PACKED_MODE_KILL 2 37 #define PACKED_MODE_UNCONFINED 3 38 39 /* struct aa_loaddata - buffer of policy load data set */ 40 struct aa_loaddata { 41 struct kref count; 42 size_t size; 43 int abi; 44 unsigned char *hash; 45 char data[]; 46 }; 47 48 int aa_unpack(struct aa_loaddata *udata, struct list_head *lh, const char **ns); 49 50 static inline struct aa_loaddata * 51 aa_get_loaddata(struct aa_loaddata *data) 52 { 53 if (data) 54 kref_get(&(data->count)); 55 return data; 56 } 57 58 void aa_loaddata_kref(struct kref *kref); 59 static inline void aa_put_loaddata(struct aa_loaddata *data) 60 { 61 if (data) 62 kref_put(&data->count, aa_loaddata_kref); 63 } 64 65 #endif /* __POLICY_INTERFACE_H */ 66