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