sliver-openvswitch.git
10 years agoodp-util: Fix IPFIX breakage with old kernel modules.
Ben Pfaff [Mon, 7 Oct 2013 21:26:28 +0000 (14:26 -0700)]
odp-util: Fix IPFIX breakage with old kernel modules.

Before commit e995e3df57ea (Allow OVS_USERSPACE_ATTR_USERDATA to be
variable length.) userdata attributes in userspace actions were expected
to be exactly 64 bits long.  The kernel only actually enforced that they
were at least 64 bits long (the previously referenced commit's log message
contains misinformation on this account).

Initially this was no problem, because all of the userdata that userspace
actually used was exactly 8 bytes long.  Commit 29089a540c (Implement IPFIX
export), however, exposed a problem by reducing the length of userdata for
IPFIX support to just 4 bytes.  This meant that IPFIX no longer worked on
older datapaths, because the userdata was no longer at least 8 bytes long.

This commit fixes the problem by padding out userdata attributes less than
8 bytes long to 8 bytes.

CC: Romain Lenglet <rlenglet@vmware.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Romain Lenglet <rlenglet at vmware.com>
10 years agonetlink: New function nl_msg_put_unspec_zero().
Ben Pfaff [Mon, 7 Oct 2013 21:11:40 +0000 (14:11 -0700)]
netlink: New function nl_msg_put_unspec_zero().

This function already had a few potential users, which this commit
converts.  An upcoming commit adds more users.

Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoovs-ofctl: Improve manpage.
Ben Pfaff [Mon, 6 May 2013 17:20:27 +0000 (10:20 -0700)]
ovs-ofctl: Improve manpage.

Fixes misspelling of "OpenFlow".

Fixes the indentation of the paragraph beginning "Any \fIreason\fR...".

Changes "target" to "action" in the introduction of actions, which seems
like a better name.

Reorders action descriptions to group all the simple forms of output
together.

Consistently mentions that output actions don't output to the input port.

Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofp-actions: Switch away from odd use of "q" in "enqueue" action format.
Ben Pfaff [Mon, 6 May 2013 17:55:06 +0000 (10:55 -0700)]
ofp-actions: Switch away from odd use of "q" in "enqueue" action format.

The formatting of the "enqueue" action uses a "q" to separate the port
number from the queue number, as in "enqueue:123q456".  This is different
from every other action.  This commit improves the situation by:

    * Switching the formatting to use a colon (e.g. "enqueue:123:456"),
      which is a little less odd-looking but still accepted by older
      versions of Open vSwitch.

    * Improving the parser to accept "enqueue(123,456)" also.

Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto-dpif: New unixctl command ofproto/trace-packet-out.
Ben Pfaff [Mon, 11 Nov 2013 18:50:47 +0000 (10:50 -0800)]
ofproto-dpif: New unixctl command ofproto/trace-packet-out.

Feature #20543.
Requested-by: Ronghua Zhang <rzhang@vmware.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto-dpif: Improve help output for ofproto/trace.
Ben Pfaff [Wed, 30 Oct 2013 20:35:18 +0000 (13:35 -0700)]
ofproto-dpif: Improve help output for ofproto/trace.

Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto-dpif: Factor code out of ofproto_unixctl_trace().
Ben Pfaff [Mon, 11 Nov 2013 18:37:58 +0000 (10:37 -0800)]
ofproto-dpif: Factor code out of ofproto_unixctl_trace().

This new function will have an additional caller in an upcoming commit.

Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoovs-ofctl: Document a few Nicira extensions as standardized in OF1.1+.
Ben Pfaff [Sat, 14 Sep 2013 20:45:13 +0000 (13:45 -0700)]
ovs-ofctl: Document a few Nicira extensions as standardized in OF1.1+.

The update is incomplete, so document that also.

Reported-by: Stephen Finucane <stephen.finucane@intel.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto: Check ofproto_port_query_by_name() return value when adding port.
Ben Pfaff [Tue, 19 Mar 2013 20:30:33 +0000 (13:30 -0700)]
ofproto: Check ofproto_port_query_by_name() return value when adding port.

Otherwise, if the port add succeeds but the query that looks up the port
number fails, then ofproto_port_add() would return zero as the OpenFlow
port number and ignore the error.

Reported-by: Guolin Yang <gyang@vmware.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agocfm: Count flaps when logging is disabled
Joe Stringer [Wed, 6 Nov 2013 18:36:17 +0000 (10:36 -0800)]
cfm: Count flaps when logging is disabled

Previously, the flap count logic for CFM was dependent on the state of
the logging facility. This patch ensures flaps are always counted when
there is a transition between non-fault and fault (and vice versa).

Found by inspection.

Signed-off-by: Joe Stringer <joestringer@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agonetdev: Make naming more consistent
Joe Stringer [Fri, 8 Nov 2013 17:41:19 +0000 (09:41 -0800)]
netdev: Make naming more consistent

netdev-dummy and netdev-vport use the function name netdev_poll_notify()
for the same purpose as netdev-linux/bsd's netdev_*_changed(). This patch
changes the former two to be more consistent with the linux/bsd naming
scheme.

