1255e72915d4cbddceb435e13d81601755714e9fSE Android/* Private definitions for libsepol. */ 2255e72915d4cbddceb435e13d81601755714e9fSE Android 3255e72915d4cbddceb435e13d81601755714e9fSE Android/* Endian conversion for reading and writing binary policies */ 4255e72915d4cbddceb435e13d81601755714e9fSE Android 5255e72915d4cbddceb435e13d81601755714e9fSE Android#include <sepol/policydb/policydb.h> 6255e72915d4cbddceb435e13d81601755714e9fSE Android 7b1db49d77789525ac1f4e73e978e35694f21ea1aStephen Smalley 8b1db49d77789525ac1f4e73e978e35694f21ea1aStephen Smalley#ifdef DARWIN 9b1db49d77789525ac1f4e73e978e35694f21ea1aStephen Smalley#include <sys/types.h> 10b1db49d77789525ac1f4e73e978e35694f21ea1aStephen Smalley#include <machine/endian.h> 11b1db49d77789525ac1f4e73e978e35694f21ea1aStephen Smalley#else 12255e72915d4cbddceb435e13d81601755714e9fSE Android#include <byteswap.h> 13255e72915d4cbddceb435e13d81601755714e9fSE Android#include <endian.h> 14b1db49d77789525ac1f4e73e978e35694f21ea1aStephen Smalley#endif 15b1db49d77789525ac1f4e73e978e35694f21ea1aStephen Smalley 16255e72915d4cbddceb435e13d81601755714e9fSE Android#include <errno.h> 17255e72915d4cbddceb435e13d81601755714e9fSE Android#include <dso.h> 18255e72915d4cbddceb435e13d81601755714e9fSE Android 19b1db49d77789525ac1f4e73e978e35694f21ea1aStephen Smalley#ifdef DARWIN 20b1db49d77789525ac1f4e73e978e35694f21ea1aStephen Smalley#define __BYTE_ORDER BYTE_ORDER 214ebc669d5dc59771284b2d61eb4cce53e6a7069eStephen Smalley#define __LITTLE_ENDIAN LITTLE_ENDIAN 22b1db49d77789525ac1f4e73e978e35694f21ea1aStephen Smalley#endif 23b1db49d77789525ac1f4e73e978e35694f21ea1aStephen Smalley 24255e72915d4cbddceb435e13d81601755714e9fSE Android#if __BYTE_ORDER == __LITTLE_ENDIAN 25255e72915d4cbddceb435e13d81601755714e9fSE Android#define cpu_to_le16(x) (x) 26255e72915d4cbddceb435e13d81601755714e9fSE Android#define le16_to_cpu(x) (x) 27255e72915d4cbddceb435e13d81601755714e9fSE Android#define cpu_to_le32(x) (x) 28255e72915d4cbddceb435e13d81601755714e9fSE Android#define le32_to_cpu(x) (x) 29255e72915d4cbddceb435e13d81601755714e9fSE Android#define cpu_to_le64(x) (x) 30255e72915d4cbddceb435e13d81601755714e9fSE Android#define le64_to_cpu(x) (x) 31255e72915d4cbddceb435e13d81601755714e9fSE Android#else 32255e72915d4cbddceb435e13d81601755714e9fSE Android#define cpu_to_le16(x) bswap_16(x) 33255e72915d4cbddceb435e13d81601755714e9fSE Android#define le16_to_cpu(x) bswap_16(x) 34255e72915d4cbddceb435e13d81601755714e9fSE Android#define cpu_to_le32(x) bswap_32(x) 35255e72915d4cbddceb435e13d81601755714e9fSE Android#define le32_to_cpu(x) bswap_32(x) 36255e72915d4cbddceb435e13d81601755714e9fSE Android#define cpu_to_le64(x) bswap_64(x) 37255e72915d4cbddceb435e13d81601755714e9fSE Android#define le64_to_cpu(x) bswap_64(x) 38255e72915d4cbddceb435e13d81601755714e9fSE Android#endif 39255e72915d4cbddceb435e13d81601755714e9fSE Android 40255e72915d4cbddceb435e13d81601755714e9fSE Android#undef min 41255e72915d4cbddceb435e13d81601755714e9fSE Android#define min(a,b) (((a) < (b)) ? (a) : (b)) 42255e72915d4cbddceb435e13d81601755714e9fSE Android 43fb82f8ed213dd54eebc6bdd5557984c3ba870496Stephen Smalley#undef max 44fb82f8ed213dd54eebc6bdd5557984c3ba870496Stephen Smalley#define max(a,b) ((a) >= (b) ? (a) : (b)) 45fb82f8ed213dd54eebc6bdd5557984c3ba870496Stephen Smalley 46255e72915d4cbddceb435e13d81601755714e9fSE Android#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0])) 47255e72915d4cbddceb435e13d81601755714e9fSE Android 48255e72915d4cbddceb435e13d81601755714e9fSE Android/* Policy compatibility information. */ 49255e72915d4cbddceb435e13d81601755714e9fSE Androidstruct policydb_compat_info { 50255e72915d4cbddceb435e13d81601755714e9fSE Android unsigned int type; 51255e72915d4cbddceb435e13d81601755714e9fSE Android unsigned int version; 52255e72915d4cbddceb435e13d81601755714e9fSE Android unsigned int sym_num; 53255e72915d4cbddceb435e13d81601755714e9fSE Android unsigned int ocon_num; 54255e72915d4cbddceb435e13d81601755714e9fSE Android unsigned int target_platform; 55255e72915d4cbddceb435e13d81601755714e9fSE Android}; 56255e72915d4cbddceb435e13d81601755714e9fSE Android 57255e72915d4cbddceb435e13d81601755714e9fSE Androidextern struct policydb_compat_info *policydb_lookup_compat(unsigned int version, 58255e72915d4cbddceb435e13d81601755714e9fSE Android unsigned int type, 59255e72915d4cbddceb435e13d81601755714e9fSE Android unsigned int target_platform); 60255e72915d4cbddceb435e13d81601755714e9fSE Android 61255e72915d4cbddceb435e13d81601755714e9fSE Android/* Reading from a policy "file". */ 62255e72915d4cbddceb435e13d81601755714e9fSE Androidextern int next_entry(void *buf, struct policy_file *fp, size_t bytes) hidden; 63255e72915d4cbddceb435e13d81601755714e9fSE Androidextern size_t put_entry(const void *ptr, size_t size, size_t n, 64255e72915d4cbddceb435e13d81601755714e9fSE Android struct policy_file *fp) hidden; 65