#define LINK_STATE_ELOGS 0
-#define DEFAULT_HUGE_DIR "/run/vpp/hugepages"
-#define VPP_RUN_DIR "/run/vpp"
+#define DEFAULT_HUGE_DIR (VPP_RUN_DIR "/hugepages")
/* Port configuration, mildly modified Intel app values */
vec_free (mem_by_socket);
- rv = mkdir (VPP_RUN_DIR, 0755);
- if (rv && errno != EEXIST)
- {
- error = clib_error_return (0, "mkdir '%s' failed errno %d",
- VPP_RUN_DIR, errno);
- goto done;
- }
+ /* Make sure VPP_RUN_DIR exists */
+ error = unix_make_vpp_run_dir ();
+ if (error)
+ goto done;
rv = mkdir (DEFAULT_HUGE_DIR, 0755);
if (rv && errno != EEXIST)
/* CLI listen. */
unix_file_t template = { 0 };
+ /* If our listen address looks like a path and it starts with
+ * VPP_RUN_DIR, go make sure VPP_RUN_DIR exists before trying to open
+ * a socket in it.
+ */
+ if (strncmp (s->config, VPP_RUN_DIR "/", strlen (VPP_RUN_DIR) + 1) == 0)
+ {
+ error = unix_make_vpp_run_dir ();
+ if (error)
+ return error;
+ }
+
s->flags = SOCKET_IS_SERVER | /* listen, don't connect */
SOCKET_ALLOW_GROUP_WRITE; /* PF_LOCAL socket only */
error = clib_socket_init (s);
#include <vppinfra/socket.h>
#include <termios.h>
+
+/** VPP runtime ephemeral directory. Typically stored in a tmpfs. */
+#define VPP_RUN_DIR "/run/vpp"
+
struct unix_file;
typedef clib_error_t *(unix_file_function_t) (struct unix_file * f);
u8 * file_name),
void *arg, int scan_dirs);
+clib_error_t *unix_make_vpp_run_dir (void);
+
#endif /* included_unix_unix_h */
/*
return r;
}
+clib_error_t *
+unix_make_vpp_run_dir (void)
+{
+ int rv;
+
+ rv = mkdir (VPP_RUN_DIR, 0755);
+ if (rv && errno != EEXIST)
+ return clib_error_return (0, "mkdir '%s' failed errno %d",
+ VPP_RUN_DIR, errno);
+
+ return 0;
+}
+
/*
* fd.io coding-style-patch-verification: ON
*