Define VICI protocol versions

This commit is contained in:
Andreas Steffen 2015-12-03 10:22:06 +01:00
parent 6789d79d46
commit 75749971e1
5 changed files with 88 additions and 0 deletions

View File

@ -14,6 +14,7 @@ plugin_LTLIBRARIES = libstrongswan-vici.la
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 \
@ -38,6 +39,7 @@ ipseclib_LTLIBRARIES = libvici.la
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

View File

@ -2,6 +2,9 @@
* 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
@ -17,6 +20,7 @@
#include "vici_builder.h"
#include "vici_dispatcher.h"
#include "vici_socket.h"
#include "vici_version.h"
#include <library.h>
#include <threading/mutex.h>
@ -329,6 +333,11 @@ void vici_add_key_valuef(vici_req_t *req, char *key, char *fmt, ...)
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);

View File

@ -2,6 +2,9 @@
* 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.
*
@ -86,6 +89,21 @@
#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.
*/
@ -219,6 +237,14 @@ void vici_add_key_value(vici_req_t *req, char *key, void *buf, int len);
*/
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.
*

View File

@ -0,0 +1,21 @@
/*
* 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"
);

View File

@ -0,0 +1,30 @@
/*
* 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_ @}*/