1 /* Private definitions for libsepol. */ 2 3 /* Endian conversion for reading and writing binary policies */ 4 5 #include <sepol/policydb/policydb.h> 6 7 8 #ifdef DARWIN 9 #include <sys/types.h> 10 #include <machine/endian.h> 11 #else 12 #include <byteswap.h> 13 #include <endian.h> 14 #endif 15 16 #include <errno.h> 17 #include <dso.h> 18 19 #ifdef DARWIN 20 #define __BYTE_ORDER BYTE_ORDER 21 #define __LITTLE_ENDIAN LITTLE_ENDIAN 22 #endif 23 24 #if __BYTE_ORDER == __LITTLE_ENDIAN 25 #define cpu_to_le16(x) (x) 26 #define le16_to_cpu(x) (x) 27 #define cpu_to_le32(x) (x) 28 #define le32_to_cpu(x) (x) 29 #define cpu_to_le64(x) (x) 30 #define le64_to_cpu(x) (x) 31 #else 32 #define cpu_to_le16(x) bswap_16(x) 33 #define le16_to_cpu(x) bswap_16(x) 34 #define cpu_to_le32(x) bswap_32(x) 35 #define le32_to_cpu(x) bswap_32(x) 36 #define cpu_to_le64(x) bswap_64(x) 37 #define le64_to_cpu(x) bswap_64(x) 38 #endif 39 40 #undef min 41 #define min(a,b) (((a) < (b)) ? (a) : (b)) 42 43 #undef max 44 #define max(a,b) ((a) >= (b) ? (a) : (b)) 45 46 #define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0])) 47 48 /* Policy compatibility information. */ 49 struct policydb_compat_info { 50 unsigned int type; 51 unsigned int version; 52 unsigned int sym_num; 53 unsigned int ocon_num; 54 unsigned int target_platform; 55 }; 56 57 extern struct policydb_compat_info *policydb_lookup_compat(unsigned int version, 58 unsigned int type, 59 unsigned int target_platform); 60 61 /* Reading from a policy "file". */ 62 extern int next_entry(void *buf, struct policy_file *fp, size_t bytes) hidden; 63 extern size_t put_entry(const void *ptr, size_t size, size_t n, 64 struct policy_file *fp) hidden; 65