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