diff options
Diffstat (limited to 'src/swanctl/commands/initiate.c')
-rw-r--r-- | src/swanctl/commands/initiate.c | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/src/swanctl/commands/initiate.c b/src/swanctl/commands/initiate.c index 8e452a6f6..b27bb8194 100644 --- a/src/swanctl/commands/initiate.c +++ b/src/swanctl/commands/initiate.c @@ -13,6 +13,28 @@ * for more details. */ +/* + * Copyright (C) 2014 Timo Teräs <timo.teras@iki.fi> + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #include "command.h" #include <errno.h> @@ -37,7 +59,7 @@ static int initiate(vici_conn_t *conn) vici_req_t *req; vici_res_t *res; command_format_options_t format = COMMAND_FORMAT_NONE; - char *arg, *child = NULL, *ike = NULL; + char *arg, *child = NULL, *ike = NULL, *my_host = NULL, *other_host = NULL; int ret = 0, timeout = 0, level = 1; while (TRUE) @@ -64,6 +86,12 @@ static int initiate(vici_conn_t *conn) case 'l': level = atoi(arg); continue; + case 'S': + my_host = arg; + continue; + case 'R': + other_host = arg; + continue; case EOF: break; default: @@ -87,6 +115,14 @@ static int initiate(vici_conn_t *conn) { vici_add_key_valuef(req, "ike", "%s", ike); } + if (my_host) + { + vici_add_key_valuef(req, "my-host", "%s", my_host); + } + if (other_host) + { + vici_add_key_valuef(req, "other-host", "%s", other_host); + } if (timeout) { vici_add_key_valuef(req, "timeout", "%d", timeout * 1000); @@ -133,6 +169,8 @@ static void __attribute__ ((constructor))reg() {"help", 'h', 0, "show usage information"}, {"child", 'c', 1, "initate a CHILD_SA configuration"}, {"ike", 'i', 1, "name of the connection to which the child belongs"}, + {"source", 'S', 1, "override source address"}, + {"remote", 'R', 1, "override remote address"}, {"timeout", 't', 1, "timeout in seconds before detaching"}, {"raw", 'r', 0, "dump raw response message"}, {"pretty", 'P', 0, "dump raw response message in pretty print"}, |