aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2012-05-25 09:24:49 +0200
committerTobias Brunner <tobias@strongswan.org>2012-05-25 09:26:42 +0200
commitdaab61e51fb86b5c786899bb75b407594cf779c9 (patch)
treed186b0befdd7c41107371d44742c5d3b638292f2
parentb253008544606649dbb45a2b4e2f7a1e2c7b8a62 (diff)
downloadstrongswan-daab61e51fb86b5c786899bb75b407594cf779c9.tar.bz2
strongswan-daab61e51fb86b5c786899bb75b407594cf779c9.tar.xz
Added encapsulation mode transform attribute to IPComp proposal.
-rw-r--r--src/libcharon/encoding/payloads/proposal_substructure.c5
-rw-r--r--src/libcharon/encoding/payloads/proposal_substructure.h8
-rw-r--r--src/libcharon/encoding/payloads/sa_payload.c2
3 files changed, 10 insertions, 5 deletions
diff --git a/src/libcharon/encoding/payloads/proposal_substructure.c b/src/libcharon/encoding/payloads/proposal_substructure.c
index ba7182002..afeeb09e3 100644
--- a/src/libcharon/encoding/payloads/proposal_substructure.c
+++ b/src/libcharon/encoding/payloads/proposal_substructure.c
@@ -1519,7 +1519,7 @@ proposal_substructure_t *proposal_substructure_create_from_proposals_v1(
*/
proposal_substructure_t *proposal_substructure_create_for_ipcomp_v1(
u_int32_t lifetime, u_int64_t lifebytes, u_int16_t cpi,
- u_int8_t proposal_number)
+ ipsec_mode_t mode, bool udp, u_int8_t proposal_number)
{
private_proposal_substructure_t *this;
transform_substructure_t *transform;
@@ -1532,6 +1532,9 @@ proposal_substructure_t *proposal_substructure_create_for_ipcomp_v1(
transform = transform_substructure_create_type(TRANSFORM_SUBSTRUCTURE_V1,
1, IKEV1_IPCOMP_DEFLATE);
+ transform->add_transform_attribute(transform,
+ transform_attribute_create_value(TRANSFORM_ATTRIBUTE_V1,
+ TATTR_PH2_ENCAP_MODE, get_ikev1_mode(mode, udp)));
if (lifetime)
{
transform->add_transform_attribute(transform,
diff --git a/src/libcharon/encoding/payloads/proposal_substructure.h b/src/libcharon/encoding/payloads/proposal_substructure.h
index 720f9790b..5d42a6116 100644
--- a/src/libcharon/encoding/payloads/proposal_substructure.h
+++ b/src/libcharon/encoding/payloads/proposal_substructure.h
@@ -205,14 +205,16 @@ proposal_substructure_t *proposal_substructure_create_from_proposals_v1(
* Creates an IKEv1 proposal_substructure_t for IPComp with the given
* proposal_number (e.g. of a ESP proposal to bundle them).
*
- * @param lifetime lifetime in seconds
- * @param lifebytes lifebytes, in bytes
+ * @param lifetime lifetime in seconds
+ * @param lifebytes lifebytes, in bytes
* @param cpi the CPI to be used
+ * @param mode IPsec encapsulation mode, TRANSPORT or TUNNEL
+ * @param udp TRUE to use UDP encapsulation
* @param proposal_number the proposal number of the proposal to be linked
* @return IKEv1 proposal_substructure_t PROPOSAL_SUBSTRUCTURE_V1
*/
proposal_substructure_t *proposal_substructure_create_for_ipcomp_v1(
u_int32_t lifetime, u_int64_t lifebytes, u_int16_t cpi,
- u_int8_t proposal_number);
+ ipsec_mode_t mode, bool udp, u_int8_t proposal_number);
#endif /** PROPOSAL_SUBSTRUCTURE_H_ @}*/
diff --git a/src/libcharon/encoding/payloads/sa_payload.c b/src/libcharon/encoding/payloads/sa_payload.c
index 92c1a9b86..adf19aa67 100644
--- a/src/libcharon/encoding/payloads/sa_payload.c
+++ b/src/libcharon/encoding/payloads/sa_payload.c
@@ -571,7 +571,7 @@ sa_payload_t *sa_payload_create_from_proposals_v1(linked_list_t *proposals,
u_int8_t proposal_number = substruct->get_proposal_number(substruct);
substruct = proposal_substructure_create_for_ipcomp_v1(lifetime,
- lifebytes, cpi, proposal_number);
+ lifebytes, cpi, mode, udp, proposal_number);
this->proposals->insert_last(this->proposals, substruct);
substruct->set_is_last_proposal(substruct, FALSE);
/* add the proposals again without IPComp */