X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Funixctl.c;h=6abb3328dda59ee50128ac56530db83ddacdad13;hb=ec61a01cd8ed73b13ffe042ddff4baf41f6b63e7;hp=88fe60352453dc4b9531302b13628e5a14f6e9a0;hpb=daf03c53ee14a0227b43330be2e638b9ad9ce022;p=openvswitch diff --git a/lib/unixctl.c b/lib/unixctl.c index 88fe6035..6abb3328 100644 --- a/lib/unixctl.c +++ b/lib/unixctl.c @@ -34,14 +34,15 @@ #include "poll-loop.h" #include "shash.h" #include "socket-util.h" +#include "svec.h" #include "util.h" +#include "vlog.h" #ifndef SCM_CREDENTIALS #include #endif -#define THIS_MODULE VLM_unixctl -#include "vlog.h" +VLOG_DEFINE_THIS_MODULE(unixctl); struct unixctl_command { unixctl_cb_func *cb; @@ -82,11 +83,23 @@ unixctl_help(struct unixctl_conn *conn, const char *args OVS_UNUSED, { 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); } @@ -398,8 +411,7 @@ unixctl_server_run(struct unixctl_server *server) new_connection(server, fd); } - LIST_FOR_EACH_SAFE (conn, next, - struct unixctl_conn, node, &server->conns) { + LIST_FOR_EACH_SAFE (conn, next, node, &server->conns) { int error = run_connection(conn); if (error && error != EAGAIN) { kill_connection(conn); @@ -413,7 +425,7 @@ unixctl_server_wait(struct unixctl_server *server) struct unixctl_conn *conn; poll_fd_wait(server->fd, POLLIN); - LIST_FOR_EACH (conn, struct unixctl_conn, node, &server->conns) { + LIST_FOR_EACH (conn, node, &server->conns) { if (conn->state == S_RECV) { poll_fd_wait(conn->fd, POLLIN); } else if (conn->state == S_SEND) { @@ -429,8 +441,7 @@ unixctl_server_destroy(struct unixctl_server *server) if (server) { struct unixctl_conn *conn, *next; - LIST_FOR_EACH_SAFE (conn, next, - struct unixctl_conn, node, &server->conns) { + LIST_FOR_EACH_SAFE (conn, next, node, &server->conns) { kill_connection(conn); } @@ -443,7 +454,7 @@ unixctl_server_destroy(struct unixctl_server *server) /* 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. */