Lines Matching refs:db

50 static int __cil_expr_to_bitmap(struct cil_list *expr, ebitmap_t *out, int max, struct cil_db *db);
51 static int __cil_expr_list_to_bitmap(struct cil_list *expr_list, ebitmap_t *out, int max, struct cil_db *db);
329 struct cil_db *db = extra_args;
348 type->value = db->num_types;
349 db->num_types++;
359 role->value = db->num_roles;
360 db->num_roles++;
365 db->netifcon->count++;
368 db->genfscon->count++;
371 db->filecon->count++;
374 db->nodecon->count++;
377 db->portcon->count++;
380 db->pirqcon->count++;
383 db->iomemcon->count++;
386 db->ioportcon->count++;
389 db->pcidevicecon->count++;
392 db->devicetreecon->count++;
395 db->fsuse->count++;
406 struct cil_db *db = extra_args;
421 if (db->val_to_type == NULL) {
422 db->val_to_type = cil_malloc(sizeof(*db->val_to_type) * db->num_types);
424 db->val_to_type[type->value] = type;
429 if (db->val_to_role == NULL) {
430 db->val_to_role = cil_malloc(sizeof(*db->val_to_role) * db->num_roles);
432 db->val_to_role[role->value] = role;
436 cil_list_append(db->userprefixes, CIL_USERPREFIX, node->data);
440 cil_list_prepend(db->selinuxusers, CIL_SELINUXUSER, node->data);
444 cil_list_append(db->selinuxusers, CIL_SELINUXUSERDEFAULT, node->data);
448 struct cil_sort *sort = db->netifcon;
459 struct cil_sort *sort = db->fsuse;
470 struct cil_sort *sort = db->genfscon;
481 struct cil_sort *sort = db->filecon;
492 struct cil_sort *sort = db->nodecon;
503 struct cil_sort *sort = db->portcon;
514 struct cil_sort *sort = db->pirqcon;
525 struct cil_sort *sort = db->iomemcon;
536 struct cil_sort *sort = db->ioportcon;
547 struct cil_sort *sort = db->pcidevicecon;
558 struct cil_sort *sort = db->devicetreecon;
575 static int __evaluate_type_expression(struct cil_typeattribute *attr, struct cil_db *db)
580 rc = __cil_expr_list_to_bitmap(attr->expr_list, attr->types, db->num_types, db);
590 static int __cil_type_to_bitmap(struct cil_symtab_datum *datum, ebitmap_t *bitmap, struct cil_db *db)
600 rc = __evaluate_type_expression(attr, db);
627 static int __evaluate_role_expression(struct cil_roleattribute *attr, struct cil_db *db)
632 rc = __cil_expr_list_to_bitmap(attr->expr_list, attr->roles, db->num_roles, db);
642 static int __cil_role_to_bitmap(struct cil_symtab_datum *datum, ebitmap_t *bitmap, struct cil_db *db)
652 rc = __evaluate_role_expression(attr, db);
671 static int __cil_perm_to_bitmap(struct cil_symtab_datum *datum, ebitmap_t *bitmap, __attribute__((unused)) struct cil_db *db)
686 static int __evaluate_cat_expression(struct cil_cats *cats, struct cil_db *db)
702 rc = __cil_expr_to_bitmap(cats->datum_expr, &bitmap, db->num_cats, db);
711 cil_list_for_each(curr, db->catorder) {
736 static int __cil_cat_to_bitmap(struct cil_symtab_datum *datum, ebitmap_t *bitmap, struct cil_db *db)
747 rc = __evaluate_cat_expression(catset->cats, db);
821 static int __cil_expr_to_bitmap_helper(struct cil_list_item *curr, enum cil_flavor flavor, ebitmap_t *bitmap, int max, struct cil_db *db)
828 rc = __cil_type_to_bitmap(curr->data, bitmap, db);
831 rc = __cil_role_to_bitmap(curr->data, bitmap, db);
834 rc = __cil_perm_to_bitmap(curr->data, bitmap, db);
837 rc = __cil_cat_to_bitmap(curr->data, bitmap, db);
845 rc = __cil_expr_to_bitmap(l, bitmap, max, db);
854 static int __cil_expr_to_bitmap(struct cil_list *expr, ebitmap_t *out, int max, struct cil_db *db)
894 rc = __cil_expr_to_bitmap_helper(curr->next, flavor, &b1, max, db);
909 rc = __cil_expr_to_bitmap_helper(curr->next->next, flavor, &b2, max, db);
936 rc = __cil_expr_to_bitmap_helper(curr, flavor, &b2, max, db);
964 static int __cil_expr_list_to_bitmap(struct cil_list *expr_list, ebitmap_t *out, int max, struct cil_db *db)
979 rc = __cil_expr_to_bitmap(l, &bitmap, max, db);
998 struct cil_db *db = extra_args;
1015 rc = __evaluate_type_expression(attr, db);
1023 rc = __evaluate_role_expression(attr, db);
1074 struct cil_db *db = extra_args;
1106 role = db->val_to_role[i];
1133 static int __evaluate_level_expression(struct cil_level *level, struct cil_db *db)
1136 return __evaluate_cat_expression(level->cats, db);
1142 static int __evaluate_levelrange_expression(struct cil_levelrange *levelrange, struct cil_db *db)
1147 rc = __evaluate_cat_expression(levelrange->low->cats, db);
1153 rc = __evaluate_cat_expression(levelrange->high->cats, db);
1166 struct cil_db *db = extra_args;
1182 rc = __evaluate_cat_expression(catset->cats, db);
1190 rc = __evaluate_cat_expression(senscat->cats, db);
1197 rc = __evaluate_level_expression(node->data, db);
1204 rc = __evaluate_levelrange_expression(node->data, db);
1212 rc = __evaluate_level_expression(user->dftlevel, db);
1216 rc = __evaluate_levelrange_expression(user->range, db);
1225 rc = __evaluate_levelrange_expression(selinuxuser->range, db);
1233 rc = __evaluate_levelrange_expression(rangetrans->range, db);
1241 rc = __evaluate_levelrange_expression(context->range, db);
1249 rc = __evaluate_levelrange_expression(sidcontext->context->range, db);
1258 rc = __evaluate_levelrange_expression(filecon->context->range, db);
1267 rc = __evaluate_levelrange_expression(portcon->context->range, db);
1275 rc = __evaluate_levelrange_expression(nodecon->context->range, db);
1283 rc = __evaluate_levelrange_expression(genfscon->context->range, db);
1291 rc = __evaluate_levelrange_expression(netifcon->if_context->range, db);
1295 rc = __evaluate_levelrange_expression(netifcon->packet_context->range, db);
1303 rc = __evaluate_levelrange_expression(pirqcon->context->range, db);
1311 rc = __evaluate_levelrange_expression(iomemcon->context->range, db);
1319 rc = __evaluate_levelrange_expression(ioportcon->context->range, db);
1327 rc = __evaluate_levelrange_expression(pcidevicecon->context->range, db);
1335 rc = __evaluate_levelrange_expression(devicetreecon->context->range, db);
1343 rc = __evaluate_levelrange_expression(fsuse->context->range, db);
1382 static int __evaluate_perm_expression(struct cil_list *perms, enum cil_flavor flavor, symtab_t *class_symtab, symtab_t *common_symtab, unsigned int num_perms, struct cil_list **new_list, struct cil_db *db)
1393 rc = __cil_expr_to_bitmap(perms, &bitmap, num_perms, db);
1418 static int __evaluate_classperms(struct cil_classperms *cp, struct cil_db *db)
1430 rc = __evaluate_perm_expression(cp->perms, CIL_PERM, &class->perms, common_symtab, class->num_perms, &new_list, db);
1449 static int __evaluate_classperms_list(struct cil_list *classperms, struct cil_db *db)
1458 rc = __evaluate_classperms(cp, db);
1466 rc = __evaluate_classperms_list(cmp->classperms, db);
1475 rc = __evaluate_classperms_list(cp->classperms, db);
1489 struct cil_db *db;
1498 int rc = __evaluate_classperms_list(cmp->classperms, map_args->db);
1507 static int __evaluate_map_class(struct cil_class *mc, struct cil_db *db)
1511 map_args.db = db;
1521 struct cil_db *db = extra_args;
1535 rc = __evaluate_map_class(node->data, db);
1543 rc = __evaluate_classperms_list(cp->classperms, db);
1551 rc = __evaluate_classperms_list(avrule->classperms, db);
1560 rc = __evaluate_classperms_list(constrain->classperms, db);
1576 static int cil_post_db(struct cil_db *db)
1580 rc = cil_tree_walk(db->ast->root, __cil_post_db_count_helper, NULL, NULL, db);
1586 rc = cil_tree_walk(db->ast->root, __cil_post_db_array_helper, NULL, NULL, db);
1592 rc = cil_tree_walk(db->ast->root, __cil_post_db_attr_helper, NULL, NULL, db);
1598 rc = cil_tree_walk(db->ast->root, __cil_post_db_roletype_helper, NULL, NULL, db);
1604 rc = cil_tree_walk(db->ast->root, __cil_post_db_classperms_helper, NULL, NULL, db);
1610 rc = cil_tree_walk(db->ast->root, __cil_post_db_cat_helper, NULL, NULL, db);
1616 qsort(db->netifcon->array, db->netifcon->count, sizeof(db->netifcon->array), cil_post_netifcon_compare);
1617 qsort(db->genfscon->array, db->genfscon->count, sizeof(db->genfscon->array), cil_post_genfscon_compare);
1618 qsort(db->portcon->array, db->portcon->count, sizeof(db->portcon->array), cil_post_portcon_compare);
1619 qsort(db->nodecon->array, db->nodecon->count, sizeof(db->nodecon->array), cil_post_nodecon_compare);
1620 qsort(db->fsuse->array, db->fsuse->count, sizeof(db->fsuse->array), cil_post_fsuse_compare);
1621 qsort(db->filecon->array, db->filecon->count, sizeof(db->filecon->array), cil_post_filecon_compare);
1622 qsort(db->pirqcon->array, db->pirqcon->count, sizeof(db->pirqcon->array), cil_post_pirqcon_compare);
1623 qsort(db->iomemcon->array, db->iomemcon->count, sizeof(db->iomemcon->array), cil_post_iomemcon_compare);
1624 qsort(db->ioportcon->array, db->ioportcon->count, sizeof(db->ioportcon->array), cil_post_ioportcon_compare);
1625 qsort(db->pcidevicecon->array, db->pcidevicecon->count, sizeof(db->pcidevicecon->array), cil_post_pcidevicecon_compare);
1626 qsort(db->devicetreecon->array, db->devicetreecon->count, sizeof(db->devicetreecon->array), cil_post_devicetreecon_compare);
1632 static int cil_post_verify(struct cil_db *db)
1645 extra_args.db = db;
1654 rc = cil_tree_walk(db->ast->root, __cil_verify_helper, NULL, NULL, &extra_args);
1661 if (db->handle_unknown == -1) {
1663 db->handle_unknown = SEPOL_DENY_UNKNOWN;
1665 db->handle_unknown = handleunknown;
1669 if (db->mls == -1) {
1671 db->mls = CIL_FALSE;
1673 db->mls = mls;
1694 int cil_post_process(struct cil_db *db)
1698 rc = cil_verify_no_classperms_loop(db);
1703 rc = cil_post_db(db);
1705 cil_log(CIL_ERR, "Failed post db handling\n");
1709 rc = cil_post_verify(db);