Home | History | Annotate | Download | only in src
      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 __APPLE__
      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 __APPLE__
     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 #define is_saturated(x) (x == (typeof(x))-1)
     49 #define zero_or_saturated(x) ((x == 0) || is_saturated(x))
     50 
     51 /* Policy compatibility information. */
     52 struct policydb_compat_info {
     53 	unsigned int type;
     54 	unsigned int version;
     55 	unsigned int sym_num;
     56 	unsigned int ocon_num;
     57 	unsigned int target_platform;
     58 };
     59 
     60 extern struct policydb_compat_info *policydb_lookup_compat(unsigned int version,
     61 							   unsigned int type,
     62 						unsigned int target_platform);
     63 
     64 /* Reading from a policy "file". */
     65 extern int next_entry(void *buf, struct policy_file *fp, size_t bytes) hidden;
     66 extern size_t put_entry(const void *ptr, size_t size, size_t n,
     67 		        struct policy_file *fp) hidden;
     68 extern int str_read(char **strp, struct policy_file *fp, size_t len) hidden;
     69