private.h revision 4ebc669d5dc59771284b2d61eb4cce53e6a7069e
1868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)/* Private definitions for libsepol. */
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Endian conversion for reading and writing binary policies */
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include <sepol/policydb/policydb.h>
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifdef DARWIN
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <sys/types.h>
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <machine/endian.h>
11868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#else
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <byteswap.h>
13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include <endian.h>
14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include <errno.h>
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include <dso.h>
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifdef DARWIN
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define __BYTE_ORDER  BYTE_ORDER
217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#define __LITTLE_ENDIAN  LITTLE_ENDIAN
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if __BYTE_ORDER == __LITTLE_ENDIAN
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define cpu_to_le16(x) (x)
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define le16_to_cpu(x) (x)
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define cpu_to_le32(x) (x)
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define le32_to_cpu(x) (x)
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define cpu_to_le64(x) (x)
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define le64_to_cpu(x) (x)
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#else
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define cpu_to_le16(x) bswap_16(x)
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define le16_to_cpu(x) bswap_16(x)
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define cpu_to_le32(x) bswap_32(x)
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define le32_to_cpu(x) bswap_32(x)
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define cpu_to_le64(x) bswap_64(x)
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define le64_to_cpu(x) bswap_64(x)
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#undef min
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define min(a,b) (((a) < (b)) ? (a) : (b))
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#undef max
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define max(a,b) ((a) >= (b) ? (a) : (b))
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Policy compatibility information. */
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct policydb_compat_info {
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)	unsigned int type;
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)	unsigned int version;
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)	unsigned int sym_num;
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)	unsigned int ocon_num;
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)	unsigned int target_platform;
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern struct policydb_compat_info *policydb_lookup_compat(unsigned int version,
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)							   unsigned int type,
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)						unsigned int target_platform);
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Reading from a policy "file". */
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern int next_entry(void *buf, struct policy_file *fp, size_t bytes) hidden;
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern size_t put_entry(const void *ptr, size_t size, size_t n,
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)		        struct policy_file *fp) hidden;
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)