node_record.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #ifndef _SEPOL_NODE_RECORD_H_
  2. #define _SEPOL_NODE_RECORD_H_
  3. #include <stddef.h>
  4. #include <sepol/context_record.h>
  5. #include <sepol/handle.h>
  6. struct sepol_node;
  7. struct sepol_node_key;
  8. typedef struct sepol_node sepol_node_t;
  9. typedef struct sepol_node_key sepol_node_key_t;
  10. #define SEPOL_PROTO_IP4 0
  11. #define SEPOL_PROTO_IP6 1
  12. /* Key */
  13. extern int sepol_node_compare(const sepol_node_t * node,
  14. const sepol_node_key_t * key);
  15. extern int sepol_node_compare2(const sepol_node_t * node,
  16. const sepol_node_t * node2);
  17. extern int sepol_node_key_create(sepol_handle_t * handle,
  18. const char *addr,
  19. const char *mask,
  20. int proto, sepol_node_key_t ** key_ptr);
  21. extern void sepol_node_key_unpack(const sepol_node_key_t * key,
  22. const char **addr,
  23. const char **mask, int *proto);
  24. extern int sepol_node_key_extract(sepol_handle_t * handle,
  25. const sepol_node_t * node,
  26. sepol_node_key_t ** key_ptr);
  27. extern void sepol_node_key_free(sepol_node_key_t * key);
  28. /* Address */
  29. extern int sepol_node_get_addr(sepol_handle_t * handle,
  30. const sepol_node_t * node, char **addr);
  31. extern int sepol_node_get_addr_bytes(sepol_handle_t * handle,
  32. const sepol_node_t * node,
  33. char **addr, size_t * addr_sz);
  34. extern int sepol_node_set_addr(sepol_handle_t * handle,
  35. sepol_node_t * node,
  36. int proto, const char *addr);
  37. extern int sepol_node_set_addr_bytes(sepol_handle_t * handle,
  38. sepol_node_t * node,
  39. const char *addr, size_t addr_sz);
  40. /* Netmask */
  41. extern int sepol_node_get_mask(sepol_handle_t * handle,
  42. const sepol_node_t * node, char **mask);
  43. extern int sepol_node_get_mask_bytes(sepol_handle_t * handle,
  44. const sepol_node_t * node,
  45. char **mask, size_t * mask_sz);
  46. extern int sepol_node_set_mask(sepol_handle_t * handle,
  47. sepol_node_t * node,
  48. int proto, const char *mask);
  49. extern int sepol_node_set_mask_bytes(sepol_handle_t * handle,
  50. sepol_node_t * node,
  51. const char *mask, size_t mask_sz);
  52. /* Protocol */
  53. extern int sepol_node_get_proto(const sepol_node_t * node);
  54. extern void sepol_node_set_proto(sepol_node_t * node, int proto);
  55. extern const char *sepol_node_get_proto_str(int proto);
  56. /* Context */
  57. extern sepol_context_t *sepol_node_get_con(const sepol_node_t * node);
  58. extern int sepol_node_set_con(sepol_handle_t * handle,
  59. sepol_node_t * node, sepol_context_t * con);
  60. /* Create/Clone/Destroy */
  61. extern int sepol_node_create(sepol_handle_t * handle, sepol_node_t ** node_ptr);
  62. extern int sepol_node_clone(sepol_handle_t * handle,
  63. const sepol_node_t * node,
  64. sepol_node_t ** node_ptr);
  65. extern void sepol_node_free(sepol_node_t * node);
  66. #endif