The cirros image was rebuilt against the 3.13.0-83 kernel, drivers e1000e, igbvf...
[packages/trusty/cirros-testvm.git] / cirros-testvm / src-cirros / buildroot-2015.05 / package / softether / 0002-create-non-forking-softetherd-for-upstart-and-systemd.patch
diff --git a/cirros-testvm/src-cirros/buildroot-2015.05/package/softether/0002-create-non-forking-softetherd-for-upstart-and-systemd.patch b/cirros-testvm/src-cirros/buildroot-2015.05/package/softether/0002-create-non-forking-softetherd-for-upstart-and-systemd.patch
new file mode 100644 (file)
index 0000000..72913b0
--- /dev/null
@@ -0,0 +1,218 @@
+From 64dd780905ae339a0a57e4aba541799016816a1a Mon Sep 17 00:00:00 2001
+From: Darik Horn <dajhorn@vanadac.com>
+Date: Fri, 3 Oct 2014 13:30:24 -0400
+Subject: [PATCH] Create a non-forking softetherd for upstart and systemd.
+
+Implement a daemon that expects to be invoked by a new-style init like upstart
+or systemd as:
+
+       /usr/sbin/softetherd [vpnbridge|vpnclient|vpnserver]
+
+Alternatively, if the command line argument is empty, then use the
+`SOFTETHER_MODE` environment variable instead.
+
+Conflicts:
+       src/bin/hamcore/strtable_en.stb
+
+Taken from Github at
+https://github.com/dajhorn/SoftEtherVPN/commit/64dd780905ae339a0a57e4aba541799016816a1a.
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ configure.ac                    |   1 +
+ src/Makefile.am                 |   3 ++
+ src/bin/hamcore/strtable_en.stb |   1 +
+ src/softetherd/Makefile.am      |  28 ++++++++++
+ src/softetherd/softetherd.c     | 114 ++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 147 insertions(+)
+ create mode 100644 src/softetherd/Makefile.am
+ create mode 100644 src/softetherd/softetherd.c
+
+Index: b/configure.ac
+===================================================================
+--- a/configure.ac
++++ b/configure.ac
+@@ -36,6 +36,7 @@
+       src/vpnclient/Makefile
+       src/vpnbridge/Makefile
+       src/vpncmd/Makefile
++      src/softetherd/Makefile
+ ])
+Index: b/src/Makefile.am
+===================================================================
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -27,3 +27,6 @@
+ # These are the final build products.
+ SUBDIRS += vpnserver vpnclient vpnbridge vpncmd
++
++# This is a daemon for upstart and systemd.
++SUBDIRS += softetherd
+Index: b/src/bin/hamcore/strtable_en.stb
+===================================================================
+--- a/src/bin/hamcore/strtable_en.stb
++++ b/src/bin/hamcore/strtable_en.stb
+@@ -1062,6 +1062,7 @@
\r
\r
+ # Concerning services (UNIX)\r
++UNIX_DAEMON_HELP              SoftEther VPN non-forking daemon for upstart and systemd.\nCommand Usage:\n %S vpnbridge  - Enable bridging features.\n %S vpnclient  - Enable client features.\n %S vpnserver  - Enable all features.\nThe parameter can be set in the SOFTETHER_MODE environment variable.\n\n\r
+ UNIX_SVC_HELP                 %S service program\nCopyright (c) SoftEther VPN Project. All Rights Reserved.\n\n%S command usage:\n %S start  - Start the %S service.\n %S stop   - Stop the %S service if the service has been already started.\n\n\r
+ UNIX_SVC_STARTED              The %S service has been started.\n\r
+ UNIX_SVC_STOPPING             Stopping the %S service ...\n\r
+Index: b/src/softetherd/Makefile.am
+===================================================================
+--- /dev/null
++++ b/src/softetherd/Makefile.am
+@@ -0,0 +1,28 @@
++#  Copyright 2014 Darik Horn <dajhorn@vanadac.com>
++#
++#  This file is part of SoftEther.
++#
++#  SoftEther 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.
++#
++#  SoftEther 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.
++#
++#  You should have received a copy of the GNU General Public License along with
++#  SoftEther.  If not, see <http://www.gnu.org/licenses/>.
++
++
++include $(top_srcdir)/autotools/softether.am
++
++sbin_PROGRAMS = \
++      softetherd
++
++softetherd_SOURCES = \
++      softetherd.c
++
++softetherd_LDADD = \
++      $(top_builddir)/src/libsoftether/libsoftether.la
+Index: b/src/softetherd/softetherd.c
+===================================================================
+--- /dev/null
++++ b/src/softetherd/softetherd.c
+@@ -0,0 +1,114 @@
++//  SoftEther VPN daemon for upstart and systemd.
++//
++//  Copyright 2014 Darik Horn <dajhorn@vanadac.com>
++//
++//  This file is part of SoftEther.
++//
++//  SoftEther 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.
++//
++//  SoftEther 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.
++//
++//  You should have received a copy of the GNU General Public License along with
++//  SoftEther.  If not, see <http://www.gnu.org/licenses/>.
++
++
++#include <GlobalConst.h>
++
++#define       VPN_EXE
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <wchar.h>
++#include <stdarg.h>
++#include <time.h>
++#include <Mayaqua/Mayaqua.h>
++#include <Cedar/Cedar.h>
++
++void DaemonUsage(char *name)
++{
++      UniPrint(_UU("UNIX_DAEMON_HELP"), name, name, name);
++}
++
++
++void DaemonStartProcess()
++{
++      // This environment variable is exported by upstart.
++      char *upstart_job = getenv("UPSTART_JOB");
++
++      InitCedar();
++      StInit();
++      StStartServer(false);
++
++      // Notify upstart that softetherd is ready.
++      if (upstart_job != NULL)
++      {
++              unsetenv("UPSTART_JOB");
++              raise(SIGSTOP);
++      }
++}
++
++
++void DaemonStopProcess()
++{
++      StStopServer();
++      StFree();
++      FreeCedar();
++}
++
++
++int main(int argc, char *argv[])
++{
++      // This environment variable is sourced and exported by the init process from /etc/default/softether.
++      char *softether_mode = getenv("SOFTETHER_MODE");
++
++      InitMayaqua(false, false, argc, argv);
++
++      // Check for an explicit invocation. (eg: "/usr/sbin/softetherd vpnserver")
++      if (argc >= 2)
++      {
++              if (StrCmpi(argv[1], "vpnbridge") == 0
++               || StrCmpi(argv[1], "vpnclient") == 0
++               || StrCmpi(argv[1], "vpnserver") == 0)
++              {
++                      UnixExecService(argv[1], DaemonStartProcess, DaemonStopProcess);
++                      FreeMayaqua();
++                      return 0;
++              }
++
++              // Exit status codes 150..199 are reserved for the application by the LSB.
++              fprintf(stderr, "Error: Unrecognized parameter: %s\n", argv[1]);
++              fflush(stderr);
++              FreeMayaqua();
++              return 150;
++      }
++
++      // Alternatively, use the environment variable.
++      if (softether_mode != NULL)
++      {
++              if (StrCmpi(softether_mode, "vpnbridge") == 0 
++               || StrCmpi(softether_mode, "vpnclient") == 0
++               || StrCmpi(softether_mode, "vpnserver") == 0)
++              {
++                      UnixExecService(softether_mode, DaemonStartProcess, DaemonStopProcess);
++                      FreeMayaqua();
++                      return 0;
++              }
++
++              // Exit status codes 150..199 are reserved for the application by the LSB.
++              fprintf(stderr, "Error: Unrecognized environment variable: SOFTETHER_MODE=%s\n", softether_mode);
++              fflush(stderr);
++              FreeMayaqua();
++              return 151;
++      }
++
++      DaemonUsage(argv[0]);
++      FreeMayaqua();
++      return 3;
++}