From: Martin Willi Date: Mon, 22 Apr 2013 10:42:01 +0000 (+0200) Subject: charon-cmd: add an option to set a different server identity X-Git-Tag: 5.1.0dr1~154^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=68fc0fe32eb3d7d89c9639b44903b98a1e073a05;p=thirdparty%2Fstrongswan.git charon-cmd: add an option to set a different server identity --- diff --git a/src/charon-cmd/cmd/cmd_connection.c b/src/charon-cmd/cmd/cmd_connection.c index db5499b7c6..965b72bc05 100644 --- a/src/charon-cmd/cmd/cmd_connection.c +++ b/src/charon-cmd/cmd/cmd_connection.c @@ -80,6 +80,11 @@ struct private_cmd_connection_t { */ char *host; + /** + * Server identity, or NULL to use host + */ + char *server; + /** * Local identity */ @@ -167,7 +172,14 @@ static void add_auth_cfg(private_cmd_connection_t *this, peer_cfg_t *peer_cfg, } else { - id = identification_create_from_string(this->host); + if (this->server) + { + id = identification_create_from_string(this->server); + } + else + { + id = identification_create_from_string(this->host); + } } auth->add(auth, AUTH_RULE_IDENTITY, id); peer_cfg->add_auth_cfg(peer_cfg, auth, local); @@ -367,6 +379,9 @@ METHOD(cmd_connection_t, handle, bool, case CMD_OPT_HOST: this->host = arg; break; + case CMD_OPT_REMOTE_IDENTITY: + this->server = arg; + break; case CMD_OPT_IDENTITY: this->identity = arg; break; diff --git a/src/charon-cmd/cmd/cmd_options.c b/src/charon-cmd/cmd/cmd_options.c index 58877a0435..312d129642 100644 --- a/src/charon-cmd/cmd/cmd_options.c +++ b/src/charon-cmd/cmd/cmd_options.c @@ -29,6 +29,8 @@ cmd_option_t cmd_options[CMD_OPT_COUNT] = { "DNS name or address to connect to" }, { CMD_OPT_IDENTITY, "identity", required_argument, "identity", "identity the client uses for the IKE exchange" }, + { CMD_OPT_REMOTE_IDENTITY, "remote-identity", required_argument, "identity", + "server identity to expect, defaults to host" }, { CMD_OPT_CERT, "cert", required_argument, "path", "trusted certificate, for authentication or trust chain validation" }, { CMD_OPT_RSA, "rsa", required_argument, "path", diff --git a/src/charon-cmd/cmd/cmd_options.h b/src/charon-cmd/cmd/cmd_options.h index 165e862122..addbb50d81 100644 --- a/src/charon-cmd/cmd/cmd_options.h +++ b/src/charon-cmd/cmd/cmd_options.h @@ -32,6 +32,7 @@ enum cmd_option_type_t { CMD_OPT_VERSION, CMD_OPT_HOST, CMD_OPT_IDENTITY, + CMD_OPT_REMOTE_IDENTITY, CMD_OPT_CERT, CMD_OPT_RSA, CMD_OPT_LOCAL_TS,