aboutsummaryrefslogtreecommitdiffstats
path: root/src/charon/threads/kernel_interface.c
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2006-07-07 07:04:07 +0000
committerMartin Willi <martin@strongswan.org>2006-07-07 07:04:07 +0000
commit698d774918023ec7d397ce8ecdc35287da761af2 (patch)
tree1a08db0eaa156984bb0eb9206db6b8b9b4a764c7 /src/charon/threads/kernel_interface.c
parent54da7eb9623cd6ba3cdcd276ede7482d272ac0c0 (diff)
downloadstrongswan-698d774918023ec7d397ce8ecdc35287da761af2.tar.bz2
strongswan-698d774918023ec7d397ce8ecdc35287da761af2.tar.xz
reimplemented CHILD_SA rekeying & delete
no simultanous transaction with CHILD_SAs yet!
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);
}