]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Support an "any" IKE version for both IKEv1 or IKEv2
authorMartin Willi <martin@revosec.ch>
Sat, 17 Dec 2011 11:48:14 +0000 (12:48 +0100)
committerMartin Willi <martin@revosec.ch>
Tue, 20 Mar 2012 16:31:25 +0000 (17:31 +0100)
src/libcharon/config/peer_cfg.h
src/libcharon/plugins/stroke/stroke_config.c
src/libcharon/plugins/stroke/stroke_socket.c
src/libcharon/sa/keymat.c
src/libcharon/sa/task_manager.c
src/starter/confread.h
src/starter/starterstroke.c
src/stroke/stroke.c
src/stroke/stroke_msg.h

index 33309d116c3cf1c7f173049c695a996df236f214..f1915614a2141cf78c1cbf63eb2ae6f41b54a694 100644 (file)
@@ -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 */
index c4b218d1bf3d0e1c1d17c334fbc91e536f30ddb1..08339a475fbaba27af5c260993c18653a7c7ec19 100644 (file)
@@ -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,
index 7a14be0cf51d31add7af00a03b39c152033b24b5..21d15afe6a4b3c1a56b58fa46715c7462d92dc2a 100644 (file)
@@ -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);
index 2fa4423e15ac5b71b1fde167446a1702181a59e3..f132822b71fcd40d3722f53fa41b4c40c107e2ab 100644 (file)
@@ -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;
 }
 
 /**
index eea2320e0fba56cb140996a678e611e585b3282a..3538087bc484d5f1b0b808db0c38143b7d86f3b2 100644 (file)
@@ -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;
 }
+
index 988b8ed48f563329f12f4aa6e7a0e29cebaf569a..47bd846033ad2af2159a77b53faae13d14c873d4 100644 (file)
@@ -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 {
index 628d63214b5df8ce6911b7c275dd7d52fa0abd26..c4d9fa2e97c2a3d69730c05c7e2efcf165683fe6 100644 (file)
@@ -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 */
index a27c374c748c658b73e63dcf2cf4939e44963b11..697115a8414426c03204119ff8bed6516257d500 100644 (file)
@@ -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;
index 3350d76033e193bcd9b55951f0d4b0b4211135b3..af566b952a68332cd4bfd90f6f8b3a79cd4b7a1a 100644 (file)
@@ -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;