charon-tkm: Use get_dst_host getter in EES callback
authorReto Buerki <reet@codelabs.ch>
Fri, 19 Dec 2014 08:11:12 +0000 (09:11 +0100)
committerMartin Willi <martin@revosec.ch>
Fri, 20 Feb 2015 12:34:54 +0000 (13:34 +0100)
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.

src/charon-tkm/src/ees/ees_callbacks.c

index 8650947..74c0d36 100644 (file)
 #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;
 }