Signed-off-by: Joe Stringer <joestringer@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto: Limit OVS-assigned port numbers to 32767 and below.
Ben Pfaff [Thu, 7 Nov 2013 00:12:34 +0000 (16:12 -0800)]
ofproto: Limit OVS-assigned port numbers to 32767 and below.

A couple of controller vendors have mentioned to me that they would like to
have some part of the OpenFlow port number space reserved for the
controller to use.  This commit reserves 32768 and up (roughly the upper
half of the OF1.0 port range) to the controller.

Bug #18753.
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto-dpif: Disassociate datapath max_ports with openflow port numbers.
Gurucharan Shetty [Tue, 5 Nov 2013 18:39:47 +0000 (10:39 -0800)]
ofproto-dpif: Disassociate datapath max_ports with openflow port numbers.

With single datapath, multiple userspace bridges share the same datapath.
As such it does not look beneficial that we decide a valid open flow port
number based on the number of ports in the datapath specially now that
we have the ofport_request column in OVSDB.

This commit does not remove ofproto_init_max_ports() interface as defined
in ofproto-provider.h as there may be other implementations that still use it.
But ofproto-dpif should not need it.

Bug #20163.
Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
10 years agoovs-bugtool: Remove reference to an undefined variable.
Gurucharan Shetty [Tue, 5 Nov 2013 21:02:07 +0000 (13:02 -0800)]
ovs-bugtool: Remove reference to an undefined variable.

commit 1d5aaa61f (ovs-controller: Rename test-controller and do not
install or package.) removed a variable definition but not its use.
Fix it.

Bug #20901.
Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Joe Stringer <joestringer@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
10 years agoofp-util: Report OFPMMFC_BAD_FLAGS for bad band flags.
Ben Pfaff [Tue, 5 Nov 2013 06:36:28 +0000 (22:36 -0800)]
ofp-util: Report OFPMMFC_BAD_FLAGS for bad band flags.

It doesn't make sense to specify both kbps and pkt/s, because the two units
are mutually exclusive.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
10 years agoofp-util: Report OFPMMFC_BAD_COMMAND for bad meter mod commands.
Ben Pfaff [Tue, 5 Nov 2013 06:34:09 +0000 (22:34 -0800)]
ofp-util: Report OFPMMFC_BAD_COMMAND for bad meter mod commands.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
10 years agoofp-util: Report OFPMMFC_BAD_BAND for bad band type in meter mod decoding.
Ben Pfaff [Tue, 5 Nov 2013 06:32:58 +0000 (22:32 -0800)]
ofp-util: Report OFPMMFC_BAD_BAND for bad band type in meter mod decoding.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
10 years agoofp-actions: Allow meter actions in ofpacts_verify().
Ben Pfaff [Tue, 5 Nov 2013 06:24:28 +0000 (22:24 -0800)]
ofp-actions: Allow meter actions in ofpacts_verify().

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
10 years agoOPENFLOW-1.1+: Update item describing status of meters.
Ben Pfaff [Tue, 5 Nov 2013 06:37:48 +0000 (22:37 -0800)]
OPENFLOW-1.1+: Update item describing status of meters.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
10 years agoofpbuf: Allow whitespace other than spaces in hex data.
Ben Pfaff [Tue, 5 Nov 2013 06:37:23 +0000 (22:37 -0800)]
ofpbuf: Allow whitespace other than spaces in hex data.

It's easier to cut and paste lines of hexadecimal data into a command line
if you don't have to worry about new-lines appearing in the command.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
10 years agoofproto: report the correct set of actions for group features
Ben Pfaff [Tue, 5 Nov 2013 05:14:53 +0000 (21:14 -0800)]
ofproto: report the correct set of actions for group features

do not report OF1.1 bits (set_dl_src etc) as group features is OF1.2+.

LINC seems to use 1<<31 for experimenter action type but i failed to
find it in the spec.

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
[blp@nicira.com added a comment to ofp-util.h]
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agocfm: Add ovsdb column "cfm_flap_count".
alex wang [Tue, 22 Oct 2013 05:16:23 +0000 (05:16 +0000)]
cfm: Add ovsdb column "cfm_flap_count".

This commit adds a new ovsdb column "cfm_flap_count".  It counts the
number of cfm fault flaps since boot.

Signed-off-by: Alex Wang <alexw@nicira.com>
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
10 years agoOPENFLOW-1.1+: Groups are now supported.
Ben Pfaff [Mon, 4 Nov 2013 19:12:57 +0000 (11:12 -0800)]
OPENFLOW-1.1+: Groups are now supported.

CC: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Simon Horman <horms@verge.net.au>
10 years agodpif-netdev: Change a variable name.
Gurucharan Shetty [Tue, 29 Oct 2013 09:34:15 +0000 (02:34 -0700)]
dpif-netdev: Change a variable name.

