diff options
author | Reto Buerki <reet@codelabs.ch> | 2014-12-19 09:11:12 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2015-02-20 13:34:54 +0100 |
commit | 3fb42bc87f68970916f2d8d64026462446879f4b (patch) | |
tree | cad1d6bc98bbc8a3c5e8469e10a612d5f57deb0a /src | |
parent | e12ff07c96a5cb75307c0e51e05cfd8f40e5b004 (diff) | |
download | strongswan-3fb42bc87f68970916f2d8d64026462446879f4b.tar.bz2 strongswan-3fb42bc87f68970916f2d8d64026462446879f4b.tar.xz |
charon-tkm: Use get_dst_host getter in EES callback
Use the new get_dst_host getter to retrieve the destination host from
the SAD using the reqid, spi and protocol values received from the
xfrm-proxy.
Diffstat (limited to 'src')
-rw-r--r-- | src/charon-tkm/src/ees/ees_callbacks.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/charon-tkm/src/ees/ees_callbacks.c b/src/charon-tkm/src/ees/ees_callbacks.c index 8650947f8..74c0d3618 100644 --- a/src/charon-tkm/src/ees/ees_callbacks.c +++ b/src/charon-tkm/src/ees/ees_callbacks.c @@ -19,11 +19,12 @@ #include <tkm/constants.h> #include <tkm/types.h> +#include "tkm.h" #include "ees_callbacks.h" void charon_esa_acquire(result_type *res, const sp_id_type sp_id) { - DBG1(DBG_KNL, "ees: acquire received for reqid {%d}", sp_id); + DBG1(DBG_KNL, "ees: acquire received for reqid %u", sp_id); hydra->kernel_interface->acquire(hydra->kernel_interface, sp_id, NULL, NULL); *res = TKM_OK; @@ -33,10 +34,19 @@ void charon_esa_expire(result_type *res, const sp_id_type sp_id, const esp_spi_type spi_rem, const protocol_type protocol, const expiry_flag_type hard) { - host_t *dst = NULL; + host_t *dst; - DBG1(DBG_KNL, "ees: expire received for reqid {%d}", sp_id); + dst = tkm->sad->get_dst_host(tkm->sad, sp_id, spi_rem, protocol); + *res = TKM_OK; + if (dst == NULL) + { + DBG3(DBG_KNL, "ees: destination host not found for reqid %u, spi %x, " + "proto %u", sp_id, ntohl(spi_rem), protocol); + return; + } + + DBG1(DBG_KNL, "ees: expire received for reqid %u, spi %x, dst %H", sp_id, + ntohl(spi_rem), dst); hydra->kernel_interface->expire(hydra->kernel_interface, protocol, spi_rem, dst, hard != 0); - *res = TKM_OK; } |