aboutsummaryrefslogtreecommitdiffstats
path: root/src/charon/threads/kernel_interface.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/charon/threads/kernel_interface.c')
-rw-r--r--src/charon/threads/kernel_interface.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/src/charon/threads/kernel_interface.c b/src/charon/threads/kernel_interface.c
index 16111582e..d272a43bf 100644
--- a/src/charon/threads/kernel_interface.c
+++ b/src/charon/threads/kernel_interface.c
@@ -921,29 +921,28 @@ static void receive_messages(private_kernel_interface_t *this)
else if (hdr->nlmsg_type == XFRM_MSG_EXPIRE)
{
job_t *job;
+ protocol_id_t protocol;
+ u_int32_t spi;
struct xfrm_user_expire *expire;
+
+ expire = (struct xfrm_user_expire*)NLMSG_DATA(hdr);
+ protocol = expire->state.id.proto == KERNEL_ESP ?
+ PROTO_ESP : PROTO_AH;
+ spi = expire->state.id.spi;
+
this->logger->log(this->logger, CONTROL|LEVEL1,
"Received a XFRM_MSG_EXPIRE");
- expire = (struct xfrm_user_expire*)NLMSG_DATA(hdr);
- this->logger->log(this->logger, CONTROL|LEVEL0,
- "creating %s job for CHILD_SA with reqid %d",
+ this->logger->log(this->logger, CONTROL,
+ "creating %s job for %s CHILD_SA 0x%x",
expire->hard ? "delete" : "rekey",
- expire->state.reqid);
+ mapping_find(protocol_id_m, protocol), ntohl(spi));
if (expire->hard)
{
- this->logger->log(this->logger, CONTROL|LEVEL0,
- "creating delete job for CHILD_SA with reqid %d",
- expire->state.reqid);
- job = (job_t*)delete_child_sa_job_create(
- expire->state.reqid);
+ job = (job_t*)delete_child_sa_job_create(protocol, spi);
}
else
{
- this->logger->log(this->logger, CONTROL|LEVEL0,
- "creating rekey job for CHILD_SA with reqid %d",
- expire->state.reqid);
- job = (job_t*)rekey_child_sa_job_create(
- expire->state.reqid);
+ job = (job_t*)rekey_child_sa_job_create(protocol, spi);
}
charon->job_queue->add(charon->job_queue, job);
}