mirror of
https://github.com/strongswan/strongswan.git
synced 2025-10-06 00:00:47 -04:00
proposal: Add IKEv1 transform number on which a proposal is based
This commit is contained in:
parent
479c85d569
commit
e630f2d373
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2018 Tobias Brunner
|
||||
* Copyright (C) 2008-2020 Tobias Brunner
|
||||
* Copyright (C) 2006-2010 Martin Willi
|
||||
* Copyright (C) 2013-2015 Andreas Steffen
|
||||
* HSR Hochschule fuer Technik Rapperswil
|
||||
@ -70,7 +70,12 @@ struct private_proposal_t {
|
||||
/**
|
||||
* Proposal number
|
||||
*/
|
||||
u_int number;
|
||||
uint8_t number;
|
||||
|
||||
/**
|
||||
* Transform number (IKEv1 only)
|
||||
*/
|
||||
uint8_t transform_number;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -455,12 +460,14 @@ METHOD(proposal_t, select_proposal, proposal_t*,
|
||||
|
||||
if (flags & PROPOSAL_PREFER_SUPPLIED)
|
||||
{
|
||||
selected = proposal_create(this->protocol, this->number);
|
||||
selected = proposal_create_v1(this->protocol, this->number,
|
||||
this->transform_number);
|
||||
selected->set_spi(selected, this->spi);
|
||||
}
|
||||
else
|
||||
{
|
||||
selected = proposal_create(this->protocol, other->get_number(other));
|
||||
selected = proposal_create_v1(this->protocol, other->get_number(other),
|
||||
other->get_transform_number(other));
|
||||
selected->set_spi(selected, other->get_spi(other));
|
||||
}
|
||||
|
||||
@ -539,12 +546,18 @@ static bool algo_list_equals(private_proposal_t *this, proposal_t *other,
|
||||
return equals;
|
||||
}
|
||||
|
||||
METHOD(proposal_t, get_number, u_int,
|
||||
METHOD(proposal_t, get_number, uint8_t,
|
||||
private_proposal_t *this)
|
||||
{
|
||||
return this->number;
|
||||
}
|
||||
|
||||
METHOD(proposal_t, get_transform_number, uint8_t,
|
||||
private_proposal_t *this)
|
||||
{
|
||||
return this->transform_number;
|
||||
}
|
||||
|
||||
METHOD(proposal_t, equals, bool,
|
||||
private_proposal_t *this, proposal_t *other)
|
||||
{
|
||||
@ -598,6 +611,7 @@ METHOD(proposal_t, clone_, proposal_t*,
|
||||
|
||||
clone->spi = this->spi;
|
||||
clone->number = this->number;
|
||||
clone->transform_number = this->transform_number;
|
||||
|
||||
return &clone->public;
|
||||
}
|
||||
@ -918,7 +932,8 @@ METHOD(proposal_t, destroy, void,
|
||||
/*
|
||||
* Described in header
|
||||
*/
|
||||
proposal_t *proposal_create(protocol_id_t protocol, u_int number)
|
||||
proposal_t *proposal_create_v1(protocol_id_t protocol, uint8_t number,
|
||||
uint8_t transform)
|
||||
{
|
||||
private_proposal_t *this;
|
||||
|
||||
@ -935,12 +950,14 @@ proposal_t *proposal_create(protocol_id_t protocol, u_int number)
|
||||
.set_spi = _set_spi,
|
||||
.get_spi = _get_spi,
|
||||
.get_number = _get_number,
|
||||
.get_transform_number = _get_transform_number,
|
||||
.equals = _equals,
|
||||
.clone = _clone_,
|
||||
.destroy = _destroy,
|
||||
},
|
||||
.protocol = protocol,
|
||||
.number = number,
|
||||
.transform_number = transform,
|
||||
.transforms = array_create(sizeof(entry_t), 0),
|
||||
.types = array_create(sizeof(transform_type_t), 0),
|
||||
);
|
||||
@ -948,6 +965,14 @@ proposal_t *proposal_create(protocol_id_t protocol, u_int number)
|
||||
return &this->public;
|
||||
}
|
||||
|
||||
/*
|
||||
* Described in header
|
||||
*/
|
||||
proposal_t *proposal_create(protocol_id_t protocol, uint8_t number)
|
||||
{
|
||||
return proposal_create_v1(protocol, number, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add supported IKE algorithms to proposal
|
||||
*/
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2009-2019 Tobias Brunner
|
||||
* Copyright (C) 2009-2020 Tobias Brunner
|
||||
* Copyright (C) 2006 Martin Willi
|
||||
* HSR Hochschule fuer Technik Rapperswil
|
||||
*
|
||||
@ -181,7 +181,14 @@ struct proposal_t {
|
||||
*
|
||||
* @return proposal number
|
||||
*/
|
||||
u_int (*get_number)(proposal_t *this);
|
||||
uint8_t (*get_number)(proposal_t *this);
|
||||
|
||||
/**
|
||||
* Get number of the transform on which this proposal is based (IKEv1 only)
|
||||
*
|
||||
* @return transform number (or 0)
|
||||
*/
|
||||
uint8_t (*get_transform_number)(proposal_t *this);
|
||||
|
||||
/**
|
||||
* Check for the equality of two proposals.
|
||||
@ -212,7 +219,18 @@ struct proposal_t {
|
||||
* @param number proposal number, as encoded in SA payload
|
||||
* @return proposal_t object
|
||||
*/
|
||||
proposal_t *proposal_create(protocol_id_t protocol, u_int number);
|
||||
proposal_t *proposal_create(protocol_id_t protocol, uint8_t number);
|
||||
|
||||
/**
|
||||
* Create a proposal for IKE, ESP or AH that includes a transform number.
|
||||
*
|
||||
* @param protocol protocol, such as PROTO_ESP
|
||||
* @param number proposal number, as encoded in SA payload
|
||||
* @param transform transform number, as encoded in payload
|
||||
* @return proposal_t object
|
||||
*/
|
||||
proposal_t *proposal_create_v1(protocol_id_t protocol, uint8_t number,
|
||||
uint8_t transform);
|
||||
|
||||
/**
|
||||
* Create a default proposal.
|
||||
|
Loading…
x
Reference in New Issue
Block a user