1/* Copyright (C) 2005 Red Hat, Inc. */ 2 3/* Object: semanage_iface_t (Network Interface) 4 * Object: semanage_iface_key_t (Network Interface 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/iface_record.h> 11 12typedef sepol_context_t semanage_context_t; 13typedef sepol_iface_t semanage_iface_t; 14typedef sepol_iface_key_t semanage_iface_key_t; 15#define _SEMANAGE_CONTEXT_DEFINED_ 16#define _SEMANAGE_IFACE_DEFINED_ 17 18typedef sepol_iface_t record_t; 19typedef sepol_iface_key_t record_key_t; 20#define DBASE_RECORD_DEFINED 21 22#include "iface_internal.h" 23#include "handle.h" 24#include "database.h" 25 26/* Key */ 27int semanage_iface_compare(const semanage_iface_t * iface, 28 const semanage_iface_key_t * key) 29{ 30 31 return sepol_iface_compare(iface, key); 32} 33 34hidden_def(semanage_iface_compare) 35 36int semanage_iface_compare2(const semanage_iface_t * iface, 37 const semanage_iface_t * iface2) 38{ 39 40 return sepol_iface_compare2(iface, iface2); 41} 42 43hidden_def(semanage_iface_compare2) 44 45static int semanage_iface_compare2_qsort(const semanage_iface_t ** iface, 46 const semanage_iface_t ** iface2) 47{ 48 49 return sepol_iface_compare2(*iface, *iface2); 50} 51 52int semanage_iface_key_create(semanage_handle_t * handle, 53 const char *name, semanage_iface_key_t ** key_ptr) 54{ 55 56 return sepol_iface_key_create(handle->sepolh, name, key_ptr); 57} 58 59int semanage_iface_key_extract(semanage_handle_t * handle, 60 const semanage_iface_t * iface, 61 semanage_iface_key_t ** key_ptr) 62{ 63 64 return sepol_iface_key_extract(handle->sepolh, iface, key_ptr); 65} 66 67hidden_def(semanage_iface_key_extract) 68 69void semanage_iface_key_free(semanage_iface_key_t * key) 70{ 71 72 sepol_iface_key_free(key); 73} 74 75hidden_def(semanage_iface_key_free) 76 77/* Name */ 78const char *semanage_iface_get_name(const semanage_iface_t * iface) 79{ 80 81 return sepol_iface_get_name(iface); 82} 83 84hidden_def(semanage_iface_get_name) 85 86int semanage_iface_set_name(semanage_handle_t * handle, 87 semanage_iface_t * iface, const char *name) 88{ 89 90 return sepol_iface_set_name(handle->sepolh, iface, name); 91} 92 93hidden_def(semanage_iface_set_name) 94 95/* Context */ 96semanage_context_t *semanage_iface_get_ifcon(const semanage_iface_t * iface) 97{ 98 99 return sepol_iface_get_ifcon(iface); 100} 101 102hidden_def(semanage_iface_get_ifcon) 103 104int semanage_iface_set_ifcon(semanage_handle_t * handle, 105 semanage_iface_t * iface, semanage_context_t * con) 106{ 107 108 return sepol_iface_set_ifcon(handle->sepolh, iface, con); 109} 110 111hidden_def(semanage_iface_set_ifcon) 112 113semanage_context_t *semanage_iface_get_msgcon(const semanage_iface_t * iface) 114{ 115 116 return sepol_iface_get_msgcon(iface); 117} 118 119hidden_def(semanage_iface_get_msgcon) 120 121int semanage_iface_set_msgcon(semanage_handle_t * handle, 122 semanage_iface_t * iface, 123 semanage_context_t * con) 124{ 125 126 return sepol_iface_set_msgcon(handle->sepolh, iface, con); 127} 128 129hidden_def(semanage_iface_set_msgcon) 130 131/* Create/Clone/Destroy */ 132int semanage_iface_create(semanage_handle_t * handle, 133 semanage_iface_t ** iface_ptr) 134{ 135 136 return sepol_iface_create(handle->sepolh, iface_ptr); 137} 138 139hidden_def(semanage_iface_create) 140 141int semanage_iface_clone(semanage_handle_t * handle, 142 const semanage_iface_t * iface, 143 semanage_iface_t ** iface_ptr) 144{ 145 146 return sepol_iface_clone(handle->sepolh, iface, iface_ptr); 147} 148 149hidden_def(semanage_iface_clone) 150 151void semanage_iface_free(semanage_iface_t * iface) 152{ 153 154 sepol_iface_free(iface); 155} 156 157hidden_def(semanage_iface_free) 158 159/* Record base functions */ 160record_table_t SEMANAGE_IFACE_RTABLE = { 161 .create = semanage_iface_create, 162 .key_extract = semanage_iface_key_extract, 163 .key_free = semanage_iface_key_free, 164 .clone = semanage_iface_clone, 165 .compare = semanage_iface_compare, 166 .compare2 = semanage_iface_compare2, 167 .compare2_qsort = semanage_iface_compare2_qsort, 168 .free = semanage_iface_free, 169}; 170