'struct dp_netdev_flow' is currently being instantiated as 'flow'.
An upcoming commit introduces a classifier to dpif-netdev
which uses 'struct flow' at a few places and that can cause
confusion while reading code.

Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
10 years agoclassifier: Update thread safety notes.
Ben Pfaff [Wed, 25 Sep 2013 22:38:57 +0000 (15:38 -0700)]
classifier: Update thread safety notes.

Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agodaemon: Precisely document signals that cause the monitor to restart.
Ben Pfaff [Fri, 11 Oct 2013 23:52:50 +0000 (16:52 -0700)]
daemon: Precisely document signals that cause the monitor to restart.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Joe Stringer <joestringer@nicira.com>
10 years agoovs-controller: Rename test-controller and do not install or package.
Ben Pfaff [Fri, 11 Oct 2013 23:24:41 +0000 (16:24 -0700)]
ovs-controller: Rename test-controller and do not install or package.

Too many users have incorrectly assumed that ovs-controller is a necessary
or desirable part of an Open vSwitch deployment.  This commit should fix
the problem by renaming it test-controller and removing it from the
default install and from packaging.

Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agonetdev-linux: Skip miimon execution when disabled
Joe Stringer [Fri, 1 Nov 2013 23:34:29 +0000 (16:34 -0700)]
netdev-linux: Skip miimon execution when disabled

When dealing with a large number of ports, one of the performance
bottlenecks is that we loop through all netdevs in the main loop. Miimon
is a contributor to this, checking all devices even if it has never been
enabled.

This patch introduces a counter for the number of netdevs with miimon
configured. If this is 0, then we skip miimon_run() and miimon_wait().
In a test environment of 5000 internal ports and 50 tunnel ports with
bfd, this reduces CPU usage from about 50% to about 45%.

Signed-off-by: Joe Stringer <joestringer@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto-dpif: Support weight for select groups
Simon Horman [Wed, 30 Oct 2013 09:17:20 +0000 (18:17 +0900)]
ofproto-dpif: Support weight for select groups

Signed-off-by: Simon Horman <horms@verge.net.au>
[blp@nicira.com adjusted this for highest random weight scoring and
 updated the test]
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto-dpif: Implement translation of select groups.
Simon Horman [Wed, 30 Oct 2013 09:17:19 +0000 (18:17 +0900)]
ofproto-dpif: Implement translation of select groups.

Select bucket from those that are alive based on a hash of the destination
ethernet address of the packet.

Support for weights is proposed by a subsequent patch.

The selection is based on a hash of the destination ethernet
address of the flow. It should be possible to extend
this to cover a hash of user-specified elements of the flow.

Signed-off-by: Simon Horman <horms@verge.net.au>
[blp@nicira.com replaced bucket selection by "highest random weight"
 method]
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto-dpif: Translation of fast failover groups
Simon Horman [Wed, 30 Oct 2013 09:17:18 +0000 (18:17 +0900)]
ofproto-dpif: Translation of fast failover groups

Fast failover groups use the actions in
the first bucket that is alive.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto: Add test for flow mod with groups.
Simon Horman [Wed, 30 Oct 2013 09:17:17 +0000 (18:17 +0900)]
ofproto: Add test for flow mod with groups.

Test that flow mod with groups succeeds only if the group exists.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto: Add del groups test
Simon Horman [Wed, 30 Oct 2013 09:17:16 +0000 (18:17 +0900)]
ofproto: Add del groups test

Lightly exercise del-groups

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto: Add group desc and stats tests
Simon Horman [Wed, 30 Oct 2013 09:17:15 +0000 (18:17 +0900)]
ofproto: Add group desc and stats tests

Lightly exercise group desc and stats

Signed-off-by: Simon Horman <horms@verge.net.au>
[blp@nicira.com found that a new test segfaulted and folded in fixes]
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto-dpif: Translation of indirect and all groups
Simon Horman [Wed, 30 Oct 2013 09:17:14 +0000 (18:17 +0900)]
ofproto-dpif: Translation of indirect and all groups

Allow translation of indirect and all groups.  Also allow insertion of
indirect and all groups by changing the maximum permitted number in the
groups table from 0 to OFPG_MAX.

Implementation note:

After translating the actions for each bucket ctx->flow is reset to its
state prior to translation of the buckets actions. This is equivalent to
cloning the bucket before applying actions. This is my interpretation of the
OpenFlow 1.3.2 specification section 5.6.1 Group Types, which includes the
following text. I believe there is room for other interpretations.

* On all groups: "The packet is effectively cloned for each bucket; one
  packet is processed for each bucket of the group."
* On indirect groups: "This group type is effectively identical to an
  all group with one bucket."

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto: Break out resubmit resource checking
Simon Horman [Wed, 30 Oct 2013 09:17:13 +0000 (18:17 +0900)]
ofproto: Break out resubmit resource checking

Break out resubmit resource checking into a helper function
xlate_resubmit_resource_check() and use this new function.
This is to allow the check to be re-used by a subsequent patch.

Suggested-by: Ben Pfaff <blp@nicira.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto: Add enum ofp_group_capabilities
Simon Horman [Wed, 30 Oct 2013 09:17:12 +0000 (18:17 +0900)]
ofproto: Add enum ofp_group_capabilities

These values will be used by subsequent patches

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto: Advertise all supported OpenFlow actions in group features
Simon Horman [Wed, 30 Oct 2013 09:17:11 +0000 (18:17 +0900)]
ofproto: Advertise all supported OpenFlow actions in group features

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agonicira-ext: Update comment.
Ben Pfaff [Sat, 2 Nov 2013 18:36:50 +0000 (11:36 -0700)]
nicira-ext: Update comment.

