endif
libstrongswan_vici_la_SOURCES = \
+ vici_version.c vici_version.h \
vici_socket.h vici_socket.c \
vici_message.h vici_message.c \
vici_builder.h vici_builder.c \
libvici_la_SOURCES = \
vici_message.c vici_message.h \
vici_builder.c vici_builder.h \
+ vici_version.c vici_version.h \
libvici.c libvici.h
libvici_la_LIBADD = $(top_builddir)/src/libstrongswan/libstrongswan.la
* Copyright (C) 2014 Martin Willi
* Copyright (C) 2014 revosec AG
*
+ * Copyright (C) 2015 Andreas Steffen
+ * HSR Hochschule fuer Technik Rapperswil
+ *
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
#include "vici_builder.h"
#include "vici_dispatcher.h"
#include "vici_socket.h"
+#include "vici_version.h"
#include <library.h>
#include <threading/mutex.h>
va_end(args);
}
+void vici_add_version(vici_req_t *req, vici_version_t version)
+{
+ vici_add_key_valuef(req, "vici", "%N", vici_version_names, version);
+}
+
void vici_begin_list(vici_req_t *req, char *name)
{
req->b->add(req->b, VICI_LIST_START, name);
* Copyright (C) 2014 Martin Willi
* Copyright (C) 2014 revosec AG
*
+ * Copyright (C) 2015 Andreas Steffen
+ * HSR Hochschule fuer Technik Rapperswil
+
* libvici.h is MIT-licensed to simplify reuse, but please note that libvici.c
* is not, as it depends on the GPLv2 licensed libstrongswan.
*
#include <stdio.h>
+/**
+ * Vici versions
+ */
+typedef enum {
+ /** default version if vici key/value pair is missing in message */
+ VICI_1_0,
+ /** current version, vici key/value pair is explicitly sent in message */
+ VICI_2_0,
+} vici_version_t;
+
+/**
+ * Current vici version
+ */
+#define VICI_VERSION VICI_2_0
+
/**
* Opaque vici connection contex.
*/
*/
void vici_add_key_valuef(vici_req_t *req, char *key, char *fmt, ...);
+/**
+ * Add a vici version key/value pair (not not needed for VICI 1.0)
+ *
+ * @param req request message to add vici version key/value pair to
+ * @param version vici version
+ */
+void vici_add_version(vici_req_t *req, vici_version_t version);
+
/**
* Begin a list in a request message.
*
--- /dev/null
+/*
+ * Copyright (C) 2015 Andreas Steffen
+ * HSR Hochschule fuer Technik Rapperswil
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+
+#include "vici_version.h"
+
+ENUM(vici_version_names, VICI_1_0, VICI_2_0,
+ "1.0",
+ "2.0"
+);
--- /dev/null
+/*
+ * Copyright (C) 2015 Andreas Steffen
+ * HSR Hochschule fuer Technik Rapperswil
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+
+/**
+ * @defgroup vici_version vici_version
+ * @{ @ingroup vici
+ */
+
+#ifndef VICI_VERSION_H_
+#define VICI_VERSION_H_
+
+#include "libvici.h"
+
+#include <utils/utils.h>
+
+extern enum_name_t *vici_version_names;
+
+#endif /** VICI_VERSION_H_ @}*/