From 21f42524e0fe6e4ec825f29d0bf87bc0285ea9b6 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Mon, 8 Jan 2007 06:55:50 +0000 Subject: [PATCH] support for transport in create_child_sa include TRANSPORT/TUNNEL information in statusall --- src/charon/config/policies/policy.c | 8 ++++++++ src/charon/config/policies/policy.h | 9 +++++++-- src/charon/sa/child_sa.c | 5 +++-- src/charon/sa/transactions/create_child_sa.c | 12 ++++++++---- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/charon/config/policies/policy.c b/src/charon/config/policies/policy.c index f7e2eb43c..34bd15131 100644 --- a/src/charon/config/policies/policy.c +++ b/src/charon/config/policies/policy.c @@ -38,6 +38,14 @@ ENUM(dpd_action_names, DPD_NONE, DPD_RESTART, "DPD_RESTART" ); +ENUM(mode_names, MODE_TRANSPORT, MODE_BEET, + "TRANSPORT", + "TUNNEL", + "2", + "3", + "BEET" +); + typedef struct private_policy_t private_policy_t; /** diff --git a/src/charon/config/policies/policy.h b/src/charon/config/policies/policy.h index 76b20f69b..123383ca6 100644 --- a/src/charon/config/policies/policy.h +++ b/src/charon/config/policies/policy.h @@ -52,6 +52,11 @@ enum dpd_action_t { DPD_RESTART, }; +/** + * enum names for dpd_action_t. + */ +extern enum_name_t *dpd_action_names; + /** * @brief Mode of an IPsec SA. * @@ -69,9 +74,9 @@ enum mode_t { }; /** - * enum names for dpd_action_t. + * enum names for mode_t. */ -extern enum_name_t *dpd_action_names; +extern enum_name_t *mode_names; /** * @brief A policy_t defines the policies to apply to CHILD_SAs. diff --git a/src/charon/sa/child_sa.c b/src/charon/sa/child_sa.c index 874937dd2..182da8651 100644 --- a/src/charon/sa/child_sa.c +++ b/src/charon/sa/child_sa.c @@ -780,8 +780,9 @@ static int print(FILE *stream, const struct printf_info *info, now = (u_int32_t)time(NULL); - written += fprintf(stream, "%12s: %N, reqid: %d", this->name, - child_sa_state_names, this->state, this->reqid); + written += fprintf(stream, "%12s: %N, reqid: %d, %N", this->name, + child_sa_state_names, this->state, this->reqid, + mode_names, this->mode); if (this->state == CHILD_INSTALLED) { diff --git a/src/charon/sa/transactions/create_child_sa.c b/src/charon/sa/transactions/create_child_sa.c index c07347d47..bcb3ced38 100644 --- a/src/charon/sa/transactions/create_child_sa.c +++ b/src/charon/sa/transactions/create_child_sa.c @@ -509,11 +509,13 @@ static status_t install_child_sa(private_create_child_sa_t *this, bool initiator if (initiator) { - status = this->child_sa->update(this->child_sa, this->proposal, 1, prf_plus); + status = this->child_sa->update(this->child_sa, this->proposal, + this->mode, prf_plus); } else { - status = this->child_sa->add(this->child_sa, this->proposal, 1, prf_plus); + status = this->child_sa->add(this->child_sa, this->proposal, + this->mode, prf_plus); } prf_plus->destroy(prf_plus); if (status != SUCCESS) @@ -522,11 +524,13 @@ static status_t install_child_sa(private_create_child_sa_t *this, bool initiator } if (initiator) { - status = this->child_sa->add_policies(this->child_sa, this->tsi, this->tsr, 1); + status = this->child_sa->add_policies(this->child_sa, this->tsi, + this->tsr, this->mode); } else { - status = this->child_sa->add_policies(this->child_sa, this->tsr, this->tsi, 1); + status = this->child_sa->add_policies(this->child_sa, this->tsr, + this->tsi, this->mode); } if (status != SUCCESS) {