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)