1b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
2b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "cil_internal.h"
3b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "cil_log.h"
4b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "cil_list.h"
5b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "cil_symtab.h"
6b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
7b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_classperms_list(struct cil_list *cp_list);
8b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_level(struct cil_level *level);
9b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_levelrange(struct cil_levelrange *levelrange);
10b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_context(struct cil_context *context);
11b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
12b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
13b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic int __class_reset_perm_values(__attribute__((unused)) hashtab_key_t k, hashtab_datum_t d, void *args)
14b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
15b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	struct cil_perm *perm = (struct cil_perm *)d;
16b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
17b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	perm->value -= *((int *)args);
18b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
19b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	return SEPOL_OK;
20b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
21b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
22b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_class(struct cil_class *class)
23b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
24b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	if (class->common != NULL) {
25b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		struct cil_class *common = class->common;
264df9f89cb1182f0dd324e271109efd7e2eda467bSteve Lawrence		cil_symtab_map(&class->perms, __class_reset_perm_values, &common->num_perms);
27b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		/* during a re-resolve, we need to reset the common, so a classcommon
28b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		 * statement isn't seen as a duplicate */
29b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		class->num_perms -= common->num_perms;
30a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		class->common = NULL; /* Must make this NULL or there will be an error when re-resolving */
31b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	}
32b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	class->ordered = CIL_FALSE;
33b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
34b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
35b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_perm(struct cil_perm *perm)
36b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
37b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cil_reset_classperms_list(perm->classperms);
38b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
39b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
40b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_classperms(struct cil_classperms *cp)
41b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
42b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	if (cp == NULL) {
43b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		return;
44b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	}
45b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
46b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cil_list_destroy(&cp->perms, CIL_FALSE);
47b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
48b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
4976ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrencestatic void cil_reset_classpermission(struct cil_classpermission *cp)
5076ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence{
5176ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence	if (cp == NULL) {
5276ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence		return;
5376ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence	}
5476ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence
5576ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence	cil_reset_classperms_list(cp->classperms);
5676ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence}
5776ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence
5876ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrencestatic void cil_reset_classperms_set(struct cil_classperms_set *cp_set)
5976ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence{
6076ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence	cil_reset_classpermission(cp_set->set);
6176ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence}
6276ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence
63b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_classperms_list(struct cil_list *cp_list)
64b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
65b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	struct cil_list_item *curr;
66b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
67b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	if (cp_list == NULL) {
68b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		return;
69b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	}
70b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
71b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cil_list_for_each(curr, cp_list) {
7276ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence		if (curr->flavor == CIL_CLASSPERMS) { /* KERNEL or MAP */
73b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence			cil_reset_classperms(curr->data);
7476ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence		} else if (curr->flavor == CIL_CLASSPERMS_SET) { /* SET */
7576ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence			cil_reset_classperms_set(curr->data);
76b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		}
77b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	}
78b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
79b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
80b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_classpermissionset(struct cil_classpermissionset *cps)
81b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
82b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cil_reset_classperms_list(cps->classperms);
83b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
84b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
85b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_classmapping(struct cil_classmapping *cm)
86b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
87b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cil_reset_classperms_list(cm->classperms);
88b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
89b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
90b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_alias(struct cil_alias *alias)
91b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
92b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	/* reset actual to NULL during a re-resolve */
93b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	alias->actual = NULL;
94b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
95b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
96b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_user(struct cil_user *user)
97b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
98b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	/* reset the bounds to NULL during a re-resolve */
99b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	user->bounds = NULL;
100a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	user->dftlevel = NULL;
101a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	user->range = NULL;
10277779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy}
10377779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy
10477779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiystatic void cil_reset_userattr(struct cil_userattribute *attr)
10577779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy{
10677779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy	struct cil_list_item *expr = NULL;
10777779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy	struct cil_list_item *next = NULL;
10877779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy
10977779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy	/* during a re-resolve, we need to reset the lists of expression stacks associated with this attribute from a userattribute statement */
11077779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy	if (attr->expr_list != NULL) {
11177779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy		/* we don't want to destroy the expression stacks (cil_list) inside
11277779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy		 * this list cil_list_destroy destroys sublists, so we need to do it
11377779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy		 * manually */
11477779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy		expr = attr->expr_list->head;
11577779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy		while (expr != NULL) {
11677779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy			next = expr->next;
11777779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy			cil_list_item_destroy(&expr, CIL_FALSE);
11877779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy			expr = next;
11977779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy		}
12077779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy		free(attr->expr_list);
12177779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy		attr->expr_list = NULL;
12277779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy	}
12377779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy}
12477779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy
12577779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiystatic void cil_reset_userattributeset(struct cil_userattributeset *uas)
12677779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy{
12777779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy	cil_list_destroy(&uas->datum_expr, CIL_FALSE);
128b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
129b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
130b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_selinuxuser(struct cil_selinuxuser *selinuxuser)
131b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
132a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (selinuxuser->range_str == NULL) {
133a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_levelrange(selinuxuser->range);
134a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
135b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
136b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
137b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_role(struct cil_role *role)
138b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
139b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	/* reset the bounds to NULL during a re-resolve */
140b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	role->bounds = NULL;
141b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
142b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
143b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_roleattr(struct cil_roleattribute *attr)
144b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
145b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	/* during a re-resolve, we need to reset the lists of expression stacks  associated with this attribute from a attributeroles statement */
146b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	if (attr->expr_list != NULL) {
147b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		/* we don't want to destroy the expression stacks (cil_list) inside
148b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		 * this list cil_list_destroy destroys sublists, so we need to do it
149b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		 * manually */
150b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		struct cil_list_item *expr = attr->expr_list->head;
151b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		while (expr != NULL) {
152b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence			struct cil_list_item *next = expr->next;
153b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence			cil_list_item_destroy(&expr, CIL_FALSE);
154b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence			expr = next;
155b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		}
156b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		free(attr->expr_list);
157b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		attr->expr_list = NULL;
158b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	}
159b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
160b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
161b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_roleattributeset(struct cil_roleattributeset *ras)
162b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
163b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cil_list_destroy(&ras->datum_expr, CIL_FALSE);
164b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
165b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
166b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_type(struct cil_type *type)
167b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
168b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	/* reset the bounds to NULL during a re-resolve */
169b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	type->bounds = NULL;
170b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
171b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
172b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_typeattr(struct cil_typeattribute *attr)
173b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
174b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	/* during a re-resolve, we need to reset the lists of expression stacks  associated with this attribute from a attributetypes statement */
175b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	if (attr->expr_list != NULL) {
176b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		/* we don't want to destroy the expression stacks (cil_list) inside
177b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		 * this list cil_list_destroy destroys sublists, so we need to do it
178b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		 * manually */
179b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		struct cil_list_item *expr = attr->expr_list->head;
180b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		while (expr != NULL) {
181b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence			struct cil_list_item *next = expr->next;
182b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence			cil_list_item_destroy(&expr, CIL_FALSE);
183b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence			expr = next;
184b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		}
185b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		free(attr->expr_list);
186b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		attr->expr_list = NULL;
187b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	}
188b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	attr->used = CIL_FALSE;
189b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
190b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
191b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_typeattributeset(struct cil_typeattributeset *tas)
192b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
193b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cil_list_destroy(&tas->datum_expr, CIL_FALSE);
194b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
195b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
196b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_avrule(struct cil_avrule *rule)
197b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
198f5602f5ff980435ee2aefed35ba643310ceeac25Steve Lawrence	cil_reset_classperms_list(rule->perms.classperms);
199b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
200b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
201b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_rangetransition(struct cil_rangetransition *rangetrans)
202b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
203a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (rangetrans->range_str == NULL) {
204a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_levelrange(rangetrans->range);
205a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
206b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
207b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
208b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_sens(struct cil_sens *sens)
209b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
210b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	/* during a re-resolve, we need to reset the categories associated with
211b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	 * this sensitivity from a (sensitivitycategory) statement */
212b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cil_list_destroy(&sens->cats_list, CIL_FALSE);
213b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	sens->ordered = CIL_FALSE;
214b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
215b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
216b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_cat(struct cil_cat *cat)
217b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
218b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cat->ordered = CIL_FALSE;
219b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
220b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
221b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_cats(struct cil_cats *cats)
222b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
223b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	if (cats != NULL) {
224b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cats->evaluated = CIL_FALSE;
225b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_list_destroy(&cats->datum_expr, CIL_FALSE);
226b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	}
227b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
228b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
229b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
230b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_senscat(struct cil_senscat *senscat)
231b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
232b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cil_reset_cats(senscat->cats);
233b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
234b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
235b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_catset(struct cil_catset *catset)
236b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
237b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cil_reset_cats(catset->cats);
238b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
239b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
240b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_level(struct cil_level *level)
241b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
242b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cil_reset_cats(level->cats);
243b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
244b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
245b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_levelrange(struct cil_levelrange *levelrange)
246b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
247a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (levelrange->low_str == NULL) {
248a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_level(levelrange->low);
249a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
250a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence
251a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (levelrange->high_str == NULL) {
252a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_level(levelrange->high);
253a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
254a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence}
255a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence
256a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrencestatic inline void cil_reset_userlevel(struct cil_userlevel *userlevel)
257a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence{
258a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (userlevel->level_str == NULL) {
259a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_level(userlevel->level);
260a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
261a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence}
262a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence
263a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrencestatic inline void cil_reset_userrange(struct cil_userrange *userrange)
264a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence{
265a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (userrange->range_str == NULL) {
266a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_levelrange(userrange->range);
267a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
268b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
269b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
270b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_context(struct cil_context *context)
271b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
272a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (context->range_str == NULL) {
273a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_levelrange(context->range);
274a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
275b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
276b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
277b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_sidcontext(struct cil_sidcontext *sidcontext)
278b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
279a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (sidcontext->context_str == NULL) {
280a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_context(sidcontext->context);
281a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
282b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
283b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
284b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_filecon(struct cil_filecon *filecon)
285b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
286a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (filecon->context_str == NULL && filecon->context != NULL) {
287b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_context(filecon->context);
288b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	}
289b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
290b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
291b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_portcon(struct cil_portcon *portcon)
292b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
293a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (portcon->context_str == NULL) {
294a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_context(portcon->context);
295a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
296b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
297b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
298b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_nodecon(struct cil_nodecon *nodecon)
299b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
300a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (nodecon->context_str == NULL) {
301a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_context(nodecon->context);
302a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
303b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
304b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
305b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_genfscon(struct cil_genfscon *genfscon)
306b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
307a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (genfscon->context_str == NULL) {
308a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_context(genfscon->context);
309a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
310b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
311b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
312b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_netifcon(struct cil_netifcon *netifcon)
313b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
314a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (netifcon->if_context_str == NULL) {
315a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_context(netifcon->if_context);
316a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
317a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence
318a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (netifcon->packet_context_str == NULL) {
319a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_context(netifcon->packet_context);
320a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
321b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
322b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
323b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_pirqcon(struct cil_pirqcon *pirqcon)
324b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
325a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (pirqcon->context_str == NULL) {
326a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_context(pirqcon->context);
327a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
328b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
329b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
330b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_iomemcon(struct cil_iomemcon *iomemcon)
331b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
332a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (iomemcon->context_str == NULL) {
333a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_context(iomemcon->context);
334a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
335b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
336b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
337b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_ioportcon(struct cil_ioportcon *ioportcon)
338b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
339a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (ioportcon->context_str == NULL) {
340a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_context(ioportcon->context);
341a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
342b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
343b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
344b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_pcidevicecon(struct cil_pcidevicecon *pcidevicecon)
345b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
346a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (pcidevicecon->context_str == NULL) {
347a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_context(pcidevicecon->context);
348a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
349b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
350b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
351f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graafstatic void cil_reset_devicetreecon(struct cil_devicetreecon *devicetreecon)
352f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf{
353f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf	if (devicetreecon->context_str == NULL) {
354f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf		cil_reset_context(devicetreecon->context);
355f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf	}
356f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf}
357f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf
358b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_fsuse(struct cil_fsuse *fsuse)
359b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
360a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	if (fsuse->context_str == NULL) {
361a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_context(fsuse->context);
362a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	}
363b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
364b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
365b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_sid(struct cil_sid *sid)
366b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
367b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	/* reset the context to NULL during a re-resolve */
368b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	sid->context = NULL;
369b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	sid->ordered = CIL_FALSE;
370b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
371b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
372b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_constrain(struct cil_constrain *con)
373b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
374b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cil_reset_classperms_list(con->classperms);
375b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cil_list_destroy(&con->datum_expr, CIL_FALSE);
376b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
377b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
378b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_validatetrans(struct cil_validatetrans *vt)
379b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
380b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cil_list_destroy(&vt->datum_expr, CIL_FALSE);
381b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
382b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
383b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_default(struct cil_default *def)
384b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
385b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cil_list_destroy(&def->class_datums, CIL_FALSE);
386b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
387b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
388b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_defaultrange(struct cil_defaultrange *def)
389b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
390b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cil_list_destroy(&def->class_datums, CIL_FALSE);
391b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
392b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
393b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_booleanif(struct cil_booleanif *bif)
394b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
395b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	cil_list_destroy(&bif->datum_expr, CIL_FALSE);
396b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
397b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
398b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrenceint __cil_reset_node(struct cil_tree_node *node,  __attribute__((unused)) uint32_t *finished, __attribute__((unused)) void *extra_args)
399b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
400b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	switch (node->flavor) {
401b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_CLASS:
402b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_class(node->data);
403b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
404b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_PERM:
405b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_MAP_PERM:
406b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_perm(node->data);
407b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
408b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_CLASSPERMISSION:
409b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_classpermission(node->data);
410b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
411b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_CLASSPERMISSIONSET:
412b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_classpermissionset(node->data);
413b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
414b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_CLASSMAPPING:
415b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_classmapping(node->data);
416b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
417b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_TYPEALIAS:
418b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_SENSALIAS:
419b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_CATALIAS:
420b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_alias(node->data);
421b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
422a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	case CIL_USERRANGE:
423a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_userrange(node->data);
424a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		break;
425a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence	case CIL_USERLEVEL:
426a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		cil_reset_userlevel(node->data);
427a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence		break;
428b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_USER:
429b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_user(node->data);
430b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
43177779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy	case CIL_USERATTRIBUTE:
43277779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy		cil_reset_userattr(node->data);
43377779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy		break;
43477779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy	case CIL_USERATTRIBUTESET:
43577779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy		cil_reset_userattributeset(node->data);
43677779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy		break;
437b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_SELINUXUSERDEFAULT:
438b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_SELINUXUSER:
439b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_selinuxuser(node->data);
440b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
441b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_ROLE:
442b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_role(node->data);
443b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
444b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_ROLEATTRIBUTE:
445b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_roleattr(node->data);
446b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
447b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_ROLEATTRIBUTESET:
448b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_roleattributeset(node->data);
449b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
450b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_TYPE:
451b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_type(node->data);
452b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
453b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_TYPEATTRIBUTE:
454b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_typeattr(node->data);
455b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
456b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_TYPEATTRIBUTESET:
457b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_typeattributeset(node->data);
458b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
459b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_RANGETRANSITION:
460b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_rangetransition(node->data);
461b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
462b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_AVRULE:
463b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_avrule(node->data);
464b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
465b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_SENS:
466b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_sens(node->data);
467b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
468b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_CAT:
469b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_cat(node->data);
470b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
471b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_SENSCAT:
472b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_senscat(node->data);
473b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
474b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_CATSET:
475b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_catset(node->data);
476b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
477b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_LEVEL:
478b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_level(node->data);
479b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
480b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_LEVELRANGE:
481b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_levelrange(node->data);
482b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
483b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_CONTEXT:
484b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_context(node->data);
485b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
486b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_SIDCONTEXT:
487b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_sidcontext(node->data);
488b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
489b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_FILECON:
490b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_filecon(node->data);
491b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
492b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_PORTCON:
493b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_portcon(node->data);
494b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
495b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_NODECON:
496b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_nodecon(node->data);
497b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
498b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_GENFSCON:
499b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_genfscon(node->data);
500b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
501b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_NETIFCON:
502b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_netifcon(node->data);
503b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
504b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_PIRQCON:
505b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_pirqcon(node->data);
506b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
507b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_IOMEMCON:
508b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_iomemcon(node->data);
509b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
510b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_IOPORTCON:
511b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_ioportcon(node->data);
512b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
513b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_PCIDEVICECON:
514b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_pcidevicecon(node->data);
515b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
516f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf	case CIL_DEVICETREECON:
517f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf		cil_reset_devicetreecon(node->data);
518f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf		break;
519b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_FSUSE:
520b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_fsuse(node->data);
521b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
522b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_SID:
523b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_sid(node->data);
524b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
525b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_CONSTRAIN:
526b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_MLSCONSTRAIN:
527b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_constrain(node->data);
528b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
529b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_VALIDATETRANS:
530b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_MLSVALIDATETRANS:
531b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_validatetrans(node->data);
532b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
533b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_DEFAULTUSER:
534b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_DEFAULTROLE:
535b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_DEFAULTTYPE:
536b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_default(node->data);
537b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
538b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_DEFAULTRANGE:
539b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_defaultrange(node->data);
540b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
541b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_BOOLEANIF:
542b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_reset_booleanif(node->data);
543b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
544b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_TUNABLEIF:
545b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_CALL:
546b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break; /* Not effected by optional block disabling */
547b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_MACRO:
548b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_SIDORDER:
549b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_CLASSORDER:
550b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_CATORDER:
551b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	case CIL_SENSITIVITYORDER:
552b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break; /* Nothing to reset */
553b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	default:
554b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		break;
555b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	}
556b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
557b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	return SEPOL_OK;
558b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
559b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
560b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrenceint cil_reset_ast(struct cil_tree_node *current)
561b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{
562b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	int rc = SEPOL_ERR;
563b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
564b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	rc = cil_tree_walk(current, __cil_reset_node, NULL, NULL, NULL);
565b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	if (rc != SEPOL_OK) {
566b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		cil_log(CIL_ERR, "Failed to reset AST\n");
567b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence		return SEPOL_ERR;
568b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	}
569b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence
570b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence	return SEPOL_OK;
571b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}
572