Support manually-set IPsec policy priorities
This commit is contained in:
@@ -2397,7 +2397,8 @@ METHOD(kernel_ipsec_t, add_policy, status_t,
|
||||
/* cache the assigned IPsec SA */
|
||||
assigned_sa = policy_sa_create(this, id->dir, data->type, data->src,
|
||||
data->dst, id->src_ts, id->dst_ts, id->mark, data->sa);
|
||||
assigned_sa->priority = get_priority(policy, data->prio);
|
||||
assigned_sa->priority = data->manual_prio ? data->manual_prio :
|
||||
get_priority(policy, data->prio);
|
||||
|
||||
/* insert the SA according to its priority */
|
||||
enumerator = policy->used_by->create_enumerator(policy->used_by);
|
||||
@@ -2576,7 +2577,8 @@ METHOD(kernel_ipsec_t, del_policy, status_t,
|
||||
}
|
||||
|
||||
/* remove mapping to SA by reqid and priority */
|
||||
priority = get_priority(current, data->prio);
|
||||
priority = data->manual_prio ? data->manual_prio :
|
||||
get_priority(current, data->prio);
|
||||
enumerator = current->used_by->create_enumerator(current->used_by);
|
||||
while (enumerator->enumerate(enumerator, (void**)&mapping))
|
||||
{
|
||||
|
||||
@@ -461,6 +461,7 @@ static void log_child_data(child_data_t *data, char *name)
|
||||
DBG2(DBG_CFG, " close_action = %N", action_names, cfg->close_action);
|
||||
DBG2(DBG_CFG, " reqid = %u", cfg->reqid);
|
||||
DBG2(DBG_CFG, " tfc = %d", cfg->tfc);
|
||||
DBG2(DBG_CFG, " priority = %d", cfg->priority);
|
||||
DBG2(DBG_CFG, " mark_in = %u/%u",
|
||||
cfg->mark_in.value, cfg->mark_in.mask);
|
||||
DBG2(DBG_CFG, " mark_out = %u/%u",
|
||||
@@ -1340,6 +1341,7 @@ CALLBACK(child_kv, bool,
|
||||
{ "mark_in", parse_mark, &child->cfg.mark_in },
|
||||
{ "mark_out", parse_mark, &child->cfg.mark_out },
|
||||
{ "tfc_padding", parse_tfc, &child->cfg.tfc },
|
||||
{ "priority", parse_uint32, &child->cfg.priority },
|
||||
};
|
||||
|
||||
return parse_rules(rules, countof(rules), name, value,
|
||||
|
||||
Reference in New Issue
Block a user