211 |
r->granted = false; |
r->granted = false; |
212 |
} |
} |
213 |
|
|
214 |
static bool ccs_same_transition_control_entry(const struct ccs_acl_head *a, |
static bool ccs_same_transition_control(const struct ccs_acl_head *a, |
215 |
const struct ccs_acl_head *b) |
const struct ccs_acl_head *b) |
216 |
{ |
{ |
217 |
const struct ccs_transition_control *p1 = container_of(a, typeof(*p1), |
const struct ccs_transition_control *p1 = container_of(a, typeof(*p1), |
218 |
head); |
head); |
259 |
} |
} |
260 |
error = ccs_update_policy(&e.head, sizeof(e), is_delete, |
error = ccs_update_policy(&e.head, sizeof(e), is_delete, |
261 |
&ccs_policy_list[CCS_ID_TRANSITION_CONTROL], |
&ccs_policy_list[CCS_ID_TRANSITION_CONTROL], |
262 |
ccs_same_transition_control_entry); |
ccs_same_transition_control); |
263 |
out: |
out: |
264 |
ccs_put_name(e.domainname); |
ccs_put_name(e.domainname); |
265 |
ccs_put_name(e.program); |
ccs_put_name(e.program); |
347 |
return type; |
return type; |
348 |
} |
} |
349 |
|
|
350 |
static bool ccs_same_aggregator_entry(const struct ccs_acl_head *a, |
static bool ccs_same_aggregator(const struct ccs_acl_head *a, |
351 |
const struct ccs_acl_head *b) |
const struct ccs_acl_head *b) |
352 |
{ |
{ |
353 |
const struct ccs_aggregator *p1 = container_of(a, typeof(*p1), head); |
const struct ccs_aggregator *p1 = container_of(a, typeof(*p1), head); |
354 |
const struct ccs_aggregator *p2 = container_of(b, typeof(*p2), head); |
const struct ccs_aggregator *p2 = container_of(b, typeof(*p2), head); |
381 |
goto out; |
goto out; |
382 |
error = ccs_update_policy(&e.head, sizeof(e), is_delete, |
error = ccs_update_policy(&e.head, sizeof(e), is_delete, |
383 |
&ccs_policy_list[CCS_ID_AGGREGATOR], |
&ccs_policy_list[CCS_ID_AGGREGATOR], |
384 |
ccs_same_aggregator_entry); |
ccs_same_aggregator); |
385 |
out: |
out: |
386 |
ccs_put_name(e.original_name); |
ccs_put_name(e.original_name); |
387 |
ccs_put_name(e.aggregated_name); |
ccs_put_name(e.aggregated_name); |