vlib: create unix runtime directory
[vpp.git] / src / vpp / stats / stat_segment.c
index 1328ea8..303d704 100644 (file)
@@ -652,7 +652,7 @@ stats_socket_accept_ready (clib_file_t * uf)
   return 0;
 }
 
-static void
+static clib_error_t *
 stats_segment_socket_init (void)
 {
   stat_segment_main_t *sm = &stat_segment_main;
@@ -665,10 +665,7 @@ stats_segment_socket_init (void)
     CLIB_SOCKET_F_ALLOW_GROUP_WRITE | CLIB_SOCKET_F_PASSCRED;
 
   if ((error = clib_socket_init (s)))
-    {
-      clib_error_report (error);
-      return;
-    }
+    return error;
 
   clib_file_t template = { 0 };
   template.read_function = stats_socket_accept_ready;
@@ -677,6 +674,8 @@ stats_segment_socket_init (void)
   clib_file_add (&file_main, &template);
 
   sm->socket = s;
+
+  return 0;
 }
 
 static clib_error_t *
@@ -714,10 +713,11 @@ statseg_init (vlib_main_t * vm)
 {
   stat_segment_main_t *sm = &stat_segment_main;
 
-  if (sm->socket_name)
-    stats_segment_socket_init ();
-
-  return 0;
+  /* set default socket file name when statseg config stanza is empty. */
+  if (!vec_len (sm->socket_name))
+    sm->socket_name = format (0, "%s/%s", vlib_unix_get_runtime_dir (),
+                             STAT_SEGMENT_SOCKET_FILENAME);
+  return stats_segment_socket_init ();
 }
 
 /* *INDENT-OFF* */
@@ -780,12 +780,9 @@ statseg_config (vlib_main_t * vm, unformat_input_t * input)
     {
       if (unformat (input, "socket-name %s", &sm->socket_name))
        ;
+      /* DEPRECATE: default (does nothing) */
       else if (unformat (input, "default"))
-       {
-         vec_reset_length (sm->socket_name);
-         sm->socket_name = format (sm->socket_name, "%s",
-                                   STAT_SEGMENT_SOCKET_FILE);
-       }
+       ;
       else if (unformat (input, "size %U",
                         unformat_memory_size, &sm->memory_size))
        ;
@@ -798,15 +795,12 @@ statseg_config (vlib_main_t * vm, unformat_input_t * input)
                                  format_unformat_error, input);
     }
 
-  /* set default socket file name when statseg config stanza is empty. */
-  if (!vec_len (sm->socket_name))
-    sm->socket_name = format (sm->socket_name, "%s",
-                             STAT_SEGMENT_SOCKET_FILE);
   /*
    * NULL-terminate socket name string
    * clib_socket_init()->socket_config() use C str*
    */
-  vec_terminate_c_string (sm->socket_name);
+  if (vec_len (sm->socket_name))
+    vec_terminate_c_string (sm->socket_name);
 
   return 0;
 }