stats: add boot time in stats segment

Write time into /sys/boottime on VPP start.
This allows a stateless control plane agent to validate if it's reconnecting to the same
VPP instance.

Type: improvement
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: Iba7f334339c46142045e43da6efab11612e7b9c0
Signed-off-by: Ole Troan <ot@cisco.com>
diff --git a/src/vlib/stats/collector.c b/src/vlib/stats/collector.c
index c27d2fc..53fbfa0 100644
--- a/src/vlib/stats/collector.c
+++ b/src/vlib/stats/collector.c
@@ -169,6 +169,8 @@
 	}
     }
 
+  sm->directory_vector[STAT_COUNTER_BOOTTIME].value = unix_time_now ();
+
   while (1)
     {
       do_stat_segment_updates (vm, sm);
diff --git a/src/vlib/stats/stats.h b/src/vlib/stats/stats.h
index b07f217..ab1e282 100644
--- a/src/vlib/stats/stats.h
+++ b/src/vlib/stats/stats.h
@@ -21,12 +21,14 @@
 {
   STAT_COUNTER_HEARTBEAT = 0,
   STAT_COUNTER_LAST_STATS_CLEAR,
+  STAT_COUNTER_BOOTTIME,
   STAT_COUNTERS
 } stat_segment_counter_t;
 
 #define foreach_stat_segment_counter_name                                     \
   _ (LAST_STATS_CLEAR, SCALAR_INDEX, last_stats_clear, "/sys")                \
-  _ (HEARTBEAT, SCALAR_INDEX, heartbeat, "/sys")
+  _ (HEARTBEAT, SCALAR_INDEX, heartbeat, "/sys")                              \
+  _ (BOOTTIME, SCALAR_INDEX, boottime, "/sys")
 
 typedef struct
 {