All of lore.kernel.org
 help / color / mirror / Atom feed
* [conntrack-tools PATCH 1/3] log: introduce a mechanism to know if log was initialized
@ 2016-11-04 10:37 Arturo Borrero Gonzalez
  2016-11-04 10:37 ` [conntrack-tools PATCH 2/3] conntrackd: replace error reporting in the config parser with dlog() Arturo Borrero Gonzalez
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Arturo Borrero Gonzalez @ 2016-11-04 10:37 UTC (permalink / raw)
  To: netfilter-devel

This will allow to call dlog() function from all the points in the
execution at runtime.

If the log was not initialized, then we just fprintf and return.

By now, we can't init the log engine earlier because we require config
from the user, so there is a egg-chicken problem.
This means that we can't log parsing messages to logfiles but only to
stderr/stdout.

Signed-off-by: Arturo Borrero Gonzalez <arturo@debian.org>
---
 include/conntrackd.h |    1 +
 src/log.c            |    9 ++++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/include/conntrackd.h b/include/conntrackd.h
index 8406c54..f995f4b 100644
--- a/include/conntrackd.h
+++ b/include/conntrackd.h
@@ -147,6 +147,7 @@ struct ct_general_state {
 	sigset_t 			block;
 	FILE 				*log;
 	FILE				*stats_log;
+	int				log_init;
 	struct local_server		local;
 	struct ct_mode 			*mode;
 	struct ct_filter		*us_filter;
diff --git a/src/log.c b/src/log.c
index 0796ba9..6deccfa 100644
--- a/src/log.c
+++ b/src/log.c
@@ -57,6 +57,8 @@ int init_log(void)
 	    CONFIG(stats).syslog_facility != -1)
 		openlog(PACKAGE, LOG_PID, CONFIG(syslog_facility));
 
+	STATE(log_init) = 1;
+
 	return 0;
 }
 
@@ -101,7 +103,7 @@ void dlog(int priority, const char *format, ...)
 	FILE *console_out;
  	va_list args;
 
-	if (CONFIG(running_mode) != DAEMON) {
+	if (CONFIG(running_mode) != DAEMON || STATE(log_init) == 0) {
 		switch (priority) {
 		case LOG_INFO:
 		case LOG_NOTICE:
@@ -118,6 +120,9 @@ void dlog(int priority, const char *format, ...)
 		va_end(args);
 	}
 
+	if (STATE(log_init) == 0)
+		return;
+
 	if (fd) {
 		va_start(args, format);
 		logline_put(fd, priority, format, &args);
@@ -211,6 +216,8 @@ void dlog_exp(FILE *fd, struct nf_expect *exp, unsigned int type)
 
 void close_log(void)
 {
+	STATE(log_init) = 0;
+
 	if (STATE(log) != NULL)
 		fclose(STATE(log));
 


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-11-08 23:30 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-04 10:37 [conntrack-tools PATCH 1/3] log: introduce a mechanism to know if log was initialized Arturo Borrero Gonzalez
2016-11-04 10:37 ` [conntrack-tools PATCH 2/3] conntrackd: replace error reporting in the config parser with dlog() Arturo Borrero Gonzalez
2016-11-04 10:37 ` [conntrack-tools PATCH 3/3] conntrackd: replace fprintf calls " Arturo Borrero Gonzalez
2016-11-08 23:30 ` [conntrack-tools PATCH 1/3] log: introduce a mechanism to know if log was initialized Pablo Neira Ayuso

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.