booleans.h revision 255e72915d4cbddceb435e13d81601755714e9f3
1868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#ifndef _SEPOL_BOOLEANS_H_
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _SEPOL_BOOLEANS_H_
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stddef.h>
57dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include <sepol/policydb.h>
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <sepol/boolean_record.h>
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <sepol/handle.h>
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*--------------compatibility--------------*/
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
119ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch/* Given an existing binary policy (starting at 'data', with length 'len')
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   and a boolean configuration file named by 'boolpath', rewrite the binary
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   policy for the boolean settings in the boolean configuration file.
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)   The binary policy is rewritten in place in memory.
15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)   Returns 0 upon success, or -1 otherwise. */
167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochextern int sepol_genbools(void *data, size_t len, char *boolpath);
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch/* Given an existing binary policy (starting at 'data', with length 'len')
197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch   and boolean settings specified by the parallel arrays ('names', 'values')
207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch   with 'nel' elements, rewrite the binary policy for the boolean settings.
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)   The binary policy is rewritten in place in memory.
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   Returns 0 upon success or -1 otherwise. */
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int sepol_genbools_array(void *data, size_t len,
246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)				char **names, int *values, int nel);
25effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch/*---------------end compatbility------------*/
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
27868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)/* Set the specified boolean */
28868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)extern int sepol_bool_set(sepol_handle_t * handle,
29868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)			  sepol_policydb_t * policydb,
307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)			  const sepol_bool_key_t * key,
317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)			  const sepol_bool_t * data);
32effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Return the number of booleans */
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)extern int sepol_bool_count(sepol_handle_t * handle,
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)			    const sepol_policydb_t * p, unsigned int *response);
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/* Check if the specified boolean exists */
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern int sepol_bool_exists(sepol_handle_t * handle,
39effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch			     const sepol_policydb_t * policydb,
40effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch			     const sepol_bool_key_t * key, int *response);
41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
42effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch/* Query a boolean - returns the boolean, or NULL if not found */
43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochextern int sepol_bool_query(sepol_handle_t * handle,
44effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch			    const sepol_policydb_t * p,
45effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch			    const sepol_bool_key_t * key,
46c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch			    sepol_bool_t ** response);
47effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch/* Iterate the booleans
49effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch * The handler may return:
50effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch * -1 to signal an error condition,
51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch * 1 to signal successful exit
52effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch * 0 to signal continue */
53c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
54effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochextern int sepol_bool_iterate(sepol_handle_t * handle,
55effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch			      const sepol_policydb_t * policydb,
56effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch			      int (*fn) (const sepol_bool_t * boolean,
57effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch					 void *fn_arg), void *arg);
58effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
59effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif
60effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch