From: Martin Willi Date: Tue, 26 Mar 2013 16:28:40 +0000 (+0100) Subject: charon-cmd: add support for using dynamic ports in charon-cmd X-Git-Tag: 5.1.0dr1~154^2~11 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f0749552a6f971504d5ce6a58b0b3898c57cd3d5;p=thirdparty%2Fstrongswan.git charon-cmd: add support for using dynamic ports in charon-cmd --- diff --git a/configure.in b/configure.in index a244f632e4..06829755f4 100644 --- a/configure.in +++ b/configure.in @@ -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]) diff --git a/src/charon-cmd/cmd/cmd_connection.c b/src/charon-cmd/cmd/cmd_connection.c index 566b2544b4..f58df5cecd 100644 --- a/src/charon-cmd/cmd/cmd_connection.c +++ b/src/charon-cmd/cmd/cmd_connection.c @@ -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 */