[ovs-dev] [PATCH v2] ovn: Add lflow-list to ovn-sbctl.

Russell Bryant rbryant at redhat.com
Wed Aug 12 23:15:33 UTC 2015


On 08/12/2015 06:51 PM, Alex Wang wrote:
> Thx a lot for the refinement,
> 
> Minor comments below,
> 
> 
> On Wed, Aug 12, 2015 at 3:04 PM, Russell Bryant <rbryant at redhat.com
> <mailto:rbryant at redhat.com>> wrote:
> 
>     I frequently view the contents of the Logical_Flow table while working
>     on OVN.  Add a command that can output the contents of this table in a
>     sorted way that makes it easier to read through.  It's sorted by
>     logical datapath, pipeline, table id, priority, and match.
> 
>     Signed-off-by: Russell Bryant <rbryant at redhat.com
>     <mailto:rbryant at redhat.com>>
>     ---
>      ovn/utilities/ovn-sbctl.8.in <http://ovn-sbctl.8.in> |   6 +++
>      ovn/utilities/ovn-sbctl.c    | 116
>     +++++++++++++++++++++++++++++++++++++++++++
>      2 files changed, 122 insertions(+)
> 
> 
>     v1->v2
>      - Address Alex's review feedback
>      - Add a friendly "dump-flows" alias
> 
>     Example output:
> 
>     $ ./ovn-2port-setup.sh
>     + ovn-nbctl lswitch-add sw0
>     + ovn-nbctl lport-add sw0 sw0-port1
>     + ovn-nbctl lport-add sw0 sw0-port2
>     + ovn-nbctl lport-set-macs sw0-port1 00:00:00:00:00:01
>     + ovn-nbctl lport-set-macs sw0-port2 00:00:00:00:00:02
>     + ovn-nbctl lport-set-port-security sw0-port1 00:00:00:00:00:01
>     + ovn-nbctl lport-set-port-security sw0-port2 00:00:00:00:00:02
>     + ovs-vsctl add-port br-int lport1 -- set Interface lport1
>     external_ids:iface-id=sw0-port1
>     + ovs-vsctl add-port br-int lport2 -- set Interface lport2
>     external_ids:iface-id=sw0-port2
>     $ ovn-sbctl lflow-list
>     Datapath: 0f9a9e4e-0ef0-4afb-bed4-09887387fd10  Pipeline: ingress
>       table_id=0, priority=100, match=(eth.src[40]), action=(drop;)
>       table_id=0, priority=100, match=(vlan.present), action=(drop;)
>       table_id=0, priority= 50, match=(inport == "sw0-port1" && eth.src
>     == {00:00:00:00:00:01}), action=(next;)
>       table_id=0, priority= 50, match=(inport == "sw0-port2" && eth.src
>     == {00:00:00:00:00:02}), action=(next;)
>       table_id=0, priority=  0, match=(1), action=(drop;)
>       table_id=1, priority=100, match=(eth.dst[40]), action=(outport =
>     "_MC_flood"; output;)
>       table_id=1, priority= 50, match=(eth.dst == 00:00:00:00:00:01),
>     action=(outport = "sw0-port1"; output;)
>       table_id=1, priority= 50, match=(eth.dst == 00:00:00:00:00:02),
>     action=(outport = "sw0-port2"; output;)
>     Datapath: 0f9a9e4e-0ef0-4afb-bed4-09887387fd10  Pipeline: egress
>       table_id=0, priority=  0, match=(1), action=(next;)
>       table_id=1, priority=100, match=(eth.dst[40]), action=(output;)
>       table_id=1, priority= 50, match=(outport == "sw0-port1" && eth.dst
>     == {00:00:00:00:00:01}), action=(output;)
>       table_id=1, priority= 50, match=(outport == "sw0-port2" && eth.dst
>     == {00:00:00:00:00:02}), action=(output;)
> 
> 
> 
>     diff --git a/ovn/utilities/ovn-sbctl.8.in <http://ovn-sbctl.8.in>
>     b/ovn/utilities/ovn-sbctl.8.in <http://ovn-sbctl.8.in>
>     index b5c796e..9f9168e 100644
>     --- a/ovn/utilities/ovn-sbctl.8.in <http://ovn-sbctl.8.in>
>     +++ b/ovn/utilities/ovn-sbctl.8.in <http://ovn-sbctl.8.in>
>     @@ -146,6 +146,12 @@ Without \fB\-\-if\-exists\fR, attempting to
>     unbind a logical port
>      that is not bound is an error.  With \fB\-\-if\-exists\fR, attempting
>      to unbind logical port that is not bound has no effect.
>      .
>     +.SS "Logical Flow Commands"
>     +.
>     +.IP "\fBlflow\-list\fR [\fIlogical\-datapath\fR]"
>     +List logical flows. If \fIlogical\-datapath\fR is specified, only
>     list flows for
>     +that logical datapath.
>     +.
>      .so lib/db-ctl-base.man
>      .SH "EXIT STATUS"
>      .IP "0"
>     diff --git a/ovn/utilities/ovn-sbctl.c b/ovn/utilities/ovn-sbctl.c
>     index cbde60a..5d988f5 100644
>     --- a/ovn/utilities/ovn-sbctl.c
>     +++ b/ovn/utilities/ovn-sbctl.c
>     @@ -300,6 +300,9 @@ Port binding commands:\n\
>        lport-bind LPORT CHASSIS    bind logical port LPORT to CHASSIS\n\
>        lport-unbind LPORT          reset the port binding of logical
>     port LPORT\n\
>      \n\
>     +Logical flow commands:\n\
>     +  lflow-list [DATAPATH]       List logical flows for all or a
>     single datapath\n\
>     +\n\
> 
> 
> 
> Could we also add usage for the alias 'dump-flows'

I excluded on purpose because I thought we might want to keep it hidden.
 It doesn't matter to me though.  I'll add it.

-- 
Russell Bryant



More information about the dev mailing list