struct child_init_args_t {
/** Reqid to use for CHILD_SA, 0 to assign automatically */
uint32_t reqid;
+ /** Optional CPU ID to use for CHILD_SA, CPU_ID_MAX if unspecified */
+ uint32_t cpu;
/** Optional source of triggering packet */
traffic_selector_t *src;
/** Optional destination of triggering packet */
child_sa->get_mark(child_sa, TRUE).value,
child_sa->get_mark(child_sa, FALSE).value);
child_create->use_label(child_create, child_sa->get_label(child_sa));
+ child_create->use_per_cpu(child_create, child_sa->use_per_cpu(child_sa),
+ child_sa->get_cpu(child_sa));
/* interface IDs are not migrated as the new CHILD_SAs on old and new
* IKE_SA go though regular updown events */
new->queue_task(new, &child_create->task);
charon->kernel->release_reqid(charon->kernel, reqid);
}
task->use_label(task, child_sa->get_label(child_sa));
+ task->use_per_cpu(task, child_sa->use_per_cpu(child_sa),
+ child_sa->get_cpu(child_sa));
}
else if (args)
{
args->dst, args->seq);
task->use_reqid(task, args->reqid);
task->use_label(task, args->label);
+ task->use_per_cpu(task, FALSE, args->cpu);
}
else
{
charon->kernel->release_reqid(charon->kernel, reqid);
}
child_create->use_label(child_create, child_sa->get_label(child_sa));
+ child_create->use_per_cpu(child_create, child_sa->use_per_cpu(child_sa),
+ child_sa->get_cpu(child_sa));
ike_sa->queue_task(ike_sa, (task_t*)child_create);
}