The ARP headers have been acceptable as NXAST_REG_MOVE destinations since
commit f6c8a6b163 (Add software switch support for modifying ARP headers
in OpenFlow.)

Reported-by: Anupam Chanda <achanda@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Joe Stringer <joestringer@nicira.com>
10 years agoofproto-dpif-xlate: Handle oversized actions more gracefully.
Ben Pfaff [Sat, 2 Nov 2013 15:43:14 +0000 (08:43 -0700)]
ofproto-dpif-xlate: Handle oversized actions more gracefully.

If the datapath actions exceed the maximum size of a Netlink attribute
(about 64 kB), then previously we would assert-fail (before commit
542024c4c3d36 "ofproto-dpif-xlate: Suppress oversize datapath actions.")
or just drop all of them (after that commit).  This commit makes OVS cope
by slow-pathing the flow and executing all of its actions in userspace.

Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoFAQ: Elaborate further on how one drops packets with OpenFlow.
Ben Pfaff [Wed, 9 Oct 2013 22:22:15 +0000 (15:22 -0700)]
FAQ: Elaborate further on how one drops packets with OpenFlow.

Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agobfd: Improve log message.
Ben Pfaff [Mon, 30 Sep 2013 21:47:41 +0000 (14:47 -0700)]
bfd: Improve log message.

Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoflow: Fill in ->l7 in flow_compose().
Ben Pfaff [Mon, 30 Sep 2013 21:46:50 +0000 (14:46 -0700)]
flow: Fill in ->l7 in flow_compose().

flow_extract() fills in ->l7 but flow_compose() wasn't doing it, which
confused bfd_process_packet() when invoked via the ofproto/trace appctl
command.

Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto-dpif-upcall: Give each miss_handler thread a unique name.
Ben Pfaff [Sat, 2 Nov 2013 13:59:30 +0000 (06:59 -0700)]
ofproto-dpif-upcall: Give each miss_handler thread a unique name.

This may occasionally make debugging easier.

Suggested-by: Keith Amidon <keith@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
10 years agoutil: Allow set_subprogram_name() to take a printf() format string.
Ben Pfaff [Sat, 2 Nov 2013 13:55:40 +0000 (06:55 -0700)]
util: Allow set_subprogram_name() to take a printf() format string.

This will be convenient in an upcoming commit.

I had to add -Wno-format-zero-length to suppress a GCC warning about a
zero-length format string in this monitor_daemon() call:
    set_subprogram_name("");
I don't know what that warning is good for anyway, and I guess the Clang
developers don't either because Clang didn't warn.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
10 years agoofproto-provider: Fix typo in comment.
Ben Pfaff [Mon, 16 Sep 2013 16:43:15 +0000 (09:43 -0700)]
ofproto-provider: Fix typo in comment.

Reported-by: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto: Verify compatibility of liveness of groups with their type
Simon Horman [Wed, 30 Oct 2013 09:17:10 +0000 (18:17 +0900)]
ofproto: Verify compatibility of liveness of groups with their type

Require liveness for fast-failover groups as it is mandated by OpenFlow1.3.
Allow livness for select groups which is in keeping with OpenFlow1.3.
Disallow liveness it for other group types.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto-dpif: Implement group callbacks
Simon Horman [Wed, 30 Oct 2013 09:17:09 +0000 (18:17 +0900)]
ofproto-dpif: Implement group callbacks

This is a first step towards implementing the dpif side of groups.

In order to be useful the action translation code needs
to be taught about groups.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoAdd OF11 SET MPLS LABEL and SET MPLS TC actions.
Jarno Rajahalme [Thu, 24 Oct 2013 20:19:34 +0000 (13:19 -0700)]
Add OF11 SET MPLS LABEL and SET MPLS TC actions.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Reviewed-by: Simon Horman <horms@verge.net.au>
10 years agolib/ofp-actions: Warn on deprecated actions.
Jarno Rajahalme [Thu, 24 Oct 2013 20:19:33 +0000 (13:19 -0700)]
lib/ofp-actions: Warn on deprecated actions.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto: Centralize action checking, doing it at decode time.
Ben Pfaff [Sat, 2 Nov 2013 04:45:28 +0000 (21:45 -0700)]
ofproto: Centralize action checking, doing it at decode time.

Jarno pointed out that modify_flows__() didn't really need to check every
instance of the flow separately.  After some further investigation I
decided that this was even more of an improvement.

CC: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
10 years agoofp-util: Enforce OpenFlow 1.1+ table_id requirements in flow_mod messages.
Ben Pfaff [Sat, 2 Nov 2013 05:03:19 +0000 (22:03 -0700)]
ofp-util: Enforce OpenFlow 1.1+ table_id requirements in flow_mod messages.

Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofp-util: Move ofputil_check_output_port() to ofp-actions, rename.
Ben Pfaff [Wed, 30 Oct 2013 23:31:28 +0000 (16:31 -0700)]
ofp-util: Move ofputil_check_output_port() to ofp-actions, rename.

