fixing IKE_SA rekeying if charon.ikesa_table_size > 1
This commit is contained in:
@@ -901,25 +901,35 @@ static ike_sa_t* checkout(private_ike_sa_manager_t *this, ike_sa_id_t *ike_sa_id
|
|||||||
*/
|
*/
|
||||||
static ike_sa_t *checkout_new(private_ike_sa_manager_t* this, bool initiator)
|
static ike_sa_t *checkout_new(private_ike_sa_manager_t* this, bool initiator)
|
||||||
{
|
{
|
||||||
|
ike_sa_id_t *ike_sa_id;
|
||||||
|
ike_sa_t *ike_sa;
|
||||||
entry_t *entry;
|
entry_t *entry;
|
||||||
u_int segment;
|
u_int segment;
|
||||||
|
|
||||||
entry = entry_create();
|
|
||||||
if (initiator)
|
if (initiator)
|
||||||
{
|
{
|
||||||
entry->ike_sa_id = ike_sa_id_create(get_next_spi(this), 0, TRUE);
|
ike_sa_id = ike_sa_id_create(get_next_spi(this), 0, TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
entry->ike_sa_id = ike_sa_id_create(0, get_next_spi(this), FALSE);
|
ike_sa_id = ike_sa_id_create(0, get_next_spi(this), FALSE);
|
||||||
}
|
}
|
||||||
entry->ike_sa = ike_sa_create(entry->ike_sa_id);
|
ike_sa = ike_sa_create(ike_sa_id);
|
||||||
|
|
||||||
|
DBG2(DBG_MGR, "created IKE_SA");
|
||||||
|
|
||||||
|
if (!initiator)
|
||||||
|
{
|
||||||
|
ike_sa_id->destroy(ike_sa_id);
|
||||||
|
return ike_sa;
|
||||||
|
}
|
||||||
|
|
||||||
|
entry = entry_create();
|
||||||
|
entry->ike_sa_id = ike_sa_id;
|
||||||
|
entry->ike_sa = ike_sa;
|
||||||
segment = put_entry(this, entry);
|
segment = put_entry(this, entry);
|
||||||
entry->checked_out = TRUE;
|
entry->checked_out = TRUE;
|
||||||
unlock_single_segment(this, segment);
|
unlock_single_segment(this, segment);
|
||||||
|
|
||||||
DBG2(DBG_MGR, "created IKE_SA");
|
|
||||||
return entry->ike_sa;
|
return entry->ike_sa;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,6 +54,9 @@ struct ike_sa_manager_t {
|
|||||||
/**
|
/**
|
||||||
* Create and check out a new IKE_SA.
|
* Create and check out a new IKE_SA.
|
||||||
*
|
*
|
||||||
|
* @note If initiator equals FALSE, the returned IKE_SA is not registered
|
||||||
|
* in the manager.
|
||||||
|
*
|
||||||
* @param initiator TRUE for initiator, FALSE otherwise
|
* @param initiator TRUE for initiator, FALSE otherwise
|
||||||
* @returns created and checked out IKE_SA
|
* @returns created and checked out IKE_SA
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user