Repository : ssh://git@diktynna/batmand
On branch : main
commit 2f62b17d4132f82c4716b672101eb7faa916192a Author: Sven Eckelmann sven@narfation.org Date: Sun Dec 1 14:39:00 2013 +0100
Allow one to disable forking to background in debug_mode 0
2f62b17d4132f82c4716b672101eb7faa916192a batman.c | 1 + man/batmand.8 | 3 +++ posix/init.c | 13 +++++++++---- 3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/batman.c b/batman.c index c3dfa7f..1c21fa8 100644 --- a/batman.c +++ b/batman.c @@ -145,6 +145,7 @@ void usage(void) fprintf( stderr, " -v print version\n" ); fprintf( stderr, " --policy-routing-script\n" ); fprintf( stderr, " --disable-client-nat\n" ); + fprintf( stderr, " --no-detach\n" ); }
diff --git a/man/batmand.8 b/man/batmand.8 index 89fcde5..38956ef 100644 --- a/man/batmand.8 +++ b/man/batmand.8 @@ -123,6 +123,9 @@ Since no topology database is computed by the protocol an additional solution to .B --disable-client-nat Since version 0.3.2 batmand uses iptables to set the NAT rules on the gateX interface of the batman client (-r XX). That option disables this feature of batmand and switches the internet tunnel mode to "half tunnels" (the packets towards the gateway are tunneled but not the packets that are coming back) unless NAT was enabled manually. Be sure to know what you are doing! Without NAT the gateway needs to have a route to the client or the packets will be dropped silently. .TP +.B --no-detach +Run batmand in foreground +.TP .B --policy-routing-script This option disables the policy routing feature of batmand (hy all routing changes are send to the script which can make use of this information or not. Firmware and package maintainers can use this option to tightly integrate batmand into their own routing policies. This option is only available in daemon mode. .SH EXAMPLES diff --git a/posix/init.c b/posix/init.c index cb710f2..4533cdc 100644 --- a/posix/init.c +++ b/posix/init.c @@ -51,6 +51,7 @@ #include "../types.h"
int8_t stop; +int no_detach;
static void create_routing_pipe(void) @@ -124,6 +125,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} };
@@ -131,7 +133,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 ) {
@@ -343,6 +345,11 @@ void apply_init_args( int argc, char *argv[] ) { found_args++; break;
+ case 'D': + no_detach = 1; + found_args++; + break; + case 'h': default: usage(); @@ -501,12 +508,10 @@ void apply_init_args( int argc, char *argv[] ) { /* daemonize */ if (debug_level == 0) {
- if (daemon(0, 0) < 0) { - + if (!no_detach && daemon(0, 0) < 0) { printf("Error - can't fork to background: %s\n", strerror(errno)); restore_defaults(); exit(EXIT_FAILURE); - }
openlog("batmand", LOG_PID, LOG_DAEMON);