[LEDE-DEV] odhcpd: [PATCHv2 1/3] enable loglevel setting via command line

Karl Palsson karlp at tweak.net.au
Wed Sep 28 09:32:39 PDT 2016


From: Karl Palsson <karlp at etactica.com>

Currently the loglevel is hardcoded to LOG_WARNING, even though there is
debug log messages.  Allow setting the loglevel via cli option.
Include basic help text because we're adding command line options.

Signed-off-by: Karl Palsson <karlp at etactica.com>
---

Changes since v1:
 Use command line arg instead of env var.

 src/odhcpd.c | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/src/odhcpd.c b/src/odhcpd.c
index 74830ac..4341369 100644
--- a/src/odhcpd.c
+++ b/src/odhcpd.c
@@ -54,11 +54,33 @@ static void sighandler(_unused int signal)
 	uloop_end();
 }
 
+static void print_usage(const char *app)
+{
+	printf(
+	"== %s Usage ==\n\n"
+        "  -h, --help   Print this help\n"
+        "  -l level     Specify log level 0..7 (default %d)\n",
+		app, LOG_WARNING
+	);
+}
 
-int main()
+int main(int argc, char **argv)
 {
 	openlog("odhcpd", LOG_PERROR | LOG_PID, LOG_DAEMON);
-	setlogmask(LOG_UPTO(LOG_WARNING));
+	int opt;
+	int log_level = LOG_WARNING;
+	while ((opt = getopt(argc, argv, "hl:")) != -1) {
+		switch (opt) {
+		case 'h':
+			print_usage(argv[0]);
+			return 0;
+		case 'l':
+			log_level = atoi(optarg);
+			fprintf(stderr, "Log level set to %d\n", log_level);
+			break;
+		}
+	}
+	setlogmask(LOG_UPTO(log_level));
 	uloop_init();
 
 	if (getuid() != 0) {
-- 
2.4.11




More information about the Lede-dev mailing list