1/* Copyright (C) 2017 Mellanox Technologies Inc. */ 2 3/* Object: semanage_ibpkey_t (Infiniband Pkey) 4 * Object: semanage_ibpkey_key_t (Infiniband Pkey Key) 5 * Implements: record_t (Database Record) 6 * Implements: record_key_t (Database Record Key) 7 */ 8 9#include <sepol/context_record.h> 10#include <sepol/ibpkey_record.h> 11 12typedef sepol_context_t semanage_context_t; 13typedef sepol_ibpkey_t semanage_ibpkey_t; 14typedef sepol_ibpkey_key_t semanage_ibpkey_key_t; 15#define _SEMANAGE_IBPKEY_DEFINED_ 16#define _SEMANAGE_CONTEXT_DEFINED_ 17 18typedef semanage_ibpkey_t record_t; 19typedef semanage_ibpkey_key_t record_key_t; 20#define DBASE_RECORD_DEFINED 21 22#include "ibpkey_internal.h" 23#include "handle.h" 24#include "database.h" 25 26int semanage_ibpkey_compare(const semanage_ibpkey_t *ibpkey, 27 const semanage_ibpkey_key_t *key) 28{ 29 return sepol_ibpkey_compare(ibpkey, key); 30} 31 32hidden_def(semanage_ibpkey_compare) 33 34int semanage_ibpkey_compare2(const semanage_ibpkey_t *ibpkey, 35 const semanage_ibpkey_t *ibpkey2) 36{ 37 return sepol_ibpkey_compare2(ibpkey, ibpkey2); 38} 39 40hidden_def(semanage_ibpkey_compare2) 41 42hidden int semanage_ibpkey_compare2_qsort(const semanage_ibpkey_t **ibpkey, 43 const semanage_ibpkey_t **ibpkey2) 44{ 45 return sepol_ibpkey_compare2(*ibpkey, *ibpkey2); 46} 47 48int semanage_ibpkey_key_create(semanage_handle_t *handle, 49 const char *subnet_prefix, 50 int low, int high, 51 semanage_ibpkey_key_t **key_ptr) 52{ 53 return sepol_ibpkey_key_create(handle->sepolh, subnet_prefix, low, high, key_ptr); 54} 55 56int semanage_ibpkey_key_extract(semanage_handle_t *handle, 57 const semanage_ibpkey_t *ibpkey, 58 semanage_ibpkey_key_t **key_ptr) 59{ 60 return sepol_ibpkey_key_extract(handle->sepolh, ibpkey, key_ptr); 61} 62 63hidden_def(semanage_ibpkey_key_extract) 64 65void semanage_ibpkey_key_free(semanage_ibpkey_key_t *key) 66{ 67 sepol_ibpkey_key_free(key); 68} 69 70hidden_def(semanage_ibpkey_key_free) 71 72int semanage_ibpkey_get_subnet_prefix(semanage_handle_t *handle, 73 const semanage_ibpkey_t *ibpkey, 74 char **subnet_prefix_ptr) 75{ 76 return sepol_ibpkey_get_subnet_prefix(handle->sepolh, ibpkey, subnet_prefix_ptr); 77} 78 79hidden_def(semanage_ibpkey_get_subnet_prefix) 80 81uint64_t semanage_ibpkey_get_subnet_prefix_bytes(const semanage_ibpkey_t *ibpkey) 82{ 83 return sepol_ibpkey_get_subnet_prefix_bytes(ibpkey); 84} 85 86hidden_def(semanage_ibpkey_get_subnet_prefix_bytes) 87 88int semanage_ibpkey_set_subnet_prefix(semanage_handle_t *handle, 89 semanage_ibpkey_t *ibpkey, 90 const char *subnet_prefix) 91{ 92 return sepol_ibpkey_set_subnet_prefix(handle->sepolh, ibpkey, subnet_prefix); 93} 94 95hidden_def(semanage_ibpkey_set_subnet_prefix) 96 97void semanage_ibpkey_set_subnet_prefix_bytes(semanage_ibpkey_t *ibpkey, 98 uint64_t subnet_prefix) 99{ 100 return sepol_ibpkey_set_subnet_prefix_bytes(ibpkey, subnet_prefix); 101} 102 103hidden_def(semanage_ibpkey_set_subnet_prefix_bytes) 104 105int semanage_ibpkey_get_low(const semanage_ibpkey_t *ibpkey) 106{ 107 return sepol_ibpkey_get_low(ibpkey); 108} 109 110hidden_def(semanage_ibpkey_get_low) 111 112int semanage_ibpkey_get_high(const semanage_ibpkey_t *ibpkey) 113{ 114 return sepol_ibpkey_get_high(ibpkey); 115} 116 117hidden_def(semanage_ibpkey_get_high) 118 119void semanage_ibpkey_set_pkey(semanage_ibpkey_t *ibpkey, int ibpkey_num) 120{ 121 sepol_ibpkey_set_pkey(ibpkey, ibpkey_num); 122} 123 124hidden_def(semanage_ibpkey_set_pkey) 125 126void semanage_ibpkey_set_range(semanage_ibpkey_t *ibpkey, int low, int high) 127{ 128 sepol_ibpkey_set_range(ibpkey, low, high); 129} 130 131hidden_def(semanage_ibpkey_set_range) 132 133semanage_context_t *semanage_ibpkey_get_con(const semanage_ibpkey_t *ibpkey) 134{ 135 return sepol_ibpkey_get_con(ibpkey); 136} 137 138hidden_def(semanage_ibpkey_get_con) 139 140int semanage_ibpkey_set_con(semanage_handle_t *handle, 141 semanage_ibpkey_t *ibpkey, semanage_context_t *con) 142{ 143 return sepol_ibpkey_set_con(handle->sepolh, ibpkey, con); 144} 145 146hidden_def(semanage_ibpkey_set_con) 147 148int semanage_ibpkey_create(semanage_handle_t *handle, 149 semanage_ibpkey_t **ibpkey_ptr) 150{ 151 return sepol_ibpkey_create(handle->sepolh, ibpkey_ptr); 152} 153 154hidden_def(semanage_ibpkey_create) 155 156int semanage_ibpkey_clone(semanage_handle_t *handle, 157 const semanage_ibpkey_t *ibpkey, 158 semanage_ibpkey_t **ibpkey_ptr) 159{ 160 return sepol_ibpkey_clone(handle->sepolh, ibpkey, ibpkey_ptr); 161} 162 163hidden_def(semanage_ibpkey_clone) 164 165void semanage_ibpkey_free(semanage_ibpkey_t *ibpkey) 166{ 167 sepol_ibpkey_free(ibpkey); 168} 169 170hidden_def(semanage_ibpkey_free) 171 172/* key base functions */ 173record_table_t SEMANAGE_IBPKEY_RTABLE = { 174 .create = semanage_ibpkey_create, 175 .key_extract = semanage_ibpkey_key_extract, 176 .key_free = semanage_ibpkey_key_free, 177 .clone = semanage_ibpkey_clone, 178 .compare = semanage_ibpkey_compare, 179 .compare2 = semanage_ibpkey_compare2, 180 .compare2_qsort = semanage_ibpkey_compare2_qsort, 181 .free = semanage_ibpkey_free, 182}; 183