vici: Match identity with wildcards against remote ID in redirect command
[strongswan.git] / src / swanctl / commands / reload_settings.c
1 /*
2 * Copyright (C) 2014 Martin Willi
3 * Copyright (C) 2014 revosec AG
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * for more details.
14 */
15
16 #include "command.h"
17
18 #include <errno.h>
19
20 static int reload_settings(vici_conn_t *conn)
21 {
22 vici_req_t *req;
23 vici_res_t *res;
24 char *arg;
25 int ret = 0;
26 command_format_options_t format = COMMAND_FORMAT_NONE;
27
28 while (TRUE)
29 {
30 switch (command_getopt(&arg))
31 {
32 case 'h':
33 return command_usage(NULL);
34 case 'P':
35 format |= COMMAND_FORMAT_PRETTY;
36 /* fall through to raw */
37 case 'r':
38 format |= COMMAND_FORMAT_RAW;
39 continue;
40 case EOF:
41 break;
42 default:
43 return command_usage("invalid --reload-settings option");
44 }
45 break;
46 }
47
48 req = vici_begin("reload-settings");
49 res = vici_submit(req, conn);
50 if (!res)
51 {
52 ret = errno;
53 fprintf(stderr, "reload-settings request failed: %s\n", strerror(errno));
54 return ret;
55 }
56 if (format & COMMAND_FORMAT_RAW)
57 {
58 vici_dump(res, "reload-settings reply",
59 format & COMMAND_FORMAT_PRETTY, stdout);
60 }
61 else
62 {
63 if (!streq(vici_find_str(res, "no", "success"), "yes"))
64 {
65 fprintf(stderr, "reload-settings failed: %s\n",
66 vici_find_str(res, "", "errmsg"));
67 ret = 1;
68 }
69 }
70 vici_free_res(res);
71 return ret;
72 }
73
74 /**
75 * Register the command.
76 */
77 static void __attribute__ ((constructor))reg()
78 {
79 command_register((command_t) {
80 reload_settings, 'r', "reload-settings", "reload daemon strongswan.conf",
81 {"[--raw|--pretty]"},
82 {
83 {"help", 'h', 0, "show usage information"},
84 {"raw", 'r', 0, "dump raw response message"},
85 {"pretty", 'P', 0, "dump raw response message in pretty print"},
86 }
87 });
88 }