Home | History | Annotate | Download | only in src

Lines Matching defs:node

37 		if ((cur->node->key.specified & AVTAB_TYPE) && (top != cur)) {
136 /* Create a new conditional node, optionally copying
137 * the conditional expression from an existing node.
138 * If node is NULL then a new node will be created
141 cond_node_t *cond_node_create(policydb_t * p, cond_node_t * node)
152 if (node) {
153 new_node->expr = cond_copy_expr(node->expr);
159 new_node->nbools = node->nbools;
160 for (i = 0; i < min(node->nbools, COND_MAX_BOOLS); i++)
161 new_node->bool_ids[i] = node->bool_ids[i];
162 new_node->expr_pre_comp = node->expr_pre_comp;
163 new_node->flags = node->flags;
171 * pointer to the existing node, setting 'was_created' to 0.
190 /* return either a pre-existing matching node or create a new node */
197 /* add conditional node to policy list */
304 * current state of the node it sets the rules in the true/false
308 static int evaluate_cond_node(policydb_t * p, cond_node_t * node)
313 new_state = cond_evaluate_expr(p, node->expr);
314 if (new_state != node->cur_state) {
315 node->cur_state = new_state;
320 for (cur = node->true_list; cur != NULL; cur = cur->next) {
322 cur->node->key.specified &= ~AVTAB_ENABLED;
324 cur->node->key.specified |= AVTAB_ENABLED;
328 for (cur = node->false_list; cur != NULL; cur = cur->next) {
331 cur->node->key.specified &= ~AVTAB_ENABLED;
333 cur->node->key.specified |= AVTAB_ENABLED;
383 /* free the "not" node in the list */
471 /* the avtab_ptr_t node is destroy by the avtab */
489 void cond_node_destroy(cond_node_t * node)
491 if (!node)
494 cond_expr_destroy(node->expr);
495 avrule_list_destroy(node->avtrue_list);
496 avrule_list_destroy(node->avfalse_list);
497 cond_av_list_destroy(node->true_list);
498 cond_av_list_destroy(node->false_list);
665 if (cur->node == node_ptr) {
697 list->node = node_ptr;
763 static int cond_read_node(policydb_t * p, cond_node_t * node, void *fp)
773 node->cur_state = le32_to_cpu(buf[0]);
803 node->expr = expr;
811 if (cond_read_av_list(p, fp, &node->true_list, NULL) != 0)
813 if (cond_read_av_list(p, fp, &node->false_list, node->true_list)
817 if (avrule_read_list(p, &node->avtrue_list, fp))
819 if (avrule_read_list(p, &node->avfalse_list, fp))
828 node->flags = le32_to_cpu(buf[0]);
833 cond_node_destroy(node);
834 free(node);
840 cond_node_t *node, *last = NULL;
855 node = malloc(sizeof(cond_node_t));
856 if (!node)
858 memset(node, 0, sizeof(cond_node_t));
860 if (cond_read_node(p, node, fp) != 0)
864 *list = node;
866 last->next = node;
868 last = node;
881 avtab_ptr_t node;
886 for (node = avtab_search_node(ctab, key); node != NULL;
887 node = avtab_search_node_next(node, key->specified)) {
889 (node->key.specified & (AVTAB_ALLOWED | AVTAB_ENABLED)))
890 avd->allowed |= node->datum.data;
892 (node->key.specified & (AVTAB_AUDITDENY | AVTAB_ENABLED)))
898 avd->auditdeny &= node->datum.data;
900 (node->key.specified & (AVTAB_AUDITALLOW | AVTAB_ENABLED)))
901 avd->auditallow |= node->datum.data;
914 if (cur_av->node->key.source_type == key->source_type &&
915 cur_av->node->key.target_type == key->target_type &&
916 cur_av->node->key.target_class == key->target_class)
918 return &cur_av->node->datum;