diff options
author | Martin Willi <martin@strongswan.org> | 2006-07-07 07:04:07 +0000 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2006-07-07 07:04:07 +0000 |
commit | 698d774918023ec7d397ce8ecdc35287da761af2 (patch) | |
tree | 1a08db0eaa156984bb0eb9206db6b8b9b4a764c7 /src/charon/threads/kernel_interface.c | |
parent | 54da7eb9623cd6ba3cdcd276ede7482d272ac0c0 (diff) | |
download | strongswan-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.c | 27 |
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); } |