stats: Add log reporter

This reporter passes the measurement values to the logging subsystem
as DSTATS (which is currently DLGLOBAL) level INFO messages.

Sponsored-by: On-Waves ehf
diff --git a/src/vty/stats_vty.c b/src/vty/stats_vty.c
index 18ad283..839dc82 100644
--- a/src/vty/stats_vty.c
+++ b/src/vty/stats_vty.c
@@ -258,6 +258,47 @@
 	return CMD_SUCCESS;
 }
 
+DEFUN(cfg_stats_reporter_log, cfg_stats_reporter_log_cmd,
+	"stats reporter log",
+	CFG_STATS_STR CFG_REPORTER_STR "Report to the logger\n")
+{
+	struct stats_reporter *srep;
+
+	srep = stats_reporter_find(STATS_REPORTER_LOG, NULL);
+	if (!srep) {
+		srep = stats_reporter_create_log(NULL);
+		if (!srep) {
+			vty_out(vty, "%% Unable to create log reporter%s",
+				VTY_NEWLINE);
+			return CMD_WARNING;
+		}
+		/* TODO: if needed, add stats_add_reporter(srep); */
+	}
+
+	vty->index = srep;
+	vty->node = CFG_STATS_NODE;
+
+	return CMD_SUCCESS;
+}
+
+DEFUN(cfg_no_stats_reporter_log, cfg_no_stats_reporter_log_cmd,
+	"no stats reporter log",
+	NO_STR CFG_STATS_STR CFG_REPORTER_STR "Report to the logger\n")
+{
+	struct stats_reporter *srep;
+
+	srep = stats_reporter_find(STATS_REPORTER_LOG, NULL);
+	if (!srep) {
+		vty_out(vty, "%% No log reporting active%s",
+			VTY_NEWLINE);
+		return CMD_WARNING;
+	}
+
+	stats_reporter_free(srep);
+
+	return CMD_SUCCESS;
+}
+
 DEFUN(show_stats,
       show_stats_cmd,
       "show stats",
@@ -277,6 +318,9 @@
 	case STATS_REPORTER_STATSD:
 		vty_out(vty, "stats reporter statsd%s", VTY_NEWLINE);
 		break;
+	case STATS_REPORTER_LOG:
+		vty_out(vty, "stats reporter log%s", VTY_NEWLINE);
+		break;
 	}
 
 	vty_out(vty, "  disable%s", VTY_NEWLINE);
@@ -312,8 +356,11 @@
 {
 	struct stats_reporter *srep;
 
+	/* TODO: loop through all reporters */
 	srep = stats_reporter_find(STATS_REPORTER_STATSD, NULL);
 	config_write_stats_reporter(vty, srep);
+	srep = stats_reporter_find(STATS_REPORTER_LOG, NULL);
+	config_write_stats_reporter(vty, srep);
 
 	vty_out(vty, "stats interval %d%s", stats_config->interval, VTY_NEWLINE);
 
@@ -326,6 +373,8 @@
 
 	install_element(CONFIG_NODE, &cfg_stats_reporter_statsd_cmd);
 	install_element(CONFIG_NODE, &cfg_no_stats_reporter_statsd_cmd);
+	install_element(CONFIG_NODE, &cfg_stats_reporter_log_cmd);
+	install_element(CONFIG_NODE, &cfg_no_stats_reporter_log_cmd);
 	install_element(CONFIG_NODE, &cfg_stats_interval_cmd);
 
 	install_node(&cfg_stats_node, config_write_stats);