+From: Sven Eckelmann <sven@narfation.org>
+Date: Sun, 1 Dec 2013 14:39:00 +0100
+Subject: Allow one to disable forking to background in debug_mode 0
+
+---
+ posix/init.c | 19 ++++++++++++++-----
+ 1 file changed, 14 insertions(+), 5 deletions(-)
+
+diff --git a/posix/init.c b/posix/init.c
+index afd409f..901c65a 100644
+--- a/posix/init.c
++++ b/posix/init.c
+@@ -44,6 +44,7 @@
+ #define IOCSETDEV 1
+
+ int8_t stop;
++int no_detach = 0;
+
+
+
+@@ -159,6 +160,7 @@ void apply_init_args( int argc, char *argv[] ) {
+ {"purge-timeout", required_argument, 0, 'q'},
+ {"disable-aggregation", no_argument, 0, 'x'},
+ {"disable-client-nat", no_argument, 0, 'z'},
++ {"no-detach", no_argument, 0, 'D'},
+ {0, 0, 0, 0}
+ };
+
+@@ -166,7 +168,7 @@ void apply_init_args( int argc, char *argv[] ) {
+ stop = 0;
+ prog_name = argv[0];
+
+- while ( ( optchar = getopt_long( argc, argv, "a:A:bcd:hHio:g:p:r:s:vV", long_options, &option_index ) ) != -1 ) {
++ while ( ( optchar = getopt_long( argc, argv, "a:A:bcd:hHio:g:p:r:s:vVD", long_options, &option_index ) ) != -1 ) {
+
+ switch ( optchar ) {
+
+@@ -378,6 +380,11 @@ void apply_init_args( int argc, char *argv[] ) {
+ found_args++;
+ break;
+
++ case 'D':
++ no_detach = 1;
++ found_args++;
++ break;
++
+ case 'h':
+ default:
+ usage();
+@@ -536,12 +543,14 @@ void apply_init_args( int argc, char *argv[] ) {
+ /* daemonize */
+ if (debug_level == 0) {
+
+- if (my_daemon() < 0) {
++ if (!no_detach) {
++ if (my_daemon() < 0) {
+
+- printf("Error - can't fork to background: %s\n", strerror(errno));
+- restore_defaults();
+- exit(EXIT_FAILURE);
++ printf("Error - can't fork to background: %s\n", strerror(errno));
++ restore_defaults();
++ exit(EXIT_FAILURE);
+
++ }
+ }
+
+ openlog("batmand", LOG_PID, LOG_DAEMON);