mirror of
https://github.com/openvswitch/ovs
synced 2025-08-22 01:51:26 +00:00
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>
This commit is contained in:
parent
dc71c5dd04
commit
fceef20952
4
NEWS
4
NEWS
@ -8,6 +8,10 @@ Post-v2.3.0
|
||||
release. The protocol is documented at
|
||||
http://tools.ietf.org/html/draft-gross-geneve-00
|
||||
- The OVS database now reports controller rate limiting statistics.
|
||||
- ovs-dpctl functionality is now available for datapaths integrated
|
||||
into ovs-vswitchd, via ovs-appctl. Some existing ovs-appctl
|
||||
commands are now redundant and will be removed in a future
|
||||
release. See ovs-vswitchd(8) for details.
|
||||
- OpenFlow:
|
||||
* OpenFlow 1.5 (draft) extended registers are now supported.
|
||||
|
||||
|
@ -55,6 +55,8 @@ lib_libopenvswitch_la_SOURCES = \
|
||||
lib/dummy.h \
|
||||
lib/dhparams.h \
|
||||
lib/dirs.h \
|
||||
lib/dpctl.c \
|
||||
lib/dpctl.h \
|
||||
lib/dpif-netdev.c \
|
||||
lib/dpif-netdev.h \
|
||||
lib/dpif-provider.h \
|
||||
@ -373,6 +375,7 @@ MAN_FRAGMENTS += \
|
||||
lib/coverage-unixctl.man \
|
||||
lib/daemon.man \
|
||||
lib/daemon-syn.man \
|
||||
lib/dpctl.man \
|
||||
lib/memory-unixctl.man \
|
||||
lib/ofp-version.man \
|
||||
lib/ovs.tmac \
|
||||
|
1422
lib/dpctl.c
Normal file
1422
lib/dpctl.c
Normal file
File diff suppressed because it is too large
Load Diff
52
lib/dpctl.h
Normal file
52
lib/dpctl.h
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright (c) 2014 Nicira, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
#ifndef DPCTL_H
|
||||
#define DPCTL_H 1
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "compiler.h"
|
||||
|
||||
struct dpctl_params {
|
||||
/* -s, --statistics: Print port/flow statistics? */
|
||||
bool print_statistics;
|
||||
|
||||
/* --clear: Reset existing statistics to zero when modifying a flow? */
|
||||
bool zero_statistics;
|
||||
|
||||
/* --may-create: Allow mod-flows command to create a new flow? */
|
||||
bool may_create;
|
||||
|
||||
/* -m, --more: Increase output verbosity. */
|
||||
int verbosity;
|
||||
|
||||
/* Callback for printing. This function is called from dpctl_run_command()
|
||||
* to output data. The 'aux' parameter is set to the 'aux'
|
||||
* member. The 'error' parameter is true if 'string' is an error
|
||||
* message, false otherwise */
|
||||
void (*output)(void *aux, bool error, const char *string);
|
||||
void *aux;
|
||||
|
||||
/* 'usage' (if != NULL) gets called for the "help" command. */
|
||||
void (*usage)(void *aux);
|
||||
};
|
||||
|
||||
int dpctl_run_command(int argc, const char *argv[],
|
||||
struct dpctl_params *dpctl_p);
|
||||
|
||||
void dpctl_unixctl_register(void);
|
||||
|
||||
#endif /* dpctl.h */
|
147
lib/dpctl.man
Normal file
147
lib/dpctl.man
Normal file
@ -0,0 +1,147 @@
|
||||
.TP
|
||||
\*(DX\fBadd\-dp \fIdp\fR [\fInetdev\fR[\fB,\fIoption\fR]...]
|
||||
Creates datapath \fIdp\fR, with a local port also named \fIdp\fR.
|
||||
This will fail if a network device \fIdp\fR already exists.
|
||||
.IP
|
||||
If \fInetdev\fRs are specified, \fB\*(PN\fR adds them to the
|
||||
new datapath, just as if \fBadd\-if\fR was specified.
|
||||
.
|
||||
.TP
|
||||
\*(DX\fBdel\-dp \fIdp\fR
|
||||
Deletes datapath \fIdp\fR. If \fIdp\fR is associated with any network
|
||||
devices, they are automatically removed.
|
||||
.
|
||||
.TP
|
||||
\*(DX\fBadd\-if \fIdp netdev\fR[\fB,\fIoption\fR]...
|
||||
Adds each \fInetdev\fR to the set of network devices datapath
|
||||
\fIdp\fR monitors, where \fIdp\fR is the name of an existing
|
||||
datapath, and \fInetdev\fR is the name of one of the host's
|
||||
network devices, e.g. \fBeth0\fR. Once a network device has been added
|
||||
to a datapath, the datapath has complete ownership of the network device's
|
||||
traffic and the network device appears silent to the rest of the
|
||||
system.
|
||||
.IP
|
||||
A \fInetdev\fR may be followed by a comma-separated list of options.
|
||||
The following options are currently supported:
|
||||
.
|
||||
.RS
|
||||
.IP "\fBtype=\fItype\fR"
|
||||
Specifies the type of port to add. The default type is \fBsystem\fR.
|
||||
.IP "\fBport_no=\fIport\fR"
|
||||
Requests a specific port number within the datapath. If this option is
|
||||
not specified then one will be automatically assigned.
|
||||
.IP "\fIkey\fB=\fIvalue\fR"
|
||||
Adds an arbitrary key-value option to the port's configuration.
|
||||
.RE
|
||||
.IP
|
||||
\fBovs\-vswitchd.conf.db\fR(5) documents the available port types and
|
||||
options.
|
||||
.
|
||||
.IP "\*(DX\fBset\-if \fIdp port\fR[\fB,\fIoption\fR]..."
|
||||
Reconfigures each \fIport\fR in \fIdp\fR as specified. An
|
||||
\fIoption\fR of the form \fIkey\fB=\fIvalue\fR adds the specified
|
||||
key-value option to the port or overrides an existing key's value. An
|
||||
\fIoption\fR of the form \fIkey\fB=\fR, that is, without a value,
|
||||
deletes the key-value named \fIkey\fR. The type and port number of a
|
||||
port cannot be changed, so \fBtype\fR and \fBport_no\fR are only allowed if
|
||||
they match the existing configuration.
|
||||
.TP
|
||||
\*(DX\fBdel\-if \fIdp netdev\fR...
|
||||
Removes each \fInetdev\fR from the list of network devices datapath
|
||||
\fIdp\fR monitors.
|
||||
.
|
||||
.TP
|
||||
\*(DX\fBdump\-dps\fR
|
||||
Prints the name of each configured datapath on a separate line.
|
||||
.
|
||||
.TP
|
||||
.DO "[\fB\-s\fR | \fB\-\-statistics\fR]" "\*(DX\fBshow" "\fR[\fIdp\fR...]"
|
||||
Prints a summary of configured datapaths, including their datapath
|
||||
numbers and a list of ports connected to each datapath. (The local
|
||||
port is identified as port 0.) If \fB\-s\fR or \fB\-\-statistics\fR
|
||||
is specified, then packet and byte counters are also printed for each
|
||||
port.
|
||||
.IP
|
||||
The datapath numbers consists of flow stats and mega flow mask stats.
|
||||
.IP
|
||||
The "lookups" row displays three stats related to flow lookup triggered
|
||||
by processing incoming packets in the datapath. "hit" displays number
|
||||
of packets matches existing flows. "missed" displays the number of
|
||||
packets not matching any existing flow and require user space processing.
|
||||
"lost" displays number of packets destined for user space process but
|
||||
subsequently dropped before reaching userspace. The sum of "hit" and "miss"
|
||||
equals to the total number of packets datapath processed.
|
||||
.IP
|
||||
The "flows" row displays the number of flows in datapath.
|
||||
.IP
|
||||
The "masks" row displays the mega flow mask stats. This row is omitted
|
||||
for datapath not implementing mega flow. "hit" displays the total number
|
||||
of masks visited for matching incoming packets. "total" displays number of
|
||||
masks in the datapath. "hit/pkt" displays the average number of masks
|
||||
visited per packet; the ratio between "hit" and total number of
|
||||
packets processed by the datapath".
|
||||
.IP
|
||||
If one or more datapaths are specified, information on only those
|
||||
datapaths are displayed. Otherwise, \fB\*(PN\fR displays information
|
||||
about all configured datapaths.
|
||||
.SS "DATAPATH FLOW TABLE DEBUGGING COMMANDS"
|
||||
The following commands are primarily useful for debugging Open
|
||||
vSwitch. The flow table entries (both matches and actions) that they
|
||||
work with are not OpenFlow flow entries. Instead, they are different
|
||||
and considerably simpler flows maintained by the Open vSwitch kernel
|
||||
module. Use \fBovs\-ofctl\fR(8), instead, to work with OpenFlow flow
|
||||
entries.
|
||||
.
|
||||
.PP
|
||||
The \fIdp\fR argument to each of these commands is optional when
|
||||
exactly one datapath exists, in which case that datapath is the
|
||||
default. When multiple datapaths exist, then a datapath name is
|
||||
required.
|
||||
.
|
||||
.TP
|
||||
.DO "[\fB\-m \fR| \fB\-\-more\fR]" \*(DX\fBdump\-flows\fR "[\fIdp\fR] [\fBfilter=\fIfilter\fR]"
|
||||
Prints to the console all flow entries in datapath \fIdp\fR's flow
|
||||
table. Without \fB\-m\fR or \fB\-\-more\fR, output omits match fields
|
||||
that a flow wildcards entirely; with \fB\-m\fR or \fB\-\-more\fR,
|
||||
output includes all wildcarded fields.
|
||||
.IP
|
||||
If \fBfilter=\fIfilter\fR is specified, only displays the flows
|
||||
that match the \fIfilter\fR. \fIfilter\fR is a flow in the form similiar
|
||||
to that accepted by \fBovs\-ofctl\fR(8)'s \fBadd\-flow\fR command. (This is
|
||||
not an OpenFlow flow: besides other differences, it never contains wildcards.)
|
||||
The \fIfilter\fR is also useful to match wildcarded fields in the datapath
|
||||
flow. As an example, \fBfilter='tcp,tp_src=100'\fR will match the
|
||||
datapath flow containing '\fBtcp(src=80/0xff00,dst=8080/0xff)\fR'.
|
||||
.
|
||||
.IP "\*(DX\fBadd\-flow\fR [\fIdp\fR] \fIflow actions\fR"
|
||||
.TP
|
||||
.DO "[\fB\-\-clear\fR] [\fB\-\-may-create\fR] [\fB\-s\fR | \fB\-\-statistics\fR]" "\*(DX\fBmod\-flow\fR" "[\fIdp\fR] \fIflow actions\fR"
|
||||
Adds or modifies a flow in \fIdp\fR's flow table that, when a packet
|
||||
matching \fIflow\fR arrives, causes \fIactions\fR to be executed.
|
||||
.IP
|
||||
The \fBadd\-flow\fR command succeeds only if \fIflow\fR does not
|
||||
already exist in \fIdp\fR. Contrariwise, \fBmod\-flow\fR without
|
||||
\fB\-\-may\-create\fR only modifies the actions for an existing flow.
|
||||
With \fB\-\-may\-create\fR, \fBmod\-flow\fR will add a new flow or
|
||||
modify an existing one.
|
||||
.IP
|
||||
If \fB\-s\fR or \fB\-\-statistics\fR is specified, then
|
||||
\fBmod\-flows\fR prints the modified flow's statistics. A flow's
|
||||
statistics are the number of packets and bytes that have passed
|
||||
through the flow, the elapsed time since the flow last processed a
|
||||
packet (if ever), and (for TCP flows) the union of the TCP flags
|
||||
processed through the flow.
|
||||
.IP
|
||||
With \fB\-\-clear\fR, \fBmod\-flows\fR zeros out the flow's
|
||||
statistics. The statistics printed if \fB\-s\fR or
|
||||
\fB\-\-statistics\fR is also specified are those from just before
|
||||
clearing the statistics.
|
||||
.
|
||||
.TP
|
||||
.DO "[\fB\-s\fR | \fB\-\-statistics\fR]" "\*(DX\fBdel\-flow\fR" "[\fIdp\fR] \fIflow\fR"
|
||||
Deletes the flow from \fIdp\fR's flow table that matches \fIflow\fR.
|
||||
If \fB\-s\fR or \fB\-\-statistics\fR is specified, then
|
||||
\fBmod\-flows\fR prints the deleted flow's statistics.
|
||||
.
|
||||
.IP "\*(DX\fBdel\-flows\fR [\fIdp\fR]"
|
||||
Deletes all flow entries from datapath \fIdp\fR's flow table.
|
@ -24,6 +24,7 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "coverage.h"
|
||||
#include "dpctl.h"
|
||||
#include "dynamic-string.h"
|
||||
#include "flow.h"
|
||||
#include "netdev.h"
|
||||
@ -109,6 +110,7 @@ dp_initialize(void)
|
||||
for (i = 0; i < ARRAY_SIZE(base_dpif_classes); i++) {
|
||||
dp_register_provider(base_dpif_classes[i]);
|
||||
}
|
||||
dpctl_unixctl_register();
|
||||
ovsthread_once_done(&once);
|
||||
}
|
||||
}
|
||||
|
@ -127,9 +127,11 @@ utilities/ovs-dpctl-top.8.in:
|
||||
utilities/ovs-dpctl.8: \
|
||||
utilities/ovs-dpctl.8.in \
|
||||
lib/common.man \
|
||||
lib/dpctl.man \
|
||||
lib/vlog.man
|
||||
utilities/ovs-dpctl.8.in:
|
||||
lib/common.man:
|
||||
lib/dpctl.man:
|
||||
lib/vlog.man:
|
||||
|
||||
utilities/ovs-l3ping.8: \
|
||||
@ -239,6 +241,7 @@ vswitchd/ovs-vswitchd.8: \
|
||||
lib/common.man \
|
||||
lib/coverage-unixctl.man \
|
||||
lib/daemon.man \
|
||||
lib/dpctl.man \
|
||||
lib/memory-unixctl.man \
|
||||
lib/service.man \
|
||||
lib/ssl-bootstrap.man \
|
||||
@ -253,6 +256,7 @@ vswitchd/ovs-vswitchd.8.in:
|
||||
lib/common.man:
|
||||
lib/coverage-unixctl.man:
|
||||
lib/daemon.man:
|
||||
lib/dpctl.man:
|
||||
lib/memory-unixctl.man:
|
||||
lib/service.man:
|
||||
lib/ssl-bootstrap.man:
|
||||
|
@ -1,6 +1,9 @@
|
||||
.SS "DATAPATH COMMANDS"
|
||||
These commands manage logical datapaths. They are are similar to the
|
||||
equivalent \fBovs\-dpctl\fR commands.
|
||||
.SS "DATAPATH DEBUGGING COMMANDS"
|
||||
These commands query and modify datapaths. They are are similar to
|
||||
\fBovs\-dpctl\fR(8) commands. \fBdpif/show\fR has the additional
|
||||
functionality, beyond \fBdpctl/show\fR of printing OpenFlow port
|
||||
numbers. The other commands are redundant and will be removed in a
|
||||
future release.
|
||||
.
|
||||
.IP "\fBdpif/dump\-dps\fR"
|
||||
Prints the name of each configured datapath on a separate line.
|
||||
|
@ -37,150 +37,11 @@ default provider \fBsystem\fR is assumed.
|
||||
.PP
|
||||
The following commands manage datapaths.
|
||||
.
|
||||
.TP
|
||||
\fBadd\-dp \fIdp\fR [\fInetdev\fR[\fB,\fIoption\fR]...]
|
||||
Creates datapath \fIdp\fR, with a local port also named \fIdp\fR.
|
||||
This will fail if a network device \fIdp\fR already exists.
|
||||
.IP
|
||||
If \fInetdev\fRs are specified, \fBovs\-dpctl\fR adds them to the
|
||||
new datapath, just as if \fBadd\-if\fR was specified.
|
||||
.
|
||||
.TP
|
||||
\fBdel\-dp \fIdp\fR
|
||||
Deletes datapath \fIdp\fR. If \fIdp\fR is associated with any network
|
||||
devices, they are automatically removed.
|
||||
.
|
||||
.TP
|
||||
\fBadd\-if \fIdp netdev\fR[\fB,\fIoption\fR]...
|
||||
Adds each \fInetdev\fR to the set of network devices datapath
|
||||
\fIdp\fR monitors, where \fIdp\fR is the name of an existing
|
||||
datapath, and \fInetdev\fR is the name of one of the host's
|
||||
network devices, e.g. \fBeth0\fR. Once a network device has been added
|
||||
to a datapath, the datapath has complete ownership of the network device's
|
||||
traffic and the network device appears silent to the rest of the
|
||||
system.
|
||||
.IP
|
||||
A \fInetdev\fR may be followed by a comma-separated list of options.
|
||||
The following options are currently supported:
|
||||
.
|
||||
.RS
|
||||
.IP "\fBtype=\fItype\fR"
|
||||
Specifies the type of port to add. The default type is \fBsystem\fR.
|
||||
.IP "\fBport_no=\fIport\fR"
|
||||
Requests a specific port number within the datapath. If this option is
|
||||
not specified then one will be automatically assigned.
|
||||
.IP "\fIkey\fB=\fIvalue\fR"
|
||||
Adds an arbitrary key-value option to the port's configuration.
|
||||
.RE
|
||||
.IP
|
||||
\fBovs\-vswitchd.conf.db\fR(5) documents the available port types and
|
||||
options.
|
||||
.
|
||||
.IP "\fBset\-if \fIdp port\fR[\fB,\fIoption\fR]..."
|
||||
Reconfigures each \fIport\fR in \fIdp\fR as specified. An
|
||||
\fIoption\fR of the form \fIkey\fB=\fIvalue\fR adds the specified
|
||||
key-value option to the port or overrides an existing key's value. An
|
||||
\fIoption\fR of the form \fIkey\fB=\fR, that is, without a value,
|
||||
deletes the key-value named \fIkey\fR. The type and port number of a
|
||||
port cannot be changed, so \fBtype\fR and \fBport_no\fR are only allowed if
|
||||
they match the existing configuration.
|
||||
.TP
|
||||
\fBdel\-if \fIdp netdev\fR...
|
||||
Removes each \fInetdev\fR from the list of network devices datapath
|
||||
\fIdp\fR monitors.
|
||||
.
|
||||
.TP
|
||||
\fBdump\-dps\fR
|
||||
Prints the name of each configured datapath on a separate line.
|
||||
.
|
||||
.TP
|
||||
[\fB\-s\fR | \fB\-\-statistics\fR] \fBshow \fR[\fIdp\fR...]
|
||||
Prints a summary of configured datapaths, including their datapath
|
||||
numbers and a list of ports connected to each datapath. (The local
|
||||
port is identified as port 0.) If \fB\-s\fR or \fB\-\-statistics\fR
|
||||
is specified, then packet and byte counters are also printed for each
|
||||
port.
|
||||
.IP
|
||||
The datapath numbers consists of flow stats and mega flow mask stats.
|
||||
.IP
|
||||
The "lookups" row displays three stats related to flow lookup triggered
|
||||
by processing incoming packets in the datapath. "hit" displays number
|
||||
of packets matches existing flows. "missed" displays the number of
|
||||
packets not matching any existing flow and require user space processing.
|
||||
"lost" displays number of packets destined for user space process but
|
||||
subsequently dropped before reaching userspace. The sum of "hit" and "miss"
|
||||
equals to the total number of packets datapath processed.
|
||||
.IP
|
||||
The "flows" row displays the number of flows in datapath.
|
||||
.IP
|
||||
The "masks" row displays the mega flow mask stats. This row is omitted
|
||||
for datapath not implementing mega flow. "hit" displays the total number
|
||||
of masks visited for matching incoming packets. "total" displays number of
|
||||
masks in the datapath. "hit/pkt" displays the average number of masks
|
||||
visited per packet; the ratio between "hit" and total number of
|
||||
packets processed by the datapath".
|
||||
.IP
|
||||
If one or more datapaths are specified, information on only those
|
||||
datapaths are displayed. Otherwise, \fBovs\-dpctl\fR displays information
|
||||
about all configured datapaths.
|
||||
.SS "DEBUGGING COMMANDS"
|
||||
The following commands are primarily useful for debugging Open
|
||||
vSwitch. The flow table entries (both matches and actions) that they
|
||||
work with are not OpenFlow flow entries. Instead, they are different
|
||||
and considerably simpler flows maintained by the Open vSwitch kernel
|
||||
module. Use \fBovs\-ofctl\fR(8), instead, to work with OpenFlow flow
|
||||
entries.
|
||||
.
|
||||
.PP
|
||||
The \fIdp\fR argument to each of these commands is optional when
|
||||
exactly one datapath exists, in which case that datapath is the
|
||||
default. When multiple datapaths exist, then a datapath name is
|
||||
required.
|
||||
.
|
||||
.IP "[\fB\-m \fR| \fB\-\-more\fR] \fBdump\-flows\fR [\fIdp\fR] [\fBfilter=\fIfilter\fR]"
|
||||
Prints to the console all flow entries in datapath \fIdp\fR's flow
|
||||
table. Without \fB\-m\fR or \fB\-\-more\fR, output omits match fields
|
||||
that a flow wildcards entirely; with \fB\-m\fR or \fB\-\-more\fR,
|
||||
output includes all wildcarded fields.
|
||||
.IP
|
||||
If \fBfilter=\fIfilter\fR is specified, only displays the flows
|
||||
that match the \fIfilter\fR. \fIfilter\fR is a flow in the form similiar
|
||||
to that accepted by \fBovs\-ofctl\fR(8)'s \fBadd\-flow\fR command. (This is
|
||||
not an OpenFlow flow: besides other differences, it never contains wildcards.)
|
||||
The \fIfilter\fR is also useful to match wildcarded fields in the datapath
|
||||
flow. As an example, \fBfilter='tcp,tp_src=100'\fR will match the
|
||||
datapath flow containing '\fBtcp(src=80/0xff00,dst=8080/0xff)\fR'.
|
||||
.
|
||||
.IP "\fBadd\-flow\fR [\fIdp\fR] \fIflow actions\fR"
|
||||
.IQ "[\fB\-\-clear\fR] [\fB\-\-may-create\fR] [\fB\-s\fR | \fB\-\-statistics\fR] \fBmod\-flow\fR [\fIdp\fR] \fIflow actions\fR"
|
||||
Adds or modifies a flow in \fIdp\fR's flow table that, when a packet
|
||||
matching \fIflow\fR arrives, causes \fIactions\fR to be executed.
|
||||
.IP
|
||||
The \fBadd\-flow\fR command succeeds only if \fIflow\fR does not
|
||||
already exist in \fIdp\fR. Contrariwise, \fBmod\-flow\fR without
|
||||
\fB\-\-may\-create\fR only modifies the actions for an existing flow.
|
||||
With \fB\-\-may\-create\fR, \fBmod\-flow\fR will add a new flow or
|
||||
modify an existing one.
|
||||
.IP
|
||||
If \fB\-s\fR or \fB\-\-statistics\fR is specified, then
|
||||
\fBmod\-flows\fR prints the modified flow's statistics. A flow's
|
||||
statistics are the number of packets and bytes that have passed
|
||||
through the flow, the elapsed time since the flow last processed a
|
||||
packet (if ever), and (for TCP flows) the union of the TCP flags
|
||||
processed through the flow.
|
||||
.IP
|
||||
With \fB\-\-clear\fR, \fBmod\-flows\fR zeros out the flow's
|
||||
statistics. The statistics printed if \fB\-s\fR or
|
||||
\fB\-\-statistics\fR is also specified are those from just before
|
||||
clearing the statistics.
|
||||
.
|
||||
.IP "[\fB\-s\fR | \fB\-\-statistics\fR] \fBdel\-flow\fR [\fIdp\fR] \fIflow\fR"
|
||||
Deletes the flow from \fIdp\fR's flow table that matches \fIflow\fR.
|
||||
If \fB\-s\fR or \fB\-\-statistics\fR is specified, then
|
||||
\fBmod\-flows\fR prints the deleted flow's statistics.
|
||||
.
|
||||
.IP "\fBdel\-flows\fR [\fIdp\fR]"
|
||||
Deletes all flow entries from datapath \fIdp\fR's flow table.
|
||||
.ds DX
|
||||
.de DO
|
||||
\\$1 \\$2 \\$3
|
||||
..
|
||||
.so lib/dpctl.man
|
||||
.
|
||||
.SH OPTIONS
|
||||
.IP "\fB\-s\fR"
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -216,6 +216,21 @@ whether it is attached or detached, port id and priority, actor
|
||||
information, and partner information. If \fIport\fR is not specified,
|
||||
then displays detailed information about all interfaces with CFM
|
||||
enabled.
|
||||
.SS "DPCTL DATAPATH DEBUGGING COMMANDS"
|
||||
The primary way to configure \fBovs\-vswitchd\fR is through the Open
|
||||
vSwitch database, e.g. using \fBovs\-vsctl\fR(8). These commands
|
||||
provide a debugging interface for managing datapaths. They implement
|
||||
the same features (and syntax) as \fBovs\-dpctl\fR(8). Unlike
|
||||
\fBovs\-dpctl\fR(8), these commands work with datapaths that are
|
||||
integrated into \fBovs\-vswitchd\fR (e.g. the \fBnetdev\fR datapath
|
||||
type).
|
||||
.PP
|
||||
.
|
||||
.ds DX \fBdpctl/\fR
|
||||
.de DO
|
||||
\\$2 \\$1 \\$3
|
||||
..
|
||||
.so lib/dpctl.man
|
||||
.
|
||||
.so ofproto/ofproto-dpif-unixctl.man
|
||||
.so ofproto/ofproto-unixctl.man
|
||||
|
Loading…
x
Reference in New Issue
Block a user