Annotation of embedaddon/strongswan/src/swanctl/commands/list_algs.c, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2015 Tobias Brunner
3: * HSR Hochschule fuer Technik Rapperswil
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: CALLBACK(algs, int,
21: void *null, vici_res_t *res, char *name, void *value, int len)
22: {
23: if (chunk_printable(chunk_create(value, len), NULL, ' '))
24: {
25: printf(" %s[%.*s]\n", name, len, value);
26: }
27: return 0;
28: }
29:
30: CALLBACK(types, int,
31: void *null, vici_res_t *res, char *name)
32: {
33: printf("%s:\n", name);
34: return vici_parse_cb(res, NULL, algs, NULL, NULL);
35: }
36:
37: static int algorithms(vici_conn_t *conn)
38: {
39: vici_req_t *req;
40: vici_res_t *res;
41: char *arg;
42: command_format_options_t format = COMMAND_FORMAT_NONE;
43: int ret;
44:
45: while (TRUE)
46: {
47: switch (command_getopt(&arg))
48: {
49: case 'h':
50: return command_usage(NULL);
51: case 'P':
52: format |= COMMAND_FORMAT_PRETTY;
53: /* fall through to raw */
54: case 'r':
55: format |= COMMAND_FORMAT_RAW;
56: continue;
57: case EOF:
58: break;
59: default:
60: return command_usage("invalid --list-algs option");
61: }
62: break;
63: }
64:
65: req = vici_begin("get-algorithms");
66: res = vici_submit(req, conn);
67: if (!res)
68: {
69: ret = errno;
70: fprintf(stderr, "get-algorithms request failed: %s\n", strerror(errno));
71: return ret;
72: }
73: if (format & COMMAND_FORMAT_RAW)
74: {
75: vici_dump(res, "get-algorithms reply", format & COMMAND_FORMAT_PRETTY,
76: stdout);
77: }
78: else
79: {
80: if (vici_parse_cb(res, types, NULL, NULL, NULL) != 0)
81: {
82: fprintf(stderr, "parsing get-algorithms reply failed: %s\n",
83: strerror(errno));
84: }
85: }
86: vici_free_res(res);
87: return 0;
88: }
89:
90: /**
91: * Register the command.
92: */
93: static void __attribute__ ((constructor))reg()
94: {
95: command_register((command_t) {
96: algorithms, 'g', "list-algs", "show loaded algorithms",
97: {"[--raw|--pretty]"},
98: {
99: {"help", 'h', 0, "show usage information"},
100: {"raw", 'r', 0, "dump raw response message"},
101: {"pretty", 'P', 0, "dump raw response message in pretty print"},
102: }
103: });
104: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>