#include "poll-loop.h"
#include "shash.h"
#include "socket-util.h"
+#include "svec.h"
#include "util.h"
+#include "vlog.h"
#ifndef SCM_CREDENTIALS
#include <time.h>
#endif
-#define THIS_MODULE VLM_unixctl
-#include "vlog.h"
+VLOG_DEFINE_THIS_MODULE(unixctl)
\f
struct unixctl_command {
unixctl_cb_func *cb;
{
struct ds ds = DS_EMPTY_INITIALIZER;
struct shash_node *node;
+ struct svec names;
+ const char *name;
+ size_t i;
ds_put_cstr(&ds, "The available commands are:\n");
+
+ svec_init(&names);
SHASH_FOR_EACH (node, &commands) {
- ds_put_format(&ds, "\t%s\n", node->name);
+ svec_add(&names, node->name);
}
+ svec_sort(&names);
+
+ SVEC_FOR_EACH (i, name, &names) {
+ ds_put_format(&ds, "\t%s\n", name);
+ }
+ svec_destroy(&names);
+
unixctl_command_reply(conn, 214, ds_cstr(&ds));
ds_destroy(&ds);
}
\f
/* Connects to a Vlog server socket. 'path' should be the name of a Vlog
* server socket. If it does not start with '/', it will be prefixed with
- * ovs_rundir (e.g. /var/run).
+ * ovs_rundir (e.g. /var/run/openvswitch).
*
* Returns 0 if successful, otherwise a positive errno value. If successful,
* sets '*clientp' to the new unixctl_client, otherwise to NULL. */