This function is related to actions to ofp-actions seems like a logical
place for it.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
10 years agoofp-actions: Send deprecated actions as set fields.
Jarno Rajahalme [Thu, 24 Oct 2013 20:19:32 +0000 (13:19 -0700)]
ofp-actions: Send deprecated actions as set fields.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofp-actions: Simplify interface and internal structure.
Jarno Rajahalme [Thu, 24 Oct 2013 20:19:31 +0000 (13:19 -0700)]
ofp-actions: Simplify interface and internal structure.

This makes later changes simpler.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofp-actions: Set-Field OF 1.0/1.1 compatibility.
Jarno Rajahalme [Thu, 24 Oct 2013 20:19:30 +0000 (13:19 -0700)]
ofp-actions: Set-Field OF 1.0/1.1 compatibility.

Output set field actions as standard OF1.0/1.1 set actions or to
reg_load instructions, when a compatible set action(s) do not exist.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoNative Set-Field action.
Jarno Rajahalme [Thu, 24 Oct 2013 20:19:29 +0000 (13:19 -0700)]
Native Set-Field action.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoovsdb-tool: replace tabs with spaces
Alexandru Copot [Fri, 1 Nov 2013 21:20:56 +0000 (23:20 +0200)]
ovsdb-tool: replace tabs with spaces

Signed-off-by: Alexandru Copot <alex.mihai.c@gmail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoOXM inspired match field names.
Jarno Rajahalme [Thu, 24 Oct 2013 20:19:28 +0000 (13:19 -0700)]
OXM inspired match field names.

Adds OXM inspired aliases for match fields that don't have them
already ("ip_proto", "ip_ecn", "ip_dscp", and "tunnel_id").

"ip_dscp" replaces the earlier undocumented "nw_tos_shifted",
and takes the DSCP value (0-63), which is then shifted
appropriately when applied to an IP packet.
The number of bits for this field is fixed from 8 to 6.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agometa-flow: Inline mf_from_id().
Jarno Rajahalme [Thu, 24 Oct 2013 20:19:27 +0000 (13:19 -0700)]
meta-flow: Inline mf_from_id().

mf_from_id accesses a static table, so the compiler should be able to
completely optimize it away.

Also use OVS_PACKED_ENUM to waste less space.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoOF 1.1 pop vlan compatibility.
Jarno Rajahalme [Thu, 24 Oct 2013 20:19:26 +0000 (13:19 -0700)]
OF 1.1 pop vlan compatibility.

Store the original action code with the strip vlan action,
so that it can be printed back properly.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto-dpif-xlate: Remove obsolete comment.
Ben Pfaff [Fri, 1 Nov 2013 21:08:45 +0000 (14:08 -0700)]
ofproto-dpif-xlate: Remove obsolete comment.

Nothing about the existing code in this function cares whether Goto-Table
is the last action.

Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoOF 1.1 set vlan vid/pcp compatibility.
Jarno Rajahalme [Thu, 24 Oct 2013 20:19:25 +0000 (13:19 -0700)]
OF 1.1 set vlan vid/pcp compatibility.

OpenFlow 1.1 set vlan actions only modify existing vlan
headers, while OF 1.0 actions push a new vlan header if one
does not exist already.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agovtep: add fault notifications to physical switch and ports
Bruce Davie [Fri, 1 Nov 2013 17:53:23 +0000 (10:53 -0700)]
vtep: add fault notifications to physical switch and ports

Add a "switch_fault" and "port_fault" column to the appropriate
tables in the VTEP schema.

Signed-off-by: Bruce Davie <bdavie@vmware.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoovsdb: Do not leak error in ovsdb_server_compact()
Thomas Graf [Fri, 1 Nov 2013 16:44:52 +0000 (17:44 +0100)]
ovsdb: Do not leak error in ovsdb_server_compact()

Signed-off-by: Thomas Graf <tgraf@redhat.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto: Calculate some group stats at ofproto layer
Simon Horman [Wed, 30 Oct 2013 09:17:08 +0000 (18:17 +0900)]
ofproto: Calculate some group stats at ofproto layer

It seems to make sense to set the reference count and number
of buckets at the protocol layer as it is known there.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto: Add group features test
Simon Horman [Wed, 30 Oct 2013 09:17:07 +0000 (18:17 +0900)]
ofproto: Add group features test

Lightly exercise group features

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto: Fail flow mod if it references a non-existent group
Simon Horman [Wed, 30 Oct 2013 09:17:06 +0000 (18:17 +0900)]
ofproto: Fail flow mod if it references a non-existent group

As per the OpenFlow1.3.2 specification, a flow mod should fail
if it references a non-existent group.

The change in this patch appears to be necessary to satisfy that
constraint. It is unclear to me whether or not is is sufficient.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto: Delete relevant flows on group del
Simon Horman [Wed, 30 Oct 2013 09:17:05 +0000 (18:17 +0900)]
ofproto: Delete relevant flows on group del

As pert the OpenFlow1.3.2 specification, delete flows that
reference a group when it is deleted.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agometa-flow: Make mf_parse() report bad masks as errors.
Ben Pfaff [Fri, 1 Nov 2013 00:18:38 +0000 (17:18 -0700)]
meta-flow: Make mf_parse() report bad masks as errors.

