Home | History | Annotate | Download | only in src

Lines Matching refs:rec

20 typedef int (*selabel_initfunc)(struct selabel_handle *rec,
204 int selabel_validate(struct selabel_handle *rec,
209 if (!rec->validating || contexts->validated)
222 static char *selabel_sub_key(struct selabel_handle *rec, const char *key)
227 ptr = selabel_sub(rec->subs, key);
229 dptr = selabel_sub(rec->dist_subs, ptr);
235 ptr = selabel_sub(rec->dist_subs, key);
243 static int selabel_fini(struct selabel_handle *rec,
247 if (compat_validate(rec, lr, rec->spec_file, 0))
258 selabel_lookup_common(struct selabel_handle *rec, int translating,
269 ptr = selabel_sub_key(rec, key);
271 lr = rec->func_lookup(rec, ptr, type);
274 lr = rec->func_lookup(rec, key, type);
279 if (selabel_fini(rec, lr, translating))
286 selabel_lookup_bm_common(struct selabel_handle *rec, int translating,
297 ptr = selabel_sub_key(rec, key);
299 lr = rec->func_lookup_best_match(rec, ptr, aliases, type);
302 lr = rec->func_lookup_best_match(rec, key, aliases, type);
307 if (selabel_fini(rec, lr, translating))
321 struct selabel_handle *rec = NULL;
328 rec = (struct selabel_handle *)malloc(sizeof(*rec));
329 if (!rec)
332 memset(rec, 0, sizeof(*rec));
333 rec->backend = backend;
334 rec->validating = selabel_is_validate_set(opts, nopts);
336 rec->subs = NULL;
337 rec->dist_subs = NULL;
338 rec->digest = selabel_is_digest_set(opts, nopts, rec->digest);
340 if ((*initfuncs[backend])(rec, opts, nopts)) {
341 free(rec->spec_file);
342 free(rec);
343 rec = NULL;
347 return rec;
350 int selabel_lookup(struct selabel_handle *rec, char **con,
355 lr = selabel_lookup_common(rec, 1, key, type);
363 int selabel_lookup_raw(struct selabel_handle *rec, char **con,
368 lr = selabel_lookup_common(rec, 0, key, type);
376 bool selabel_partial_match(struct selabel_handle *rec, const char *key)
381 if (!rec->func_partial_match) {
389 ptr = selabel_sub_key(rec, key);
391 ret = rec->func_partial_match(rec, ptr);
394 ret = rec->func_partial_match(rec, key);
400 int selabel_lookup_best_match(struct selabel_handle *rec, char **con,
405 if (!rec->func_lookup_best_match) {
410 lr = selabel_lookup_bm_common(rec, 1, key, type, aliases);
418 int selabel_lookup_best_match_raw(struct selabel_handle *rec, char **con,
423 if (!rec->func_lookup_best_match) {
428 lr = selabel_lookup_bm_common(rec, 0, key, type, aliases);
445 int selabel_digest(struct selabel_handle *rec,
449 if (!rec->digest) {
454 *digest = rec->digest->digest;
456 *specfiles = rec->digest->specfile_list;
457 *num_specfiles = rec->digest->specfile_cnt;
461 void selabel_close(struct selabel_handle *rec)
463 selabel_subs_fini(rec->subs);
464 selabel_subs_fini(rec->dist_subs);
465 if (rec->digest)
466 selabel_digest_fini(rec->digest);
467 rec->func_close(rec);
468 free(rec->spec_file);
469 free(rec);
472 void selabel_stats(struct selabel_handle *rec)
474 rec->func_stats(rec);