child-sa: Pass the number of total policies tied to an SA to the kernel

This will be useful if the kernel backend has to know how many policies
follow an SA install, for example if it must install all policies concurrently.
This commit is contained in:
Martin Willi 2013-12-24 11:27:59 +01:00
parent 5e6e214ab4
commit 4b09bd6c29
2 changed files with 10 additions and 0 deletions

View File

@ -847,6 +847,14 @@ METHOD(child_sa_t, add_policies, status_t,
priority = this->trap ? POLICY_PRIORITY_ROUTED priority = this->trap ? POLICY_PRIORITY_ROUTED
: POLICY_PRIORITY_DEFAULT; : POLICY_PRIORITY_DEFAULT;
enumerator = create_policy_enumerator(this);
while (enumerator->enumerate(enumerator, &my_ts, &other_ts))
{
my_sa.policy_count++;
other_sa.policy_count++;
}
enumerator->destroy(enumerator);
/* enumerate pairs of traffic selectors */ /* enumerate pairs of traffic selectors */
enumerator = create_policy_enumerator(this); enumerator = create_policy_enumerator(this);
while (enumerator->enumerate(enumerator, &my_ts, &other_ts)) while (enumerator->enumerate(enumerator, &my_ts, &other_ts))

View File

@ -122,6 +122,8 @@ struct ipsec_sa_cfg_t {
ipsec_mode_t mode; ipsec_mode_t mode;
/** unique ID */ /** unique ID */
u_int32_t reqid; u_int32_t reqid;
/** number of policies of the same kind (in/out/fwd) attached to SA */
u_int32_t policy_count;
/** details about ESP/AH */ /** details about ESP/AH */
struct { struct {
/** TRUE if this protocol is used */ /** TRUE if this protocol is used */