Reported-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoReturn no protocols if mask is supplied for unmaskable match
Simon Horman [Thu, 31 Oct 2013 04:00:02 +0000 (13:00 +0900)]
Return no protocols if mask is supplied for unmaskable match

Currently if a mask is supplied for an unmaskable match then NOT_REACHED()
is called. The effect of this for a user calling ovs-vsctl with a match
that includes a mask which is not permitted is to politely inform them of
the error of their ways by calling abort and segfaulting.

This patch takes an alternate approach to return no protocols which has the
has the effect when that ovs-vsctl is called with a match that includes a
mask which is not permitted an error message of the following form is
displayed.

ovs-ofctl: none of the usable flow formats (none) is among the allowed flow formats (OpenFlow10,NXM)

This patch also updates the ovs-ofctl test to test matches with masks
where possible.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoovs-ofctl: Add icmp_code test
Simon Horman [Thu, 31 Oct 2013 04:00:01 +0000 (13:00 +0900)]
ovs-ofctl: Add icmp_code test

This corrects what appears to be a typo by replacing
a duplicate icmp_type test with an icmp_code test.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agodebian: Option to create tunnel through 'interfaces'.
Gurucharan Shetty [Thu, 31 Oct 2013 16:20:42 +0000 (09:20 -0700)]
debian: Option to create tunnel through 'interfaces'.

This is a port of commit 7b75828bf5654c (rhel: Option to create tunnel
through ifcfg scripts.) from rhel to debian's ifupdown script.

Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
10 years agodatapath: Use flow hash during flow lookup operation.
Pravin B Shelar [Wed, 30 Oct 2013 16:43:49 +0000 (09:43 -0700)]
datapath: Use flow hash during flow lookup operation.

Flow->hash can be used to detect hash collisions and avoid flow key
compare in flow lookup.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
10 years agoodp-util: Parse SCTP correctly.
Gurucharan Shetty [Wed, 30 Oct 2013 07:44:32 +0000 (00:44 -0700)]
odp-util: Parse SCTP correctly.

We should be looking at 'src_flow' instead of 'flow'. Otherwise,
parsing SCTP through odp_flow_key_to_mask will fail.

Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
10 years agodatapath: Simplify vport-netdev-hook compatibility code.
Pravin B Shelar [Tue, 29 Oct 2013 21:10:26 +0000 (14:10 -0700)]
datapath: Simplify vport-netdev-hook compatibility code.

Move compat code to netdev_rx_handler_register() definition.
It also adds type safety for netdev-hook.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
10 years agoclassifier: Rename struct cls_table as cls_subtable.
Jarno Rajahalme [Tue, 29 Oct 2013 23:39:52 +0000 (16:39 -0700)]
classifier: Rename struct cls_table as cls_subtable.

The naming of the classifier table has been a source of confusion,
since each OpenFlow table is implemented as a classifier, which
consists of multiple (sub)tables.  This name change hopefully makes
classifier related discussion a bit less confusing.

For consistency, relevant field names as well as the function and
variable names have been renamed in similar fashion.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto: Add support for sending OFPTYPE_ROLE_STATUS messages.
Alexandru Copot [Tue, 22 Oct 2013 08:40:03 +0000 (11:40 +0300)]
ofproto: Add support for sending OFPTYPE_ROLE_STATUS messages.

When a controller changes its role to MASTER, the others are marked
as SLAVE. This patch makes it possible to notify the controllers
of this change.

Signed-off-by: Alexandru Copot <alex.mihai.c@gmail.com>
Cc: Daniel Baluta <dbaluta@ixiacom.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoinclude/openflow: Add OpenFlow 1.4 header file
Alexandru Copot [Tue, 22 Oct 2013 08:40:02 +0000 (11:40 +0300)]
include/openflow: Add OpenFlow 1.4 header file

It contains only Set-Async-Config and Role status message definitions.

Signed-off-by: Alexandru Copot <alex.mihai.c@gmail.com>
Cc: Daniel Baluta <dbaluta@ixiacom.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agovtep: Bring BFD specification in vtep.xml into sync with OVS.
Ben Pfaff [Tue, 29 Oct 2013 20:01:07 +0000 (13:01 -0700)]
vtep: Bring BFD specification in vtep.xml into sync with OVS.

A number of new key-value pairs have been added to the bfd and bfd_status
columns of the OVS schema since the VTEP schema was created. To aid
interoperability between OVS instances and VTEPs, this patch brings
the VTEP schema into line with that of OVS.

CC: Bruce Davie <bdavie@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoImplement OFPT_QUEUE_GET_CONFIG_REQUEST and OFPT_QUEUE_GET_CONFIG_REPLY.
Venkitachalam Gopalakrishnan [Thu, 24 Oct 2013 22:54:03 +0000 (15:54 -0700)]
Implement OFPT_QUEUE_GET_CONFIG_REQUEST and OFPT_QUEUE_GET_CONFIG_REPLY.

Open vSwitch has never implemented this request and reply, even though they
have been in OpenFlow since version 1.0.  This commit adds an
implementation.

