Skip to content
  • Daniele Di Proietto's avatar
    dpctl: add ovs-appctl dpctl/* commands to talk to dpif-netdev · fceef209
    Daniele Di Proietto authored
    
    
    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: default avatarDaniele Di Proietto <ddiproietto@vmware.com>
    [blp@nicira.com made stylistic and documentation changes]
    Signed-off-by: default avatarBen Pfaff <blp@nicira.com>
    fceef209