3 |
* |
* |
4 |
* Copyright (C) 2005-2010 NTT DATA CORPORATION |
* Copyright (C) 2005-2010 NTT DATA CORPORATION |
5 |
* |
* |
6 |
* Version: 1.8.0-pre 2010/09/01 |
* Version: 1.8.0-pre 2010/10/05 |
7 |
* |
* |
8 |
* 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. |
9 |
* See README.ccs for ChangeLog. |
* See README.ccs for ChangeLog. |
104 |
} |
} |
105 |
error = ccs_update_policy(&e.head, sizeof(e), is_delete, |
error = ccs_update_policy(&e.head, sizeof(e), is_delete, |
106 |
member, ccs_same_address_group); |
member, ccs_same_address_group); |
107 |
out_address: |
out_address: |
108 |
if (e.is_ipv6) { |
if (e.is_ipv6) { |
109 |
ccs_put_ipv6_address(e.min.ipv6); |
ccs_put_ipv6_address(e.min.ipv6); |
110 |
ccs_put_ipv6_address(e.max.ipv6); |
ccs_put_ipv6_address(e.max.ipv6); |
111 |
} |
} |
112 |
} |
} |
113 |
out: |
out: |
114 |
ccs_put_group(group); |
ccs_put_group(group); |
115 |
return error; |
return error; |
116 |
} |
} |
131 |
const struct ccs_group *group) |
const struct ccs_group *group) |
132 |
{ |
{ |
133 |
struct ccs_path_group *member; |
struct ccs_path_group *member; |
134 |
list_for_each_entry_rcu(member, &group->member_list, head.list) { |
list_for_each_entry_srcu(member, &group->member_list, head.list, |
135 |
|
&ccs_ss) { |
136 |
if (member->head.is_deleted) |
if (member->head.is_deleted) |
137 |
continue; |
continue; |
138 |
if (!ccs_path_matches_pattern(pathname, member->member_name)) |
if (!ccs_path_matches_pattern(pathname, member->member_name)) |
158 |
{ |
{ |
159 |
struct ccs_number_group *member; |
struct ccs_number_group *member; |
160 |
bool matched = false; |
bool matched = false; |
161 |
list_for_each_entry_rcu(member, &group->member_list, head.list) { |
list_for_each_entry_srcu(member, &group->member_list, head.list, |
162 |
|
&ccs_ss) { |
163 |
if (member->head.is_deleted) |
if (member->head.is_deleted) |
164 |
continue; |
continue; |
165 |
if (min > member->number.values[1] || |
if (min > member->number.values[1] || |
188 |
struct ccs_address_group *member; |
struct ccs_address_group *member; |
189 |
const u32 ip = ntohl(*address); |
const u32 ip = ntohl(*address); |
190 |
bool matched = false; |
bool matched = false; |
191 |
list_for_each_entry_rcu(member, &group->member_list, head.list) { |
list_for_each_entry_srcu(member, &group->member_list, head.list, |
192 |
|
&ccs_ss) { |
193 |
if (member->head.is_deleted) |
if (member->head.is_deleted) |
194 |
continue; |
continue; |
195 |
if (member->is_ipv6) { |
if (member->is_ipv6) { |