private.h revision fb82f8ed213dd54eebc6bdd5557984c3ba870496
13342ed55e1e0b2f9f4847250927013ae74e125e3bsalomon/* Private definitions for libsepol. */ 23342ed55e1e0b2f9f4847250927013ae74e125e3bsalomon 33342ed55e1e0b2f9f4847250927013ae74e125e3bsalomon/* Endian conversion for reading and writing binary policies */ 43342ed55e1e0b2f9f4847250927013ae74e125e3bsalomon 53342ed55e1e0b2f9f4847250927013ae74e125e3bsalomon#include <sepol/policydb/policydb.h> 63342ed55e1e0b2f9f4847250927013ae74e125e3bsalomon 73342ed55e1e0b2f9f4847250927013ae74e125e3bsalomon#include <byteswap.h> 83342ed55e1e0b2f9f4847250927013ae74e125e3bsalomon#include <endian.h> 93342ed55e1e0b2f9f4847250927013ae74e125e3bsalomon#include <errno.h> 103342ed55e1e0b2f9f4847250927013ae74e125e3bsalomon#include <dso.h> 113342ed55e1e0b2f9f4847250927013ae74e125e3bsalomon 126563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#if __BYTE_ORDER == __LITTLE_ENDIAN 136563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#define cpu_to_le16(x) (x) 143342ed55e1e0b2f9f4847250927013ae74e125e3bsalomon#define le16_to_cpu(x) (x) 156563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#define cpu_to_le32(x) (x) 166563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#define le32_to_cpu(x) (x) 176563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#define cpu_to_le64(x) (x) 186563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#define le64_to_cpu(x) (x) 196563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#else 206563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#define cpu_to_le16(x) bswap_16(x) 216563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#define le16_to_cpu(x) bswap_16(x) 226563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#define cpu_to_le32(x) bswap_32(x) 236563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#define le32_to_cpu(x) bswap_32(x) 246563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#define cpu_to_le64(x) bswap_64(x) 256563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#define le64_to_cpu(x) bswap_64(x) 266563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#endif 276563562cb6b03ad11e33b50b84acf43742b4477ebsalomon 286563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#undef min 296563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#define min(a,b) (((a) < (b)) ? (a) : (b)) 306563562cb6b03ad11e33b50b84acf43742b4477ebsalomon 316563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#undef max 326563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#define max(a,b) ((a) >= (b) ? (a) : (b)) 336563562cb6b03ad11e33b50b84acf43742b4477ebsalomon 346563562cb6b03ad11e33b50b84acf43742b4477ebsalomon#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0])) 356563562cb6b03ad11e33b50b84acf43742b4477ebsalomon 366563562cb6b03ad11e33b50b84acf43742b4477ebsalomon/* Policy compatibility information. */ 376563562cb6b03ad11e33b50b84acf43742b4477ebsalomonstruct policydb_compat_info { 386563562cb6b03ad11e33b50b84acf43742b4477ebsalomon unsigned int type; 396563562cb6b03ad11e33b50b84acf43742b4477ebsalomon unsigned int version; 406563562cb6b03ad11e33b50b84acf43742b4477ebsalomon unsigned int sym_num; 416563562cb6b03ad11e33b50b84acf43742b4477ebsalomon unsigned int ocon_num; 426563562cb6b03ad11e33b50b84acf43742b4477ebsalomon unsigned int target_platform; 436563562cb6b03ad11e33b50b84acf43742b4477ebsalomon}; 446563562cb6b03ad11e33b50b84acf43742b4477ebsalomon 456563562cb6b03ad11e33b50b84acf43742b4477ebsalomonextern struct policydb_compat_info *policydb_lookup_compat(unsigned int version, 466563562cb6b03ad11e33b50b84acf43742b4477ebsalomon unsigned int type, 476563562cb6b03ad11e33b50b84acf43742b4477ebsalomon unsigned int target_platform); 486563562cb6b03ad11e33b50b84acf43742b4477ebsalomon 496563562cb6b03ad11e33b50b84acf43742b4477ebsalomon/* Reading from a policy "file". */ 506563562cb6b03ad11e33b50b84acf43742b4477ebsalomonextern int next_entry(void *buf, struct policy_file *fp, size_t bytes) hidden; 516563562cb6b03ad11e33b50b84acf43742b4477ebsalomonextern size_t put_entry(const void *ptr, size_t size, size_t n, 526563562cb6b03ad11e33b50b84acf43742b4477ebsalomon struct policy_file *fp) hidden; 536563562cb6b03ad11e33b50b84acf43742b4477ebsalomon