}
esa_id = tkm->idmgr->acquire_id(tkm->idmgr, TKM_CTX_ESA);
- if (!tkm->sad->insert(tkm->sad, esa_id, local, peer, spi_rem, protocol))
+ if (!tkm->sad->insert(tkm->sad, reqid, esa_id, local, peer, spi_rem,
+ protocol))
{
DBG1(DBG_KNL, "unable to add entry (%llu) to SAD", esa_id);
goto sad_failure;
/*
- * Copyright (C) 2012 Reto Buerki
+ * Copyright (C) 2012-2014 Reto Buerki
* Copyright (C) 2012 Adrian-Ken Rueegsegger
* Hochschule fuer Technik Rapperswil
*
*/
esa_id_type esa_id;
+ /**
+ * Reqid.
+ */
+ u_int32_t reqid;
+
/**
* Source address of CHILD SA.
*/
return FALSE;
}
return left->esa_id == right->esa_id &&
+ left->reqid == right->reqid &&
left->src->ip_equals(left->src, right->src) &&
left->dst->ip_equals(left->dst, right->dst) &&
left->spi == right->spi && left->proto == right->proto;
METHOD(tkm_kernel_sad_t, insert, bool,
private_tkm_kernel_sad_t * const this, const esa_id_type esa_id,
- const host_t * const src, const host_t * const dst, const u_int32_t spi,
- const u_int8_t proto)
+ const u_int32_t reqid, const host_t * const src, const host_t * const dst,
+ const u_int32_t spi, const u_int8_t proto)
{
status_t result;
sad_entry_t *new_entry;
INIT(new_entry,
.esa_id = esa_id,
+ .reqid = reqid,
.src = (host_t *)src,
.dst = (host_t *)dst,
.spi = spi,
new_entry);
if (result == NOT_FOUND)
{
- DBG3(DBG_KNL, "inserting SAD entry (esa: %llu, src: %H, dst: %H, "
- "spi: %x, proto: %u)", esa_id, src, dst, ntohl(spi), proto);
+ DBG3(DBG_KNL, "inserting SAD entry (esa: %llu, reqid: %u, src: %H, "
+ "dst: %H, spi: %x, proto: %u)", esa_id, reqid, src, dst,
+ ntohl(spi), proto);
new_entry->src = src->clone((host_t *)src);
new_entry->dst = dst->clone((host_t *)dst);
this->data->insert_last(this->data, new_entry);
/*
- * Copyright (C) 2012 Reto Buerki
+ * Copyright (C) 2012-2014 Reto Buerki
* Copyright (C) 2012 Adrian-Ken Rueegsegger
* Hochschule fuer Technik Rapperswil
*
* Insert new SAD entry with specified parameters.
*
* @param esa_id ESP SA context identifier
+ * @param reqid reqid of the SA
* @param src source address of CHILD SA
* @param dst destination address of CHILD SA
* @param spi SPI of CHILD SA
* @return TRUE if entry was inserted, FALSE otherwise
*/
bool (*insert)(tkm_kernel_sad_t * const this, const esa_id_type esa_id,
- const host_t * const src, const host_t * const dst,
- const u_int32_t spi, const u_int8_t proto);
+ const u_int32_t reqid, const host_t * const src,
+ const host_t * const dst, const u_int32_t spi,
+ const u_int8_t proto);
/**
* Get ESA id for entry with given parameters.
/*
- * Copyright (C) 2012 Reto Buerki
+ * Copyright (C) 2012-2014 Reto Buerki
* Copyright (C) 2012 Adrian-Ken Rueegsegger
* Hochschule fuer Technik Rapperswil
*
host_t *addr = host_create_from_string("127.0.0.1", 1024);
tkm_kernel_sad_t *sad = tkm_kernel_sad_create();
- fail_unless(sad->insert(sad, 1, addr, addr, 42, 50),
+ fail_unless(sad->insert(sad, 1, 2, addr, addr, 42, 50),
"Error inserting SAD entry");
sad->destroy(sad);
host_t *addr = host_create_from_string("127.0.0.1", 1024);
tkm_kernel_sad_t *sad = tkm_kernel_sad_create();
- fail_unless(sad->insert(sad, 1, addr, addr, 42, 50),
+ fail_unless(sad->insert(sad, 1, 2, addr, addr, 42, 50),
"Error inserting SAD entry");
- fail_if(sad->insert(sad, 1, addr, addr, 42, 50),
+ fail_if(sad->insert(sad, 1, 2, addr, addr, 42, 50),
"Expected error inserting duplicate entry");
sad->destroy(sad);
{
host_t *addr = host_create_from_string("127.0.0.1", 1024);
tkm_kernel_sad_t *sad = tkm_kernel_sad_create();
- fail_unless(sad->insert(sad, 23, addr, addr, 42, 50),
+ fail_unless(sad->insert(sad, 23, 54, addr, addr, 42, 50),
"Error inserting SAD entry");
fail_unless(sad->get_esa_id(sad, addr, addr, 42, 50) == 23,
"Error getting esa id");
{
host_t *addr = host_create_from_string("127.0.0.1", 1024);
tkm_kernel_sad_t *sad = tkm_kernel_sad_create();
- fail_unless(sad->insert(sad, 23, addr, addr, 42, 50),
+ fail_unless(sad->insert(sad, 23, 54, addr, addr, 42, 50),
"Error inserting SAD entry");
fail_unless(sad->get_esa_id(sad, addr, addr, 42, 50) == 23,
"Error getting esa id");