dpctl: add ovs-appctl dpctl/* commands to talk to dpif-netdev
authorDaniele Di Proietto <ddiproietto@vmware.com>
Fri, 18 Jul 2014 00:26:00 +0000 (17:26 -0700)
committerBen Pfaff <blp@nicira.com>
Mon, 4 Aug 2014 21:32:13 +0000 (14:32 -0700)
commitfceef2095222ef96544b263862dca0185178f960
tree1c615be8b6623e44c11c3fae3e29f58ae9eb7192
parentdc71c5dd04553ce96bd38b5d2c669ed48c52ed93
dpctl: add ovs-appctl dpctl/* commands to talk to dpif-netdev

This commit introduces multiple appctl commands (dpctl/*)

They are needed to interact with userspace datapaths (dpif-netdev), because the
ovs-dpctl command runs in a separate process and cannot see the userspace
datapaths inside vswitchd.

This change moves most of the code of utilities/ovs-dpctl.c in lib/dpctl.c.

Both the ovs-dpctl command and the ovs-appctl dpctl/* commands make calls to
lib/dpctl.c functions, to interact with datapaths.

The code from utilities/ovs-dpctl.c has been moved to lib/dpctl.c and has been
changed for different reasons:
   - An exit() call in the old code made perfectly sense. Now (since the code
     can be run inside vswitchd) it would terminate the daemon. Same reasoning
     can be applied to ovs_fatal_*() calls.
   - The lib/dpctl.c code _should_ not leak memory.
   - All the print* have been replaced with a function pointer provided by the
     caller, since this code can be run in the ovs-dpctl process (in which
     case we need to print to stdout) or in response to a unixctl request (and
     in this case we need to send everything through a socket, using JSON
     encapsulation).

The syntax is
   ovs-appctl dpctl/(COMMAND) [OPTIONS] [PARAMETERS]
while the ovs-dpctl syntax (which _should_ remain the same after this change)
is
   ovs-dpctl [OPTIONS] (COMMAND) [PARAMETERS]

Signed-off-by: Daniele Di Proietto <ddiproietto@vmware.com>
[blp@nicira.com made stylistic and documentation changes]
Signed-off-by: Ben Pfaff <blp@nicira.com>
NEWS
lib/automake.mk
lib/dpctl.c [new file with mode: 0644]
lib/dpctl.h [new file with mode: 0644]
lib/dpctl.man [new file with mode: 0644]
lib/dpif.c
manpages.mk
ofproto/ofproto-dpif-unixctl.man
utilities/ovs-dpctl.8.in
utilities/ovs-dpctl.c
vswitchd/ovs-vswitchd.8.in