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
: 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 */
enumerator = create_policy_enumerator(this);
while (enumerator->enumerate(enumerator, &my_ts, &other_ts))

View File

@ -122,6 +122,8 @@ struct ipsec_sa_cfg_t {
ipsec_mode_t mode;
/** unique ID */
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 */
struct {
/** TRUE if this protocol is used */