Re: [Babel-users] [PATCH v4 2/2] Add configuration flag to skip initial kernel setup.

2015-08-20 Thread Juliusz Chroboczek
Applied, thanks.

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/babel-users


[Babel-users] [PATCH v4 2/2] Add configuration flag to skip initial kernel setup.

2015-08-20 Thread Toke Høiland-Jørgensen
This adds a configuration flag to skip kernel (sysctl) setup on daemon
startup. This can be useful if running in, e.g., a container environment
where setting sysctls are not allowed.

Signed-off-by: Toke Høiland-Jørgensen 
---
 babeld.c | 1 +
 babeld.h | 1 +
 babeld.man   | 5 +
 configuration.c  | 3 +++
 kernel_netlink.c | 3 +++
 kernel_socket.c  | 2 ++
 6 files changed, 15 insertions(+)

diff --git a/babeld.c b/babeld.c
index 943f042..58613db 100644
--- a/babeld.c
+++ b/babeld.c
@@ -67,6 +67,7 @@ int default_wired_hello_interval = -1;
 int resend_delay = -1;
 int random_id = 0;
 int do_daemonise = 0;
+int skip_kernel_setup = 0;
 const char *logfile = NULL,
 *pidfile = "/var/run/babeld.pid",
 *state_file = "/var/lib/babel-state";
diff --git a/babeld.h b/babeld.h
index 92ce9b5..3532649 100644
--- a/babeld.h
+++ b/babeld.h
@@ -86,6 +86,7 @@ extern time_t reboot_time;
 extern int default_wireless_hello_interval, default_wired_hello_interval;
 extern int resend_delay;
 extern int random_id;
+extern int skip_kernel_setup;
 extern int do_daemonise;
 extern const char *logfile, *pidfile, *state_file;
 extern int link_detect;
diff --git a/babeld.man b/babeld.man
index ec600c2..54f27fc 100644
--- a/babeld.man
+++ b/babeld.man
@@ -253,6 +253,11 @@ This specifies whether to daemonize at startup, and is 
equivalent to
 the command-line option
 .BR \-D .
 .TP
+.BR skip-kernel-setup " {" true | false }
+If this flag is set, no kernel (sysctl) setup is performed on startup. This can
+be useful when running in environments where system permissions prevent setting
+kernel parameters, for instance inside a Linux container.
+.TP
 .BI state-file " filename"
 This specifies the name of the file used for preserving long-term
 information between invocations of the
diff --git a/configuration.c b/configuration.c
index 6a9c09d..52de595 100644
--- a/configuration.c
+++ b/configuration.c
@@ -691,6 +691,7 @@ parse_option(int c, gnc_t gnc, void *closure, char *token)
   strcmp(token, "link-detect") == 0 ||
   strcmp(token, "random-id") == 0 ||
   strcmp(token, "daemonise") == 0 ||
+  strcmp(token, "skip-kernel-setup") == 0 ||
   strcmp(token, "ipv6-subtrees") == 0 ||
   strcmp(token, "reflect-kernel-metric") == 0) {
 int b;
@@ -706,6 +707,8 @@ parse_option(int c, gnc_t gnc, void *closure, char *token)
 random_id = b;
 else if(strcmp(token, "daemonise") == 0)
 do_daemonise = b;
+else if(strcmp(token, "skip-kernel-setup") == 0)
+skip_kernel_setup = b;
 else if(strcmp(token, "ipv6-subtrees") == 0)
 has_ipv6_subtrees = b;
 else if(strcmp(token, "reflect-kernel-metric") == 0)
diff --git a/kernel_netlink.c b/kernel_netlink.c
index 557f7fa..d87ee0b 100644
--- a/kernel_netlink.c
+++ b/kernel_netlink.c
@@ -514,6 +514,7 @@ kernel_setup(int setup)
 }
 nl_setup = 1;
 
+if(skip_kernel_setup) return 1;
 
 for(i=0; iwas && s->was != s->want) {
diff --git a/kernel_socket.c b/kernel_socket.c
index 24658d3..af7c458 100644
--- a/kernel_socket.c
+++ b/kernel_socket.c
@@ -214,6 +214,8 @@ kernel_setup(int setup)
 int mib[4];
 size_t datasize;
 
+if(skip_kernel_setup) return 1;
+
 mib[0] = CTL_NET;
 mib[1] = AF_INET6;
 seq = time(NULL);
-- 
2.5.0

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/babel-users