Signed-off: Venkitachalam Gopalakrishnan <gops@vmware.com>
Co-authored-by: Ben Pfaff <blp@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Joe Stringer <joestringer@nicira.com>
10 years agoopenflow-1.2.h: Remove redundant definition of OFPST12_GROUP_FEATURES.
Ben Pfaff [Thu, 24 Oct 2013 21:34:17 +0000 (14:34 -0700)]
openflow-1.2.h: Remove redundant definition of OFPST12_GROUP_FEATURES.

Message types are defined in ofp-msgs.h these days.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Joe Stringer <joestringer@nicira.com>
10 years agovswitch.xml: Improve documentation for BFD.
Ben Pfaff [Tue, 29 Oct 2013 19:41:17 +0000 (12:41 -0700)]
vswitch.xml: Improve documentation for BFD.

This update improves the BFD documentation in a few ways:

   - Demand mode is now supported.

   - Wordsmithing, spelling, etc.

   - Attempt to better explain decay_min_rx, forwarding_if_rx, and
     cpath_down.

   - Break into subgroups for configuration and status, to better explain
     which party sets which fields.

   - Reindents to match the rest of vswitch.xml.

Because of the reindentation, this patch may be easier to view with spacing
changes suppressed.

Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoTCP flags matching support.
Jarno Rajahalme [Mon, 28 Oct 2013 20:54:40 +0000 (13:54 -0700)]
TCP flags matching support.

    tcp_flags=flags/mask
        Bitwise  match on TCP flags.  The flags and mask are 16-bit num‐
        bers written in decimal or in hexadecimal prefixed by 0x.   Each
        1-bit  in  mask requires that the corresponding bit in port must
        match.  Each 0-bit in mask causes the corresponding  bit  to  be
        ignored.

        TCP  protocol  currently  defines  9 flag bits, and additional 3
        bits are reserved (must be transmitted as zero), see  RFCs  793,
        3168, and 3540.  The flag bits are, numbering from the least
significant bit:

        0: FIN No more data from sender.

        1: SYN Synchronize sequence numbers.

        2: RST Reset the connection.

        3: PSH Push function.

        4: ACK Acknowledgement field significant.

        5: URG Urgent pointer field significant.

        6: ECE ECN Echo.

        7: CWR Congestion Windows Reduced.

        8: NS  Nonce Sum.

        9-11:  Reserved.

        12-15: Not matchable, must be zero.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
10 years agoWiden TCP flags handling.
Jarno Rajahalme [Mon, 28 Oct 2013 20:54:39 +0000 (13:54 -0700)]
Widen TCP flags handling.

Widen TCP flags handling from 7 bits (uint8_t) to 12 bits (uint16_t).
The kernel interface remains at 8 bits, which makes no functional
difference now, as none of the higher bits is currently of interest
to the userspace.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
10 years agodatapath: Enable all GSO features on internal port.
Pravin B Shelar [Fri, 25 Oct 2013 20:42:12 +0000 (13:42 -0700)]
datapath: Enable all GSO features on internal port.

OVS already can handle all types of segmentation offloads that
are supported by the kernel.
Following patch specifically enables UDP and IPV6 segmentation
offloads.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
10 years agoofproto: Use ofproto_check_ofpacts() from modify_flows__().
Ben Pfaff [Fri, 25 Oct 2013 21:00:43 +0000 (14:00 -0700)]
ofproto: Use ofproto_check_ofpacts() from modify_flows__().

Until now this code has called ofpacts_check() directly, but that omits
the additional check that the ofproto_check_ofpacts() wrapper includes.

Reported-by: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
10 years agoofproto: Avoid abandoning an ofopgroup without committing it.
Ben Pfaff [Fri, 25 Oct 2013 20:31:50 +0000 (13:31 -0700)]
ofproto: Avoid abandoning an ofopgroup without committing it.

Commit e3b5693319c (Fix table checking for goto table instruction.) moved
action checking into modify_flows__(), for good reason, but as a side
effect made modify_flows__() abandon and never commit the ofopgroup that it
started, if action checking failed.  This commit fixes the problem.

The following commands, run under "make sandbox", illustrate the problem.
Without this change, the final command hangs because the barrier request
that ovs-ofctl sends never gets a response (because barriers wait for all
ofopgroups to complete, which never happens).  With this commit, the
commands complete quickly:

ovs-vsctl add-br br0
ovs-vsctl set bridge br0 protocols=OpenFlow10,OpenFlow11,OpenFlow12,OpenFlow13
ovs-ofctl add-flow -O OpenFlow11 br0 table=1,action=goto_table:2
ovs-ofctl add-flow -O OpenFlow11 br0 table=1,action=goto_table:1

Reported-by: Jarno Rajahalme <jrajahalme@vmware.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agolib: Remove unreachable JSONRPC case
Joe Stringer [Tue, 22 Oct 2013 17:03:08 +0000 (10:03 -0700)]
lib: Remove unreachable JSONRPC case

jsonrpc_session_recv() handles echo replies prior to this.

Found by inspection.

Signed-off-by: Joe Stringer <joestringer@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agojsonrpc: Only compose message to log if it's really going to be logged.
Ben Pfaff [Fri, 25 Oct 2013 16:22:37 +0000 (09:22 -0700)]
jsonrpc: Only compose message to log if it's really going to be logged.

