From: Tobias Brunner Date: Tue, 19 May 2015 15:03:07 +0000 (+0200) Subject: stroke: Use charon.piddir to determine default socket URI X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=87e5b5f62bd2c501037d1b80e0d586da1fa8f772;p=thirdparty%2Fstrongswan.git stroke: Use charon.piddir to determine default socket URI --- diff --git a/src/libcharon/plugins/stroke/stroke_socket.c b/src/libcharon/plugins/stroke/stroke_socket.c index db7e66f143..29976d75da 100644 --- a/src/libcharon/plugins/stroke/stroke_socket.c +++ b/src/libcharon/plugins/stroke/stroke_socket.c @@ -16,6 +16,8 @@ #include "stroke_socket.h" +#define _GNU_SOURCE /* for asprintf() */ +#include #include #include #include @@ -769,7 +771,7 @@ stroke_socket_t *stroke_socket_create() { private_stroke_socket_t *this; int max_concurrent; - char *uri; + char *uri, *uri_default, *piddir; INIT(this, .public = { @@ -800,9 +802,17 @@ stroke_socket_t *stroke_socket_create() max_concurrent = lib->settings->get_int(lib->settings, "%s.plugins.stroke.max_concurrent", MAX_CONCURRENT_DEFAULT, lib->ns); - uri = lib->settings->get_str(lib->settings, - "%s.plugins.stroke.socket", "unix://" STROKE_SOCKET, lib->ns); + + piddir = lib->settings->get_str(lib->settings, "%s.piddir", IPSEC_PIDDIR, + lib->ns); + if (asprintf(&uri_default, "unix://%s/" STROKE_SOCKET_NAME, piddir) < 0) + { + uri_default = strdup("unix://" STROKE_SOCKET); + } + uri = lib->settings->get_str(lib->settings, "%s.plugins.stroke.socket", + uri_default, lib->ns); this->service = lib->streams->create_service(lib->streams, uri, 10); + free(uri_default); if (!this->service) { DBG1(DBG_CFG, "creating stroke socket failed"); diff --git a/src/starter/starterstroke.c b/src/starter/starterstroke.c index 9a9911bbb2..a339dd956b 100644 --- a/src/starter/starterstroke.c +++ b/src/starter/starterstroke.c @@ -91,9 +91,9 @@ static int send_stroke_msg(stroke_msg_t *msg) /* starter is not called from commandline, and therefore absolutely silent */ msg->output_verbosity = -1; - if (asprintf(&uri_default, "unix://%s/charon.ctl", piddir) < 0) + if (asprintf(&uri_default, "unix://%s/" STROKE_SOCKET_NAME, piddir) < 0) { - uri_default = strdup("unix://" IPSEC_PIDDIR "/charon.ctl"); + uri_default = strdup("unix://" STROKE_SOCKET); } uri = lib->settings->get_str(lib->settings, "%s.plugins.stroke.socket", uri_default, daemon_name); diff --git a/src/stroke/stroke.c b/src/stroke/stroke.c index 07911d2d27..c5d0ef186c 100644 --- a/src/stroke/stroke.c +++ b/src/stroke/stroke.c @@ -14,6 +14,7 @@ * for more details. */ +#define _GNU_SOURCE /* for asprintf() */ #include #include #include @@ -75,7 +76,7 @@ static void push_string_impl(stroke_msg_t **msg, size_t offset, char *string) static int send_stroke_msg(stroke_msg_t *msg) { stream_t *stream; - char *uri, buffer[512], *pass; + char *uri, *uri_default, *piddir, buffer[512], *pass; int count; if (msg->length == UINT16_MAX) @@ -87,15 +88,23 @@ static int send_stroke_msg(stroke_msg_t *msg) msg->output_verbosity = output_verbosity; + piddir = lib->settings->get_str(lib->settings, "%s.piddir", IPSEC_PIDDIR, + daemon_name); + if (asprintf(&uri_default, "unix://%s/" STROKE_SOCKET_NAME, piddir) < 0) + { + uri_default = strdup("unix://" STROKE_SOCKET); + } uri = lib->settings->get_str(lib->settings, "%s.plugins.stroke.socket", - "unix://" STROKE_SOCKET, daemon_name); + uri_default, daemon_name); stream = lib->streams->connect(lib->streams, uri); if (!stream) { fprintf(stderr, "failed to connect to stroke socket '%s'\n", uri); + free(uri_default); free(msg); return -1; } + free(uri_default); if (!stream->write_all(stream, msg, msg->length)) { diff --git a/src/stroke/stroke_msg.h b/src/stroke/stroke_msg.h index 17f8a4326f..742dcd89e7 100644 --- a/src/stroke/stroke_msg.h +++ b/src/stroke/stroke_msg.h @@ -22,9 +22,10 @@ #include /** - * Socket which is used to communicate between charon and stroke + * Socket file which is used to communicate between charon and stroke */ -#define STROKE_SOCKET IPSEC_PIDDIR "/charon.ctl" +#define STROKE_SOCKET_NAME "charon.ctl" +#define STROKE_SOCKET IPSEC_PIDDIR "/" STROKE_SOCKET_NAME /** * Number of bytes by which the buffer is increased as needed