16cd6a6acSopenharmony_ci#ifndef __SEPOL_INTERFACES_H_ 26cd6a6acSopenharmony_ci#define __SEPOL_INTERFACES_H_ 36cd6a6acSopenharmony_ci 46cd6a6acSopenharmony_ci#include <sepol/policydb.h> 56cd6a6acSopenharmony_ci#include <sepol/iface_record.h> 66cd6a6acSopenharmony_ci#include <sepol/handle.h> 76cd6a6acSopenharmony_ci 86cd6a6acSopenharmony_ci#ifdef __cplusplus 96cd6a6acSopenharmony_ciextern "C" { 106cd6a6acSopenharmony_ci#endif 116cd6a6acSopenharmony_ci 126cd6a6acSopenharmony_ci/* Return the number of interfaces */ 136cd6a6acSopenharmony_ciextern int sepol_iface_count(sepol_handle_t * handle, 146cd6a6acSopenharmony_ci const sepol_policydb_t * policydb, 156cd6a6acSopenharmony_ci unsigned int *response); 166cd6a6acSopenharmony_ci 176cd6a6acSopenharmony_ci/* Check if an interface exists */ 186cd6a6acSopenharmony_ciextern int sepol_iface_exists(sepol_handle_t * handle, 196cd6a6acSopenharmony_ci const sepol_policydb_t * policydb, 206cd6a6acSopenharmony_ci const sepol_iface_key_t * key, int *response); 216cd6a6acSopenharmony_ci 226cd6a6acSopenharmony_ci/* Query an interface - returns the interface, 236cd6a6acSopenharmony_ci * or NULL if not found */ 246cd6a6acSopenharmony_ciextern int sepol_iface_query(sepol_handle_t * handle, 256cd6a6acSopenharmony_ci const sepol_policydb_t * policydb, 266cd6a6acSopenharmony_ci const sepol_iface_key_t * key, 276cd6a6acSopenharmony_ci sepol_iface_t ** response); 286cd6a6acSopenharmony_ci 296cd6a6acSopenharmony_ci/* Modify an interface, or add it, if the key 306cd6a6acSopenharmony_ci * is not found */ 316cd6a6acSopenharmony_ciextern int sepol_iface_modify(sepol_handle_t * handle, 326cd6a6acSopenharmony_ci sepol_policydb_t * policydb, 336cd6a6acSopenharmony_ci const sepol_iface_key_t * key, 346cd6a6acSopenharmony_ci const sepol_iface_t * data); 356cd6a6acSopenharmony_ci 366cd6a6acSopenharmony_ci/* Iterate the interfaces 376cd6a6acSopenharmony_ci * The handler may return: 386cd6a6acSopenharmony_ci * -1 to signal an error condition, 396cd6a6acSopenharmony_ci * 1 to signal successful exit 406cd6a6acSopenharmony_ci * 0 to signal continue */ 416cd6a6acSopenharmony_ci 426cd6a6acSopenharmony_ciextern int sepol_iface_iterate(sepol_handle_t * handle, 436cd6a6acSopenharmony_ci const sepol_policydb_t * policydb, 446cd6a6acSopenharmony_ci int (*fn) (const sepol_iface_t * iface, 456cd6a6acSopenharmony_ci void *fn_arg), void *arg); 466cd6a6acSopenharmony_ci 476cd6a6acSopenharmony_ci#ifdef __cplusplus 486cd6a6acSopenharmony_ci} 496cd6a6acSopenharmony_ci#endif 506cd6a6acSopenharmony_ci 516cd6a6acSopenharmony_ci#endif 52