Home | History | Annotate | Download | only in sepol
      1 #ifndef _SEPOL_NODE_RECORD_H_
      2 #define _SEPOL_NODE_RECORD_H_
      3 
      4 #include <stddef.h>
      5 #include <sepol/context_record.h>
      6 #include <sepol/handle.h>
      7 
      8 #ifdef __cplusplus
      9 extern "C" {
     10 #endif
     11 
     12 struct sepol_node;
     13 struct sepol_node_key;
     14 typedef struct sepol_node sepol_node_t;
     15 typedef struct sepol_node_key sepol_node_key_t;
     16 
     17 #define SEPOL_PROTO_IP4 0
     18 #define SEPOL_PROTO_IP6 1
     19 
     20 /* Key */
     21 extern int sepol_node_compare(const sepol_node_t * node,
     22 			      const sepol_node_key_t * key);
     23 
     24 extern int sepol_node_compare2(const sepol_node_t * node,
     25 			       const sepol_node_t * node2);
     26 
     27 extern int sepol_node_key_create(sepol_handle_t * handle,
     28 				 const char *addr,
     29 				 const char *mask,
     30 				 int proto, sepol_node_key_t ** key_ptr);
     31 
     32 extern void sepol_node_key_unpack(const sepol_node_key_t * key,
     33 				  const char **addr,
     34 				  const char **mask, int *proto);
     35 
     36 extern int sepol_node_key_extract(sepol_handle_t * handle,
     37 				  const sepol_node_t * node,
     38 				  sepol_node_key_t ** key_ptr);
     39 
     40 extern void sepol_node_key_free(sepol_node_key_t * key);
     41 
     42 /* Address */
     43 extern int sepol_node_get_addr(sepol_handle_t * handle,
     44 			       const sepol_node_t * node, char **addr);
     45 
     46 extern int sepol_node_get_addr_bytes(sepol_handle_t * handle,
     47 				     const sepol_node_t * node,
     48 				     char **addr, size_t * addr_sz);
     49 
     50 extern int sepol_node_set_addr(sepol_handle_t * handle,
     51 			       sepol_node_t * node,
     52 			       int proto, const char *addr);
     53 
     54 extern int sepol_node_set_addr_bytes(sepol_handle_t * handle,
     55 				     sepol_node_t * node,
     56 				     const char *addr, size_t addr_sz);
     57 
     58 /* Netmask */
     59 extern int sepol_node_get_mask(sepol_handle_t * handle,
     60 			       const sepol_node_t * node, char **mask);
     61 
     62 extern int sepol_node_get_mask_bytes(sepol_handle_t * handle,
     63 				     const sepol_node_t * node,
     64 				     char **mask, size_t * mask_sz);
     65 
     66 extern int sepol_node_set_mask(sepol_handle_t * handle,
     67 			       sepol_node_t * node,
     68 			       int proto, const char *mask);
     69 
     70 extern int sepol_node_set_mask_bytes(sepol_handle_t * handle,
     71 				     sepol_node_t * node,
     72 				     const char *mask, size_t mask_sz);
     73 
     74 /* Protocol */
     75 extern int sepol_node_get_proto(const sepol_node_t * node);
     76 
     77 extern void sepol_node_set_proto(sepol_node_t * node, int proto);
     78 
     79 extern const char *sepol_node_get_proto_str(int proto);
     80 
     81 /* Context */
     82 extern sepol_context_t *sepol_node_get_con(const sepol_node_t * node);
     83 
     84 extern int sepol_node_set_con(sepol_handle_t * handle,
     85 			      sepol_node_t * node, sepol_context_t * con);
     86 
     87 /* Create/Clone/Destroy */
     88 extern int sepol_node_create(sepol_handle_t * handle, sepol_node_t ** node_ptr);
     89 
     90 extern int sepol_node_clone(sepol_handle_t * handle,
     91 			    const sepol_node_t * node,
     92 			    sepol_node_t ** node_ptr);
     93 
     94 extern void sepol_node_free(sepol_node_t * node);
     95 
     96 #ifdef __cplusplus
     97 }
     98 #endif
     99 
    100 #endif
    101