stats: Support statsd Multi-Metric Packets

If the MTU is given, combine several messages into a single UDP
packet until the limit is reached. Flush all reporters after the
values have been scanned.

New vty commands (node config-stats):
  mtu <100-65535>     Enable multi-metric packets and set the maximum
                      packet size (in byte)
  no mtu              Disable multi-metric packets

Note that single messages that are longer than the given MTU (minus
28 octets protocol overhead) will be dropped.

Sponsored-by: On-Waves ehf
diff --git a/src/vty/stats_vty.c b/src/vty/stats_vty.c
index a4fd7b0..775184c 100644
--- a/src/vty/stats_vty.c
+++ b/src/vty/stats_vty.c
@@ -128,6 +128,23 @@
 		argv[0], "remote port");
 }
 
+DEFUN(cfg_stats_reporter_mtu, cfg_stats_reporter_mtu_cmd,
+	"mtu <100-65535>",
+	"Set the maximum packet size\n"
+	"Size in byte\n")
+{
+	return set_srep_parameter_int(vty, stats_reporter_set_mtu,
+		argv[0], "mtu");
+}
+
+DEFUN(cfg_no_stats_reporter_mtu, cfg_no_stats_reporter_mtu_cmd,
+	"no mtu",
+	NO_STR "Set the maximum packet size\n")
+{
+	return set_srep_parameter_int(vty, stats_reporter_set_mtu,
+		0, "mtu");
+}
+
 DEFUN(cfg_stats_reporter_prefix, cfg_stats_reporter_prefix_cmd,
 	"prefix PREFIX",
 	"Set the item name prefix\n"
@@ -312,6 +329,8 @@
 	install_element(CFG_STATS_NODE, &cfg_no_stats_reporter_local_ip_cmd);
 	install_element(CFG_STATS_NODE, &cfg_stats_reporter_remote_ip_cmd);
 	install_element(CFG_STATS_NODE, &cfg_stats_reporter_remote_port_cmd);
+	install_element(CFG_STATS_NODE, &cfg_stats_reporter_mtu_cmd);
+	install_element(CFG_STATS_NODE, &cfg_no_stats_reporter_mtu_cmd);
 	install_element(CFG_STATS_NODE, &cfg_stats_reporter_prefix_cmd);
 	install_element(CFG_STATS_NODE, &cfg_no_stats_reporter_prefix_cmd);
 	install_element(CFG_STATS_NODE, &cfg_stats_reporter_enable_cmd);