From: Martin Willi Date: Sat, 17 Dec 2011 11:48:14 +0000 (+0100) Subject: Support an "any" IKE version for both IKEv1 or IKEv2 X-Git-Tag: 5.0.0~338^2~9^2~177 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d94c923648a506f9abae431592ef4bfd6609a030;p=thirdparty%2Fstrongswan.git Support an "any" IKE version for both IKEv1 or IKEv2 --- diff --git a/src/libcharon/config/peer_cfg.h b/src/libcharon/config/peer_cfg.h index 33309d116c..f1915614a2 100644 --- a/src/libcharon/config/peer_cfg.h +++ b/src/libcharon/config/peer_cfg.h @@ -43,6 +43,8 @@ typedef struct peer_cfg_t peer_cfg_t; * IKE version. */ enum ike_version_t { + /** any version */ + IKE_ANY = 0, /** IKE version 1 */ IKEV1 = 1, /** IKE version 2 */ diff --git a/src/libcharon/plugins/stroke/stroke_config.c b/src/libcharon/plugins/stroke/stroke_config.c index c4b218d1bf..08339a475f 100644 --- a/src/libcharon/plugins/stroke/stroke_config.c +++ b/src/libcharon/plugins/stroke/stroke_config.c @@ -686,7 +686,7 @@ static peer_cfg_t *build_peer_cfg(private_stroke_config_t *this, * the pool name as the connection name, which the attribute provider * uses to serve pool addresses. */ peer_cfg = peer_cfg_create(msg->add_conn.name, - msg->add_conn.ikev2 ? IKEV2 : IKEV1, ike_cfg, + msg->add_conn.version, ike_cfg, msg->add_conn.me.sendcert, unique, msg->add_conn.rekey.tries, rekey, reauth, jitter, over, msg->add_conn.mobike, msg->add_conn.dpd.delay, diff --git a/src/libcharon/plugins/stroke/stroke_socket.c b/src/libcharon/plugins/stroke/stroke_socket.c index 7a14be0cf5..21d15afe6a 100644 --- a/src/libcharon/plugins/stroke/stroke_socket.c +++ b/src/libcharon/plugins/stroke/stroke_socket.c @@ -197,7 +197,7 @@ static void stroke_add_conn(private_stroke_socket_t *this, stroke_msg_t *msg) DBG2(DBG_CFG, " mediation=%s", msg->add_conn.ikeme.mediation ? "yes" : "no"); DBG2(DBG_CFG, " mediated_by=%s", msg->add_conn.ikeme.mediated_by); DBG2(DBG_CFG, " me_peerid=%s", msg->add_conn.ikeme.peerid); - DBG2(DBG_CFG, " keyexchange=%s", msg->add_conn.ikev2 ? "ikev2" : "ikev1"); + DBG2(DBG_CFG, " keyexchange=ikev%u", msg->add_conn.version); this->config->add(this->config, msg); this->attribute->add_pool(this->attribute, msg); diff --git a/src/libcharon/sa/keymat.c b/src/libcharon/sa/keymat.c index 2fa4423e15..f132822b71 100644 --- a/src/libcharon/sa/keymat.c +++ b/src/libcharon/sa/keymat.c @@ -28,8 +28,9 @@ keymat_t *keymat_create(ike_version_t version, bool initiator) return &keymat_v1_create(initiator)->keymat; case IKEV2: return &keymat_v2_create(initiator)->keymat; + default: + return NULL; } - return NULL; } /** diff --git a/src/libcharon/sa/task_manager.c b/src/libcharon/sa/task_manager.c index eea2320e0f..3538087bc4 100644 --- a/src/libcharon/sa/task_manager.c +++ b/src/libcharon/sa/task_manager.c @@ -28,6 +28,8 @@ task_manager_t *task_manager_create(ike_sa_t *ike_sa) return &task_manager_v1_create(ike_sa)->task_manager; case IKEV2: return &task_manager_v2_create(ike_sa)->task_manager; + default: + return NULL; } - return NULL; } + diff --git a/src/starter/confread.h b/src/starter/confread.h index 988b8ed48f..47bd846033 100644 --- a/src/starter/confread.h +++ b/src/starter/confread.h @@ -39,9 +39,10 @@ typedef enum { } starter_state_t; typedef enum { - KEY_EXCHANGE_IKE, - KEY_EXCHANGE_IKEV1, - KEY_EXCHANGE_IKEV2 + /* shared with ike_version_t */ + KEY_EXCHANGE_IKE = 0, + KEY_EXCHANGE_IKEV1 = 1, + KEY_EXCHANGE_IKEV2 = 2, } keyexchange_t; typedef enum { diff --git a/src/starter/starterstroke.c b/src/starter/starterstroke.c index 628d63214b..c4d9fa2e97 100644 --- a/src/starter/starterstroke.c +++ b/src/starter/starterstroke.c @@ -196,7 +196,7 @@ int starter_stroke_add_conn(starter_config_t *cfg, starter_conn_t *conn) memset(&msg, 0, sizeof(msg)); msg.type = STR_ADD_CONN; msg.length = offsetof(stroke_msg_t, buffer); - msg.add_conn.ikev2 = conn->keyexchange != KEY_EXCHANGE_IKEV1; + msg.add_conn.version = conn->keyexchange; msg.add_conn.name = push_string(&msg, connection_name(conn)); /* PUBKEY is preferred to PSK and EAP */ diff --git a/src/stroke/stroke.c b/src/stroke/stroke.c index a27c374c74..697115a841 100644 --- a/src/stroke/stroke.c +++ b/src/stroke/stroke.c @@ -138,7 +138,7 @@ static int add_connection(char *name, msg.type = STR_ADD_CONN; msg.add_conn.name = push_string(&msg, name); - msg.add_conn.ikev2 = 1; + msg.add_conn.version = 2; msg.add_conn.auth_method = 2; msg.add_conn.mode = 1; msg.add_conn.mobike = 1; diff --git a/src/stroke/stroke_msg.h b/src/stroke/stroke_msg.h index 3350d76033..af566b952a 100644 --- a/src/stroke/stroke_msg.h +++ b/src/stroke/stroke_msg.h @@ -239,7 +239,7 @@ struct stroke_msg_t { /* data for STR_ADD_CONN */ struct { char *name; - int ikev2; + int version; /* next three are deprecated, use stroke_end_t.auth instead */ int auth_method; u_int32_t eap_type;