5 |
* |
* |
6 |
* Copyright (C) 2005-2008 NTT DATA CORPORATION |
* Copyright (C) 2005-2008 NTT DATA CORPORATION |
7 |
* |
* |
8 |
* Version: 1.6.0-pre 2008/01/03 |
* Version: 1.6.0-pre 2008/01/18 |
9 |
* |
* |
10 |
* This file is applicable to both 2.4.30 and 2.6.11 and later. |
* This file is applicable to both 2.4.30 and 2.6.11 and later. |
11 |
* See README.ccs for ChangeLog. |
* See README.ccs for ChangeLog. |
97 |
|
|
98 |
int AddDomainACL(struct domain_info *domain, struct acl_info *acl) |
int AddDomainACL(struct domain_info *domain, struct acl_info *acl) |
99 |
{ |
{ |
100 |
list1_add_tail_mb(&acl->list, &domain->acl_info_list); |
if (domain) list1_add_tail_mb(&acl->list, &domain->acl_info_list); |
101 |
|
else acl->type &= ~ACL_DELETED; |
102 |
UpdateCounter(CCS_UPDATES_COUNTER_DOMAIN_POLICY); |
UpdateCounter(CCS_UPDATES_COUNTER_DOMAIN_POLICY); |
103 |
return 0; |
return 0; |
104 |
} |
} |
105 |
|
|
106 |
int DelDomainACL(void) |
int DelDomainACL(struct acl_info *acl) |
107 |
{ |
{ |
108 |
|
if (acl) acl->type |= ACL_DELETED; |
109 |
UpdateCounter(CCS_UPDATES_COUNTER_DOMAIN_POLICY); |
UpdateCounter(CCS_UPDATES_COUNTER_DOMAIN_POLICY); |
110 |
return 0; |
return 0; |
111 |
} |
} |
508 |
printk("Reusing %p %s\n", domain, domain->domainname->name); |
printk("Reusing %p %s\n", domain, domain->domainname->name); |
509 |
#endif |
#endif |
510 |
list1_for_each_entry(ptr, &domain->acl_info_list, list) { |
list1_for_each_entry(ptr, &domain->acl_info_list, list) { |
511 |
switch (ptr->type) { |
ptr->type |= ACL_DELETED; |
|
case TYPE_SINGLE_PATH_ACL: |
|
|
container_of(ptr, struct single_path_acl_record, head)->perm = 0; |
|
|
break; |
|
|
case TYPE_SINGLE_PATH_ACL_WITH_CONDITION: |
|
|
container_of(ptr, struct single_path_acl_record_with_condition, record.head)->record.perm = 0; |
|
|
break; |
|
|
case TYPE_DOUBLE_PATH_ACL: |
|
|
container_of(ptr, struct double_path_acl_record, head)->perm = 0; |
|
|
break; |
|
|
case TYPE_DOUBLE_PATH_ACL_WITH_CONDITION: |
|
|
container_of(ptr, struct double_path_acl_record_with_condition, record.head)->record.perm = 0; |
|
|
break; |
|
|
case TYPE_ARGV0_ACL: |
|
|
container_of(ptr, struct argv0_acl_record, head)->is_deleted = 1; |
|
|
break; |
|
|
case TYPE_ARGV0_ACL_WITH_CONDITION: |
|
|
container_of(ptr, struct argv0_acl_record_with_condition, record.head)->record.is_deleted = 1; |
|
|
break; |
|
|
case TYPE_ENV_ACL: |
|
|
container_of(ptr, struct env_acl_record, head)->is_deleted = 1; |
|
|
break; |
|
|
case TYPE_ENV_ACL_WITH_CONDITION: |
|
|
container_of(ptr, struct env_acl_record_with_condition, record.head)->record.is_deleted = 1; |
|
|
break; |
|
|
case TYPE_CAPABILITY_ACL: |
|
|
container_of(ptr, struct capability_acl_record, head)->is_deleted = 1; |
|
|
break; |
|
|
case TYPE_CAPABILITY_ACL_WITH_CONDITION: |
|
|
container_of(ptr, struct capability_acl_record_with_condition, record.head)->record.is_deleted = 1; |
|
|
break; |
|
|
case TYPE_IP_NETWORK_ACL: |
|
|
container_of(ptr, struct ip_network_acl_record, head)->is_deleted = 1; |
|
|
break; |
|
|
case TYPE_IP_NETWORK_ACL_WITH_CONDITION: |
|
|
container_of(ptr, struct ip_network_acl_record_with_condition, record.head)->record.is_deleted = 1; |
|
|
break; |
|
|
case TYPE_SIGNAL_ACL: |
|
|
container_of(ptr, struct signal_acl_record, head)->is_deleted = 1; |
|
|
break; |
|
|
case TYPE_SIGNAL_ACL_WITH_CONDITION: |
|
|
container_of(ptr, struct signal_acl_record_with_condition, record.head)->record.is_deleted = 1; |
|
|
break; |
|
|
} |
|
512 |
} |
} |
513 |
domain->profile = profile; |
domain->profile = profile; |
514 |
domain->quota_warned = 0; |
domain->quota_warned = 0; |