]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
charon-cmd: add support for using dynamic ports in charon-cmd
authorMartin Willi <martin@revosec.ch>
Tue, 26 Mar 2013 16:28:40 +0000 (17:28 +0100)
committerMartin Willi <martin@revosec.ch>
Mon, 6 May 2013 13:28:26 +0000 (15:28 +0200)
configure.in
src/charon-cmd/cmd/cmd_connection.c

index a244f632e45f519670905b21ab2fe3a30d986d75..06829755f44c4db19a15b6287fefc56715f5684d 100644 (file)
@@ -991,7 +991,7 @@ ADD_PLUGIN([kernel-klips],         [h charon starter])
 ADD_PLUGIN([kernel-netlink],       [h charon starter nm cmd])
 ADD_PLUGIN([resolve],              [h charon cmd])
 ADD_PLUGIN([socket-default],       [c charon nm cmd])
-ADD_PLUGIN([socket-dynamic],       [c charon])
+ADD_PLUGIN([socket-dynamic],       [c charon cmd])
 ADD_PLUGIN([farp],                 [c charon])
 ADD_PLUGIN([stroke],               [c charon])
 ADD_PLUGIN([smp],                  [c charon])
index 566b2544b4629ce956956a0803ec6747fc7fd7c6..f58df5cecd7ec709f1917c41eb3f8e682cea0aa0 100644 (file)
@@ -65,11 +65,15 @@ static peer_cfg_t* create_peer_cfg(private_cmd_connection_t *this)
 {
        ike_cfg_t *ike_cfg;
        peer_cfg_t *peer_cfg;
+       u_int16_t local_port, remote_port = IKEV2_UDP_PORT;
 
-       ike_cfg = ike_cfg_create(IKEV2, TRUE, FALSE, "0.0.0.0", FALSE,
-                                                        charon->socket->get_port(charon->socket, FALSE),
-                                                        this->host, FALSE, IKEV2_UDP_PORT,
-                                                        FRAGMENTATION_NO, 0);
+       local_port = charon->socket->get_port(charon->socket, FALSE);
+       if (local_port != IKEV2_UDP_PORT)
+       {
+               remote_port = IKEV2_NATT_PORT;
+       }
+       ike_cfg = ike_cfg_create(IKEV2, TRUE, FALSE, "0.0.0.0", FALSE, local_port,
+                                       this->host, FALSE, remote_port, FRAGMENTATION_NO, 0);
        ike_cfg->add_proposal(ike_cfg, proposal_create_default(PROTO_IKE));
        peer_cfg = peer_cfg_create("cmd", ike_cfg,
                                        CERT_SEND_IF_ASKED, UNIQUE_REPLACE, 1, /* keyingtries */