This suppresses a testsuite failure when the testsuite is run from a
directory whose name contains a non-ASCII character.  I'd rather fix the
problem but webpages like the following make it sound difficult or
impossible on Python 2.x: http://stackoverflow.com/a/11742928

Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agotests: Skip Python daemon tests in directory with non-ASCII name.
Ben Pfaff [Fri, 25 Oct 2013 16:22:36 +0000 (09:22 -0700)]
tests: Skip Python daemon tests in directory with non-ASCII name.

The Debian autobuild machines run their builds inside a top-level
directory named /«BUILDDIR».  That name contains two non-ASCII characters
that cause the Python code in the interface-reconfigure and ovs-monitor-ipsec
tests to fail.  The problem seems to be related to the locale, because
switching to a UTF-8 locale allows the tests to proceed farther but does
not fix the problem.  I was not able to easily fix the actual problem.
Web searches turn up articles that imply that the problem is not
reasonably fixable with Python 2.x, e.g.:
    http://stackoverflow.com/a/11742928

This commit instead avoids the problem by skipping these tests if the
current working directory's name contains non-ASCII characters.  This is
a legitimate solution only because interface-reconfigure and
ovs-monitor-ipsec run from initscripts and thus their current working
directories are system directories.  (Also, the current working directory
matters much less when run in a real environment because the --root-prefix
option that causes the issue is not used in a real environment.)

Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agotests: use full table names in ovs-vsctl commands
Ansis Atteka [Thu, 24 Oct 2013 22:36:29 +0000 (15:36 -0700)]
tests: use full table names in ovs-vsctl commands

It is more obvious to figure out what exactly test is doing
if ovs-vsctl commands contain full table names.

Signed-off-by: Ansis Atteka <aatteka@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto: Report multipart buffer overflow.
YAMAMOTO Takashi [Thu, 24 Oct 2013 03:07:44 +0000 (12:07 +0900)]
ofproto: Report multipart buffer overflow.

Because our size of the multipart request buffer is effectively 0,
always report multipart buffer overflow error for multipart requests
with "more" flag set.

While this might be simpler if done in ofp-msgs.c, i put this in
ofproto.c because it seems like a better place to implement the
buffering logic if/when desirable.

An option question: what to do for the following messages with the
same xid?  especially for the last message which doesn't have the
"more" flag set?  it would be neater to detect and drop them.

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofproto: Report correct errors for unsupported stats/multipart requests.
YAMAMOTO Takashi [Thu, 24 Oct 2013 03:07:43 +0000 (12:07 +0900)]
ofproto: Report correct errors for unsupported stats/multipart requests.

The correct error in that case is OFPERR_OFPBRC_BAD_STAT,
not OFPERR_OFPBRC_BAD_TYPE.

Currently, the only example of unsupported stats/multipart request is
OFPTYPE_TABLE_FEATURES_STATS_REQUEST.

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agopackage: Make Fedora RPMs build after vtep changes.
Kyle Mestery [Thu, 24 Oct 2013 19:35:14 +0000 (15:35 -0400)]
package: Make Fedora RPMs build after vtep changes.

Add the appropriate vtep files into the Fedora RPM build
to make this work on master again.

Signed-off-by: Kyle Mestery <kmestery@cisco.com>
Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
10 years agoofp-print: Update a printf format for the recent pin.total_len change.
YAMAMOTO Takashi [Thu, 24 Oct 2013 02:58:54 +0000 (11:58 +0900)]
ofp-print: Update a printf format for the recent pin.total_len change.

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoconnmgr: Fix an abort.
YAMAMOTO Takashi [Thu, 24 Oct 2013 02:58:53 +0000 (11:58 +0900)]
connmgr: Fix an abort.

Fix a problem introduced by commit cfa955b083c5617212a29a03423e063ff6cb350a.
(connmgr: Fix packet-in reason for OpenFlow1.3 table-miss flow entries.).

ofconn might not be connected here, in that case
ofputil_protocol_to_ofp_version aborts.

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agodatapath: Per cpu flow stats.
Pravin B Shelar [Wed, 23 Oct 2013 21:34:39 +0000 (14:34 -0700)]
datapath: Per cpu flow stats.

With mega flow implementation ovs flow can be shared between
multiple CPUs which makes stats updates highly contended
operation. Following patch allocates separate stats for each
CPU to make stats update scalable.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
10 years agolib/ofp-actions: Enforce action consistency.
Jarno Rajahalme [Wed, 23 Oct 2013 19:52:57 +0000 (12:52 -0700)]
lib/ofp-actions: Enforce action consistency.

OpenFlow 1.1+ specs encourage switches to verify action consistency
at flow setup time.  Implement this for OpenFlow 1.1+ only to not
break any current OF 1.0 based use.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
10 years agoofp-actions: Make union ofp_action more generic.
Ben Pfaff [Wed, 23 Oct 2013 20:46:57 +0000 (13:46 -0700)]
ofp-actions: Make union ofp_action more generic.

Make union ofp_action more generic by allowing it to be used for
all actions.  OFP_ACTION_ALIGN (which is 8, as the sizeof(union
ofp_action) used to be) is now used where sizeof union ofp_action
was used before.  On the same note, variable name 'n_actions' is
changed to 'max_actions' as the number of actions cannot be simply
divided when actions have various sizes.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>