openvswitch
12 years agoAdd OFPRR_EVICTION to enum ofp_flow_removed_reason.
Ben Pfaff [Tue, 3 Jul 2012 21:23:10 +0000 (14:23 -0700)]
Add OFPRR_EVICTION to enum ofp_flow_removed_reason.

This is likely to be part of OpenFlow 1.3.1 or 1.4 and we have use for it
beforehand to report evicted flows.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofp-util: Make put_stats__() public as ofputil_put_stats_header().
Ben Pfaff [Fri, 29 Jun 2012 23:35:17 +0000 (16:35 -0700)]
ofp-util: Make put_stats__() public as ofputil_put_stats_header().

An upcoming commit will introduce a user outside of ofp-util.c.

The change to put_stats_reply__() is larger than strictly necessary to
avoid making really ugly line breaks.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofp-print: Slightly extend ofp_print_bit_names().
Ben Pfaff [Fri, 29 Jun 2012 23:23:43 +0000 (16:23 -0700)]
ofp-print: Slightly extend ofp_print_bit_names().

In an upcoming commit I want to print comma-separated, not space-separated,
names for a set of bits.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoclassifier: New function cls_rule_is_loose_match().
Ben Pfaff [Thu, 12 Jul 2012 17:13:10 +0000 (10:13 -0700)]
classifier: New function cls_rule_is_loose_match().

This function will be useful in an upcoming commit.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofproto: Finalize all ofoperations in a given ofgroup at the same time.
Ben Pfaff [Sat, 30 Jun 2012 05:33:56 +0000 (22:33 -0700)]
ofproto: Finalize all ofoperations in a given ofgroup at the same time.

An upcoming commit will add support for flow table monitoring by
controllers.  One feature of this upcoming support is that a controller's
own changes to the flow table can be abbreviated to a summary, since the
controller presumably knows what it has already sent to the switch.
However, the summary only makes sense if a set of flow table changes
completely succeeds or completely fails.  If it partially fails, the
switch must not attempt to summarize it, because the controller needs
to know the details.  Given that, we have to wait for all of the
operations in an ofgroup to either succeed or fail before the switch
can send its flow table update report to the controllers.  This
commit makes that change.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofproto: Mark some function parameters const.
Ben Pfaff [Fri, 6 Jul 2012 17:02:09 +0000 (10:02 -0700)]
ofproto: Mark some function parameters const.

This allows FOR_EACH_MATCHING_TABLE to be used with const TABLE and
OFPROTO arguments.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofp-print: Print out_port field in "flow_mod"s.
Ben Pfaff [Fri, 6 Jul 2012 20:05:38 +0000 (13:05 -0700)]
ofp-print: Print out_port field in "flow_mod"s.

Somehow we've overlooked this for a long time.  I guess that feature
doesn't get used very much.

Also updates the test output for OFPT_FLOW_MOD to include the out_port
output and adds out_port to the NXT_FLOW_MOD tests.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoovs-ofctl: Add --sort and --rsort options for "dump-flows" command.
Ben Pfaff [Thu, 12 Jul 2012 20:32:47 +0000 (13:32 -0700)]
ovs-ofctl: Add --sort and --rsort options for "dump-flows" command.

Feature #8754.
Signed-off-by: Arun Sharma <arun.sharma@calsoftinc.com>
[blp@nicira.com rewrote most of the code]
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoovs-ofctl: Factor code out of read_flows_from_switch().
Ben Pfaff [Tue, 3 Jul 2012 18:31:03 +0000 (11:31 -0700)]
ovs-ofctl: Factor code out of read_flows_from_switch().

I want to use this code in another function in an upcoming commit.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoovs-ofctl: Use the prepared connection to dump flows in do_dump_flows__().
Ben Pfaff [Tue, 3 Jul 2012 17:25:35 +0000 (10:25 -0700)]
ovs-ofctl: Use the prepared connection to dump flows in do_dump_flows__().

The logic in do_dump_flows__() went to some trouble to open an OpenFlow
connection and set the correct protocol, but then it allowed
dump_stats_transaction() to create and use a completely different OpenFlow
connection that hadn't been prepared that way.  This commit fixes the
problem.

I don't think that there is a real bug here because currently the set of
protocols doesn't influence flow stats replies.  But that could change in
the future.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofp-util: Reload ofpbuf pointers after nx_put_match().
Ben Pfaff [Thu, 12 Jul 2012 18:31:13 +0000 (11:31 -0700)]
ofp-util: Reload ofpbuf pointers after nx_put_match().

Fixes a wild pointer write when nx_put_match() expands the ofpbuf.

The change to the OFPST_FLOW case isn't strictly a bug fix, it just makes
the code for that case more closely resemble the NXST_FLOW case.

Bug #12403.
Bug #12460.
Bug #12461.
Bug #12481.
Reported-by: Timothy Chen <tchen@nicira.com>
Reported-by: Natasha Gude <natasha@nicira.com>
Reported-by: James Schmidt <jschmidt@nicira.com>
Reported-by: Alan Shieh <ashieh@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agometa-flow: Remove mf_set_subfield and mf_set_subfield
Simon Horman [Thu, 5 Jul 2012 08:15:17 +0000 (17:15 +0900)]
meta-flow: Remove mf_set_subfield and mf_set_subfield

These functions do not appear to be used any more.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoovs-vsctl: Correct example for removing a mirror.
Ben Pfaff [Thu, 12 Jul 2012 15:43:29 +0000 (08:43 -0700)]
ovs-vsctl: Correct example for removing a mirror.

Reported-by: Kris zhang <zhang.kris@gmail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoFAQ: Patch ports are not targeted for upstream.
Ben Pfaff [Thu, 12 Jul 2012 15:08:15 +0000 (08:08 -0700)]
FAQ: Patch ports are not targeted for upstream.

The previous text was ambiguous.

Reported-by: Konstantin Khorenko <khorenko@openvz.org>
CC: Jesse Gross <jesse@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agometa-flow: Reduce redundant transport set/get code
Joe Stringer [Wed, 11 Jul 2012 23:07:15 +0000 (11:07 +1200)]
meta-flow: Reduce redundant transport set/get code

Signed-off-by: Joe Stringer <joe@wand.net.nz>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agocfm: Always initialize CCM "internal_ms_x" extension field.
Ben Pfaff [Tue, 10 Jul 2012 21:51:29 +0000 (14:51 -0700)]
cfm: Always initialize CCM "internal_ms_x" extension field.

Found by valgrind:

Syscall param socketcall.sendmsg(msg.msg_iov[i]) points to uninitialised
byte(s)
   at 0x42D3021: sendmsg (in /lib/libc-2.5.so)
   by 0x80E4D23: nl_sock_transact (netlink-socket.c:670)
   by 0x80D9086: dpif_linux_execute__ (dpif-linux.c:872)
   by 0x807D6AE: dpif_execute__ (dpif.c:957)
   by 0x807D6FE: dpif_execute (dpif.c:987)
   by 0x805DED9: send_packet (ofproto-dpif.c:4727)
   by 0x805F8E1: port_run_fast (ofproto-dpif.c:2441)
   by 0x8065CF6: run_fast (ofproto-dpif.c:926)
   by 0x805674F: ofproto_run_fast (ofproto.c:1148)
   by 0x804C957: bridge_run_fast (bridge.c:1980)
   by 0x8053F49: main (ovs-vswitchd.c:123)
  Address 0xbea0895c is on thread 1's stack

Bug #11797.
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agotests: Improve test coverage of OXM metadata field
Joe Stringer [Wed, 11 Jul 2012 12:01:11 +0000 (00:01 +1200)]
tests: Improve test coverage of OXM metadata field

Signed-off-by: Joe Stringer <joe@wand.net.nz>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoNXM, OXM: Add Flow Label Tests
Simon Horman [Mon, 9 Jul 2012 09:03:54 +0000 (18:03 +0900)]
NXM, OXM: Add Flow Label Tests

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoAdd forgotten header
Ed Maste [Wed, 11 Jul 2012 13:16:00 +0000 (09:16 -0400)]
Add forgotten header

Signed-off-by: Ed Maste <emaste@freebsd.org>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoFAQ: Add FAQ entry for determining OpenFlow port numbers.
Ben Pfaff [Wed, 11 Jul 2012 07:58:53 +0000 (00:58 -0700)]
FAQ: Add FAQ entry for determining OpenFlow port numbers.

I don't understand why, but I've had this question from multiple people
recently.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofp-actions: Add hex dump of bad actions to log message on error.
Ben Pfaff [Mon, 9 Jul 2012 21:21:00 +0000 (14:21 -0700)]
ofp-actions: Add hex dump of bad actions to log message on error.

This should make debugging easier in such cases.

Bug #12460.
Reported-by: Natasha Gude <natasha@nicira.com>
Reported-by: James Schmidt <jschmidt@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoFAQ: Add FAQ entry about flow normalization.
Ben Pfaff [Wed, 11 Jul 2012 07:54:53 +0000 (00:54 -0700)]
FAQ: Add FAQ entry about flow normalization.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agodatapath: Check gso_type for correct sk_buff in queue_gso_packets().
Ben Pfaff [Tue, 10 Jul 2012 21:11:59 +0000 (14:11 -0700)]
datapath: Check gso_type for correct sk_buff in queue_gso_packets().

At the point where it was used, skb_shinfo(skb)->gso_type referred to a
post-GSO sk_buff.  Thus, it would always be 0.  We want to know the pre-GSO
gso_type, so we need to obtain it before segmenting.

Before this change, the kernel would pass inconsistent data to userspace:
packets for UDP fragments with nonzero offset would be passed along with
flow keys that indicate a zero offset (that is, the flow key for "later"
fragments claimed to be "first" fragments).  This inconsistency tended
to confuse Open vSwitch userspace, causing it to log messages about
"failed to flow_del" the flows with "later" fragments.

Bug #12394.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
12 years agocfm: Remove sequence fault reason.
Ethan Jackson [Mon, 9 Jul 2012 22:59:44 +0000 (15:59 -0700)]
cfm: Remove sequence fault reason.

Commit 2b540ecb (Added handling of previously ignored cfm faults.)
made the CFM code trigger a fault when a packet is received with an
out of order sequence number.  This means that if even one CFM
probe is dropped, a fault will be triggered because the next
received probe's sequence would be two greater than the last.  This
is in conflict with the 802.1ag requirement that 3.5 dropped probes
triggers fault.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
12 years agoRename static functions to increase uniqueness.
Arun Sharma [Sun, 8 Jul 2012 11:38:36 +0000 (04:38 -0700)]
Rename static functions to increase uniqueness.

Rename do_* in ovs-dpctl and ovs-ofctl command with "dpctl_" or "ofctl_"
prefix.

Rename add_flow with dp_netdev_flow_add in lib/dpif-netdev.c.

Signed-off-by: Arun Sharma <arun.sharma@calsoftinc.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agodebian: Remove obsolete advice to edit /etc/default/openvswitch-switch.
Ben Pfaff [Fri, 6 Jul 2012 22:13:25 +0000 (15:13 -0700)]
debian: Remove obsolete advice to edit /etc/default/openvswitch-switch.

This hasn't been necessary for a long time.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agodebian: Add "netbase" dependency for /etc/protocols.
Ben Pfaff [Fri, 6 Jul 2012 22:08:10 +0000 (15:08 -0700)]
debian: Add "netbase" dependency for /etc/protocols.

ovs-ctl.in uses /etc/protocols, which is in the "netbase" package, so a
dependency is required.

Debian bug #680537.
CC: 680537@bugs.debian.org
Reported-by: Bastian Blank <waldi@debian.org>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoipsec gre: Don't cache bad ovs-monitor-ipsec pid values.
Justin Pettit [Sun, 8 Jul 2012 20:04:27 +0000 (13:04 -0700)]
ipsec gre: Don't cache bad ovs-monitor-ipsec pid values.

Commit 2a586a5 (ipsec gre: Do not reread ovs monitor ipsec pidfile in
netdev vport so much) attempts to cache the pid of ovs-monitor-ipsec so
that it's not re-checked so often.  Unfortunately, it also cached error
returns, so errors never recover.  This commit continues to check for
the process's existence after an error.

Issue #12399

Reported-by: Paul Ingram <paul@nicira.com>
Signed-off-by: Justin Pettit <jpettit@nicira.com>
12 years agoofproto: Make ofoperation_create() return the new operation.
Ben Pfaff [Wed, 27 Jun 2012 23:00:08 +0000 (16:00 -0700)]
ofproto: Make ofoperation_create() return the new operation.

This seems like sensible return value semantics to me, even though the new
operation is also available through rule->pending.

This is a code cleanup only that should not affect behavior.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agonicira-ext: Fix wrong information in comment.
Ben Pfaff [Fri, 29 Jun 2012 23:22:41 +0000 (16:22 -0700)]
nicira-ext: Fix wrong information in comment.

The priority of exact-match flows is ignored only for the OF1.0 flow match
format, never for NXM.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoovs-ofctl: Fix typos in manpage.
Ben Pfaff [Fri, 29 Jun 2012 23:20:23 +0000 (16:20 -0700)]
ovs-ofctl: Fix typos in manpage.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofproto: Fix typos in comments.
Ben Pfaff [Fri, 29 Jun 2012 17:36:48 +0000 (10:36 -0700)]
ofproto: Fix typos in comments.

This corrects the spelling of the OFOPERATION_* constants.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoovs-lib: Support old versions of strace.
Ethan Jackson [Thu, 28 Jun 2012 21:55:55 +0000 (14:55 -0700)]
ovs-lib: Support old versions of strace.

The ovs-lib strace wrapper requires the -D (run tracer process as a
detached grandchild, not as parent) option which does not exist in
older versions.  This patch falls back to attaching to the running
process when the -D option does not exists.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
12 years agoovs-vswitchd: Log datapath ID in a more user-friendly way.
Ben Pfaff [Tue, 26 Jun 2012 21:43:08 +0000 (14:43 -0700)]
ovs-vswitchd: Log datapath ID in a more user-friendly way.

The layering between ofproto and ovs-vswitchd caused the datapath ID to be
logged in a needlessly confusing way.  First, ofproto would log its
default datapath ID:

     using datapath ID 0000505400000004

then the bridge code would immediately determine the datapath ID that it
wanted and call ofproto_set_datapath_id(), which would log the change

     datapath ID changed to 0000111122223333

This commit stops logging the default datapath ID, which is never actually
visible in OpenFlow.  This should make the log files easier to understand.

Bug #12164.
Reported-by: Jacob Cherkas <jcherkas@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofproto: Always include ofproto name in log messages.
Ben Pfaff [Tue, 26 Jun 2012 19:40:27 +0000 (12:40 -0700)]
ofproto: Always include ofproto name in log messages.

Otherwise the log messages can be confusing when there's more than one
bridge.

Reported-by: Jacob Cherkas <jcherkas@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agobond: Sending learning packets on active-backup.
Ethan Jackson [Mon, 25 Jun 2012 22:46:44 +0000 (15:46 -0700)]
bond: Sending learning packets on active-backup.

Suppose we have an active bond with two ports, eth1 and eth2,
attached to a standard L2 learning switch which does not know it's
participating in a bond (i.e. isn't running LACP).  Suppose eth1 is
active and therefore the L2 learning switch is forwarding traffic
to eth1 as instructed by its learning table.  Now suppose, for some
reason, OVS fails over from eth1 to eth2.  For each destination
MAC, the L2 learning switch will continue sending traffic to eth1,
which will be dropped, until either traffic from that MAC appears
on eth2, or the learning table entries expire.

To alleviate this issue, this patch sends learning packets on newly
active interfaces in active-backup bonds in order to educate the
upstream network of the change.

Requested-by: Frido Roose <fr.roose@gmail.com>
Signed-off-by: Ethan Jackson <ethan@nicira.com>
12 years agobond: Don't send learning packets on STABLE bonds.
Ethan Jackson [Mon, 25 Jun 2012 22:48:10 +0000 (15:48 -0700)]
bond: Don't send learning packets on STABLE bonds.

Stable bonds require upstream switch support to avoid confusing
learning tables.  Therefore, sending learning packets on these
bonds doesn't make a lot of sense.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
12 years agoovs-check-dead-ifs: Tolerate processes that disappear during run.
Ben Pfaff [Thu, 5 Jul 2012 19:57:16 +0000 (12:57 -0700)]
ovs-check-dead-ifs: Tolerate processes that disappear during run.

os.listdir("/proc/%d/fd" % pid) throws OSError if 'pid' died since the
list of pids was obtained.

Bug #12375.
Reported-by: Amey Bhide <abhide@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofp-util: Add comment to ofputil_postappend_stats_reply().
Ben Pfaff [Thu, 5 Jul 2012 18:11:42 +0000 (11:11 -0700)]
ofp-util: Add comment to ofputil_postappend_stats_reply().

It seemed like it could use one.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agonx-match: Drop NXM_MAX_LEN.
Ben Pfaff [Thu, 5 Jul 2012 18:11:21 +0000 (11:11 -0700)]
nx-match: Drop NXM_MAX_LEN.

It isn't used anymore and keeping it up-to-date is error-prone.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoopenflow: Rename OFP_VLAN_NONE as OFP10_VLAN_NONE
Simon Horman [Thu, 5 Jul 2012 08:41:10 +0000 (17:41 +0900)]
openflow: Rename OFP_VLAN_NONE as OFP10_VLAN_NONE

* Remove duplicate definition of OFP_VLAN_NONE
* Rename OFP_VLAN_NONE as OFP10_VLAN_NONE as it appears to be
  only used by OpenFlow 1.0.

As suggested by Ben Pfaff.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoovs-brcompatd: Fix sending replies to kernel requests.
Ben Pfaff [Thu, 5 Jul 2012 15:41:03 +0000 (08:41 -0700)]
ovs-brcompatd: Fix sending replies to kernel requests.

Commit 7d7447 (netlink: Postpone choosing sequence numbers until send
time.) broke ovs-brcompatd because it prevented userspace replies to
kernel requests from using the correct sequence numbers.  This commit fixes
it.

Atzm Watanabe found the root cause and provided an alternative patch to
avoid the problem.

Reported-by: André Ruß <andre.russ@hybris.com>
Reported-by: Atzm Watanabe <atzm@stratosphere.co.jp>
Tested-by: Atzm Watanabe <atzm@stratosphere.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoopenflow-1.2: correct action number
Isaku Yamahata [Thu, 5 Jul 2012 03:53:37 +0000 (12:53 +0900)]
openflow-1.2: correct action number

The number 13, 14 aren't used.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofp-actions: Add decoding and encoding OF1.1 instructions and actions.
Ben Pfaff [Wed, 4 Jul 2012 05:14:29 +0000 (22:14 -0700)]
ofp-actions: Add decoding and encoding OF1.1 instructions and actions.

So far, only the Apply-Actions instruction is supported, and only
actions that have identical semantics to OpenFlow 1.0 actions.

Co-authored-by: Simon Horman <horms@verge.net.au>
Co-authored-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoIntroduce ofpacts, an abstraction of OpenFlow actions.
Ben Pfaff [Wed, 4 Jul 2012 05:17:14 +0000 (22:17 -0700)]
Introduce ofpacts, an abstraction of OpenFlow actions.

OpenFlow actions have always been somewhat awkward to handle.
Moreover, over time we've started creating actions that require more
complicated parsing.  When we maintain those actions internally in
their wire format, we end up parsing them multiple times, whenever
we have to look at the set of actions.

When we add support for OpenFlow 1.1 or later protocols, the situation
will get worse, because these newer protocols support many of the same
actions but with different representations.  It becomes unrealistic to
handle each protocol in its wire format.

This commit adopts a new strategy, by converting OpenFlow actions into
an internal form from the wire format when they are read, and converting
them back to the wire format when flows are dumped.  I believe that this
will be more maintainable over time.

Thanks to Simon Horman and Pravin Shelar for reviews.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofp-util: Add OFPUTIL_ACTION_INVALID to enum ofputil_action_code.
Ben Pfaff [Fri, 8 Jun 2012 00:23:59 +0000 (20:23 -0400)]
ofp-util: Add OFPUTIL_ACTION_INVALID to enum ofputil_action_code.

Possibly the ofputil_decode_action() interface should be rethought now
that ofputil_action_code has an invalid value.

Reviewed-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoipsec gre: Do not reread ovs monitor ipsec pidfile in netdev vport so much
Arun Sharma [Tue, 3 Jul 2012 01:30:21 +0000 (18:30 -0700)]
ipsec gre: Do not reread ovs monitor ipsec pidfile in netdev vport so much

Instead of rereading ovs-monitor-ipsec pidfile in netdev-vport so much.  It's
probably only necessary to check once if ovs-monitor-ipsec is running,
and then cache the result.  If the result is negative, then it may be
worthwhile to try again the next time someone tries to configure an ipsec
tunnel.

Signed-off-by: Arun Sharma <arun.sharma@calsoftinc.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agopython: Call 'wait' methods correctly in jsonrpc and stream code.
Ben Pfaff [Mon, 2 Jul 2012 17:34:32 +0000 (10:34 -0700)]
python: Call 'wait' methods correctly in jsonrpc and stream code.

Bug #12301.
Reported-by: Mike Kruze <mkruze@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoFix build error on XenServer
Ansis Atteka [Mon, 2 Jul 2012 22:02:39 +0000 (15:02 -0700)]
Fix build error on XenServer

A missing backslash broke the build.

Signed-off-by: Ansis Atteka <aatteka@nicira.com>
12 years agoovs-l3ping: A new test utility that allows to detect L3 tunneling issues
Ansis Atteka [Thu, 28 Jun 2012 22:52:40 +0000 (15:52 -0700)]
ovs-l3ping: A new test utility that allows to detect L3 tunneling issues

ovs-l3ping is similar to ovs-test, but the main difference
is that it does not require administrator to open firewall
holes for the XML/RPC control connection. This is achieved
by encapsulating the Control Connection over the L3 tunnel
itself.

This tool is not intended as a replacement for ovs-test,
because ovs-test covers much broader set of test cases.

Sample usage:
Node1: ovs-l3ping -s 192.168.122.236,10.1.1.1 -t gre
Node2: ovs-l3ping -c 192.168.122.220,10.1.1.2,10.1.1.1 -t gre

Issue#11791
Signed-off-by: Ansis Atteka <aatteka@nicira.com>
12 years agoPython daemons: Changed log date time format.
Arun Sharma [Mon, 2 Jul 2012 11:32:44 +0000 (04:32 -0700)]
Python daemons: Changed log date time format.

Changed the python daemons log date and time format to keep similar
as C binaries logging format. The date time is in UTC.

Signed-off-by: Arun Sharma <arun.sharma@calsoftinc.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoUse UTC consistently instead of local timezone.
Ben Pfaff [Mon, 2 Jul 2012 16:12:13 +0000 (09:12 -0700)]
Use UTC consistently instead of local timezone.

Signed-off-by: Arun Sharma <arun.sharma@calsoftinc.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoovs-vswitchd: Call mlockall() from the daemon, not the parent or monitor.
Ben Pfaff [Fri, 29 Jun 2012 16:22:59 +0000 (09:22 -0700)]
ovs-vswitchd: Call mlockall() from the daemon, not the parent or monitor.

mlockall(2) says:

       Memory  locks  are not inherited by a child created via fork(2) and are
       automatically removed  (unlocked)  during  an  execve(2)  or  when  the
       process terminates.

which means that --mlockall was ineffective in combination with --detach
or --monitor or both.  Both are used in the most common production
configuration of Open vSwitch, so this means that --mlockall has never been
effective in production.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoRoute-table implementation for (Free)BSD
Ed Maste [Fri, 29 Jun 2012 21:11:24 +0000 (21:11 +0000)]
Route-table implementation for (Free)BSD

This is a trivial implementation of the route-table functionality for
FreeBSD, as needed by ofproto/ofproto-dpif-sflow.c.  It has not yet
been extensively tested.

Signed-off-by: Ed Maste <emaste@freebsd.org>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agovlandev: Move Linux #include under #ifdef __linux__
Ed Maste [Fri, 29 Jun 2012 21:13:54 +0000 (21:13 +0000)]
vlandev: Move Linux #include under #ifdef __linux__

Signed-off-by: Ed Maste <emaste@freebsd.org>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoDebian packaging to remove system-id.conf
Arun Sharma [Fri, 29 Jun 2012 02:56:39 +0000 (19:56 -0700)]
Debian packaging to remove system-id.conf

Debian packaging, "--purge" to remove /etc/openvswitch/system-id.conf

Signed-off-by: Arun Sharma <arun.sharma@calsoftinc.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoopenflow: Move enums for "packet_out" and "flow_mod" to common header.
Ben Pfaff [Thu, 28 Jun 2012 05:48:01 +0000 (22:48 -0700)]
openflow: Move enums for "packet_out" and "flow_mod" to common header.

Reviewed-by: Joe Stringer <joe@wand.net.nz>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofproto: Report nonexistent ports and queues as errors in queue stats.
Ben Pfaff [Mon, 11 Jun 2012 18:23:06 +0000 (11:23 -0700)]
ofproto: Report nonexistent ports and queues as errors in queue stats.

Until now, Open vSwitch has ignored missing ports and queues in most cases
in queue stats requests, simply returning an empty set of statistics.
It seems that it is better to report an error, so this commit does this.

Reported-by: Prabina Pattnaik <Prabina.Pattnaik@nechclst.in>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoovs-ofctl: Fix handling of unexpected replies in dump_stats_transaction().
Ben Pfaff [Mon, 11 Jun 2012 18:15:31 +0000 (11:15 -0700)]
ovs-ofctl: Fix handling of unexpected replies in dump_stats_transaction().

dump_stats_transaction() ignored errors and other non-stats replies to
its request and would continue to wait forever.  This fixes the problem.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoopenflow: Add Open Flow 1.2 to ofp_to_string__()
Simon Horman [Wed, 27 Jun 2012 08:19:52 +0000 (17:19 +0900)]
openflow: Add Open Flow 1.2 to ofp_to_string__()

Signed-off-by: Simon Horman <horms@verge.net.au>
[blp@nicira.com fixed testsuite failure.]
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoovs-ctl: Add additional options to strace wrapper.
Ethan Jackson [Wed, 27 Jun 2012 20:41:17 +0000 (13:41 -0700)]
ovs-ctl: Add additional options to strace wrapper.

It's useful to know how long each system call took, and at what
time each system call happened.  In addition this patch causes
strace to print strings more fully allowing log messages to be seen
in the output.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
12 years agotests: Fix MockXenAPI to make the ovs-xapi-sync test case pass again.
Ben Pfaff [Wed, 27 Jun 2012 16:56:20 +0000 (09:56 -0700)]
tests: Fix MockXenAPI to make the ovs-xapi-sync test case pass again.

Commit 1dc6839d2d (xenserver: Improve efficiency of code by using
get_all_records_where()) updated the ovs-xapi-sync script and caused a unit
test failure.  This fixes it.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoxenserver: Improve efficiency of code by using get_all_records_where()
Rob Hoes [Wed, 27 Jun 2012 15:14:21 +0000 (16:14 +0100)]
xenserver: Improve efficiency of code by using get_all_records_where()

Replace the get_record() for network references which caused as many
slave-to-master calls as there are Network records plus one.
The get_all_records_where() call gets exactly what is needed with a single
call.

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
Acked-by: Dominic Curran <dominic.curran@citrix.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agolib/meta-flow: introduce a macro, CASE_MFF_REGS, to catch "case MFF_REG<N>:"
Isaku Yamahata [Wed, 27 Jun 2012 14:23:25 +0000 (07:23 -0700)]
lib/meta-flow: introduce a macro, CASE_MFF_REGS, to catch "case MFF_REG<N>:"

Introduce a macro instead for
With this macro, the code is a bit reduced.
test: compile-tested and unit tests passed.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
[blp@nicira.com moved the macro declaration, moved trailing colon from
 macro definition to invocation, adjusted style slightly]
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agonicira-ext: Fix typo in comment.
Ben Pfaff [Wed, 27 Jun 2012 14:12:04 +0000 (07:12 -0700)]
nicira-ext: Fix typo in comment.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoAdd OXM_OF_METADATA field as a step toward OpenFlow 1.1 support.
Joe Stringer [Tue, 26 Jun 2012 13:09:44 +0000 (01:09 +1200)]
Add OXM_OF_METADATA field as a step toward OpenFlow 1.1 support.

Signed-off-by: Joe Stringer <joe@wand.net.nz>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agometa-flow: Accept NXM and OXM field names, support NXM and OXM for output.
Ben Pfaff [Tue, 26 Jun 2012 17:52:34 +0000 (10:52 -0700)]
meta-flow: Accept NXM and OXM field names, support NXM and OXM for output.

This commit makes actions that accept NXM header values also accept OXM
header values and accept OXM field names where previously only NXM field
names were accepted.

This makes it possible to add new OXM fields that don't have NXM header
values, e.g. the OXM "metadata" field.

Inspired by Joe Stringer's patch:
http://openvswitch.org/pipermail/dev/2012-June/018344.html

Reported-by: Joe Stringer <joe@wand.net.nz>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agolib/meta-flow: use symbolic value instead of ~7
Isaku Yamahata [Wed, 27 Jun 2012 04:26:57 +0000 (13:26 +0900)]
lib/meta-flow: use symbolic value instead of ~7

mf_is_value_valid() use symbolic value instead of 7 for vlan pcp

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agonicira-ext: Fix nx-action documentation
Joe Stringer [Wed, 27 Jun 2012 03:38:39 +0000 (15:38 +1200)]
nicira-ext: Fix nx-action documentation

Signed-off-by: Joe Stringer <joe@wand.net.nz>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoSubmittingPatches: Correct mailing list to use for sending patches.
Ben Pfaff [Wed, 27 Jun 2012 01:38:20 +0000 (18:38 -0700)]
SubmittingPatches: Correct mailing list to use for sending patches.

Reported-by: Ed Maste <emaste@freebsd.org>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoUpdate dates and notes for 1.6.1 release.
Justin Pettit [Tue, 26 Jun 2012 04:44:56 +0000 (21:44 -0700)]
Update dates and notes for 1.6.1 release.

Signed-off-by: Justin Pettit <jpettit@nicira.com>
12 years agolib: Do not assume sig_atomic_t is int.
Ed Maste [Tue, 26 Jun 2012 14:43:54 +0000 (14:43 +0000)]
lib: Do not assume sig_atomic_t is int.

On FreeBSD sig_atomic_t is long, which causes the comparison in
fatal_signal_run to be true when no signal has been reported.

Signed-off-by: Ed Maste <emaste@freebsd.org>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoSetting miss_send_len on receiving NXT_SET_ASYNC_CONFIG message.
Mehak Mahajan [Tue, 26 Jun 2012 19:30:26 +0000 (12:30 -0700)]
Setting miss_send_len on receiving NXT_SET_ASYNC_CONFIG message.

For the service controllers to receive any asynchronous messages, the
miss_send_len must be set to a non-zero value (refer to DESIGN).  On
receiving the NXT_SET_ASYNC_CONFIG message, the miss_send_len is set
to the default value unless it is set to a non-zero value earlier by
the OFPT_SET_CONFIG message.

Signed-off-by: Mehak Mahajan <mmahajan@nicira.com>
12 years agoofproto-dpif-governor: Improve performance when most flows get set up.
Ben Pfaff [Mon, 25 Jun 2012 16:48:44 +0000 (09:48 -0700)]
ofproto-dpif-governor: Improve performance when most flows get set up.

The "flow setup governor" was introduced to avoid the cost of setting up
short flows when there are many of them.  It works very well for short
flows, in fact.  However, when the bulk of flows are short, but still long
enough to be set up by the governor, we end up with the worst of both
worlds: OVS processes the first 5 packets of every flow "by hand" and then
it still has to set up a flow.

This commit refines the flow setup governor so that, when most of the flows
that go through it actually get set up, it in turn starts setting up most
flows at the first packet.  When it does this, it continues to sample a
small fraction of the flows in the governor's usual manner, so that if the
behavior changes it can react to it.

This increases netperf TCP_CRR transactions per second by about 25% in my
test setup, without affecting "ovs-benchmark rate" performance.

(I found that to get relatively stable performance for TCP_CRR, regardless
of whether Open vSwitch or any kind of bridging was involved, I had to pin
the netperf processes on each side of the link to a single core.  I found
that my NIC's interrupts were already pinned.  Thanks to Luca Giraudo
<lgiraudo@nicira.com> for these hints.)

Bug #12080.
Reported-by: Gurucharan Shetty <gshetty@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofp-util: Avoid use-after-free in ofputil_encode_flow_mod().
Ben Pfaff [Sun, 24 Jun 2012 05:34:39 +0000 (22:34 -0700)]
ofp-util: Avoid use-after-free in ofputil_encode_flow_mod().

nx_put_match() can reallocate the ofpbuf's data so we need to reload the
pointer.

Found by inspection.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agodpif-linux: Zero 'stats' outputs of dpif_operate() ops on failure.
Ben Pfaff [Wed, 20 Jun 2012 17:55:41 +0000 (10:55 -0700)]
dpif-linux: Zero 'stats' outputs of dpif_operate() ops on failure.

When DPIF_OP_FLOW_PUT or DPIF_OP_FLOW_DEL operations failed, they left
their 'stats' outputs uninitialized.  For DPIF_OP_FLOW_DEL, this meant that
the caller would read indeterminate data:

Conditional jump or move depends on uninitialised value(s)
   at 0x805C1EB: subfacet_reset_dp_stats (ofproto-dpif.c:4410)
    by 0x80637D2: expire_batch (ofproto-dpif.c:3471)
    by 0x8066114: run (ofproto-dpif.c:3513)
    by 0x8059DF4: ofproto_run (ofproto.c:1035)
    by 0x8052E17: bridge_run (bridge.c:2005)
    by 0x8053F74: main (ovs-vswitchd.c:108)

It's unusual for a delete operation to fail.  The most common reason is an
administrator running "ovs-dpctl del-flows".

The only user of DPIF_OP_FLOW_PUT did not request stats, so this doesn't
fix an actual bug for that case.

Bug #11797.
Reported-by: James Schmidt <jschmidt@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoovs-bugtool: Avoid running ethtool on non-physical devices.
Gurucharan Shetty [Mon, 25 Jun 2012 21:14:39 +0000 (14:14 -0700)]
ovs-bugtool: Avoid running ethtool on non-physical devices.

There can be possibilities where there are hundreds of OVS
internal devices. In such a situation, running ovs-bugtool
can take a very long time to complete as multiple ethtool
commands are run on each interface in /sys/class/net. Once
the ovs-bugtool completes, most of the ethtool command outputs
would be incomplete with "timeouts" as we only give 30 seconds
for CAP_NETWORK_STATUS.

With the following patch, we only run ethtools on those interfaces
that have an associated "device". All physical interfaces have
this entry in /sys/class/net/${interface_name}/. Virtual interfaces
can have this entry too, if it has an underlying virtual device.

Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
12 years agoofproto-dpif: Place high priority on sending CCMs.
Ethan Jackson [Fri, 22 Jun 2012 00:57:30 +0000 (17:57 -0700)]
ofproto-dpif: Place high priority on sending CCMs.

It's very important to get CCMs out as quickly as possible to avoid
causing a fault when there is really no problem.  This patch sends
CCMs as part of port_run_fast() in an attempt to move in this
direction.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
12 years agobridge: Run fast when adding and deleting ports.
Ethan Jackson [Fri, 22 Jun 2012 01:14:33 +0000 (18:14 -0700)]
bridge: Run fast when adding and deleting ports.

Adding and deleting ports can be extremely expensive so it makes
sense to get important work done before and after doing it.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
12 years agoReapplying the dscp changes: No need to restart DB/OVS on changing dscp value.
Mehak Mahajan [Thu, 21 Jun 2012 19:22:42 +0000 (12:22 -0700)]
Reapplying the dscp changes: No need to restart DB/OVS on changing dscp value.

This patch reapplies the changes that were reverted with the commit 59efa47
(Revert DSCP update changes.). It also addresses the problem introduced by
the original commits, cd8fca2 ((jsonrpc: Correctly setting the dscp value
before reconnect.) and b2e18d (No need to restart DB / OVS on changing
dscp value.), that caused numerous unit test failures on some systems (as
diagnosed by valgrind).
With this change there is no need to restart the DB or OVS on configuring a
different value for the manager or controller connection respectively. On
detecting a change in the dscp value on the socket, the previous socket is
closed and a new socket is created and connection is established with the new
configured dscp value.

Signed-off-by: Mehak Mahajan <mmahajan@nicira.com>
12 years agoodp-util: Include <config.h> first.
Ben Pfaff [Thu, 21 Jun 2012 17:42:20 +0000 (10:42 -0700)]
odp-util: Include <config.h> first.

Otherwise _GNU_SOURCE doesn't get defined early enough and on some systems
LLONG_MIN is missing when odp-util.c tries to use it indirectly through
token-bucket.h.

Reported-by: Michael Hu <mhu@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofproto-dpif: Add coverage counters for facet revalidation.
Ben Pfaff [Thu, 21 Jun 2012 15:31:59 +0000 (08:31 -0700)]
ofproto-dpif: Add coverage counters for facet revalidation.

Revalidation can be very expensive, so may be useful for performance
monitoring to keep track of how often it is necessary and for what reasons.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofproto-dpif: Remove unused coverage counters.
Ben Pfaff [Thu, 14 Jun 2012 21:44:36 +0000 (14:44 -0700)]
ofproto-dpif: Remove unused coverage counters.

Nothing ever increments these.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agonetdev-linux: Break ethtool coverage counter into "get" and "set" versions.
Ben Pfaff [Thu, 14 Jun 2012 21:37:22 +0000 (14:37 -0700)]
netdev-linux: Break ethtool coverage counter into "get" and "set" versions.

Reads and writes have difference performance implications so it's better to
separate them.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofproto: Periodically log a summary of flow table changes.
Ben Pfaff [Thu, 14 Jun 2012 21:16:55 +0000 (14:16 -0700)]
ofproto: Periodically log a summary of flow table changes.

We expect this to occasionally be useful for debugging.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agotoken-bucket: New library for generic rate-limiting.
Ben Pfaff [Thu, 31 May 2012 00:16:16 +0000 (17:16 -0700)]
token-bucket: New library for generic rate-limiting.

This commit converts two rate-limiters in the tree to use the library.
I intend to use the library elsewhere in the future.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agosat-math: Introduce macro version of SAT_MUL.
Ben Pfaff [Thu, 31 May 2012 00:05:34 +0000 (17:05 -0700)]
sat-math: Introduce macro version of SAT_MUL.

The macro version can be used in a constant expression, such as an
initializer for a variable with static lifetime.  (Otherwise, it's better
to use the function.)

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agopinsched: Completely fill the token bucket at initialization.
Ben Pfaff [Wed, 30 May 2012 21:33:08 +0000 (14:33 -0700)]
pinsched: Completely fill the token bucket at initialization.

This code, which dates to August 2008, initially sets the packet-in
scheduler token buckets to 10% full, without any rationale.  I suspect
that this is just a typo for 100% full, which I think would be more
conventional, so this commit switches to that.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agobuild: automake complains IntegrationGuide is missing
Isaku Yamahata [Thu, 21 Jun 2012 02:25:48 +0000 (11:25 +0900)]
build: automake complains IntegrationGuide is missing

Change set of 502c471406b32e5afcdea62fa8307f9856d05437 added IntegrationGuide,
but it wasn't added to EXTRA_DIST. So automake complains.
This patch adds the file to EXTRA_DIST.

> make[3]: Leaving directory `/openvswitch/build/datapath'
> The distribution is missing the following files:
> IntegrationGuide
> make[2]: *** [dist-hook-git] Error 1
> make[2]: *** Waiting for unfinished jobs....
> make[2]: Leaving directory `/openvswitch/build'
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory `/openvswitch/build'
> make: *** [all] Error 2

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoIntegrationGuide: A guide to help platform integrators.
Justin Pettit [Tue, 15 May 2012 17:47:42 +0000 (10:47 -0700)]
IntegrationGuide: A guide to help platform integrators.

Provide a guide to integrating OVS on new platforms.

Co-authored-by: Gurucharan Shetty <gshetty@nicira.com>
Signed-off-by: Justin Pettit <jpettit@nicira.com>
12 years agocfm: Minor whitespace cleanup.
Ethan Jackson [Wed, 20 Jun 2012 23:04:27 +0000 (16:04 -0700)]
cfm: Minor whitespace cleanup.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
12 years agocfm: Warn when delayed sending CCMs.
Ethan Jackson [Tue, 19 Jun 2012 20:24:43 +0000 (13:24 -0700)]
cfm: Warn when delayed sending CCMs.

We've recently seen problems where OVS can get delayed sending CCM
probes by several seconds.  This can cause tunnels to flap, and
generally wreak havoc.  It's easy to detect when this is happening,
so minimally, warning should be helpful to those debugging
problems.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
12 years agocfm: Log the start of new fault intervals.
Ethan Jackson [Tue, 19 Jun 2012 20:03:16 +0000 (13:03 -0700)]
cfm: Log the start of new fault intervals.

When debugging CFM, it's useful to know exactly when each fault
interval starts in relation to other CFM events.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
12 years agodocs: Add references to the database schema documentation.
Ben Pfaff [Wed, 20 Jun 2012 22:13:38 +0000 (15:13 -0700)]
docs: Add references to the database schema documentation.

I field lots of questions about "where's the documentation?"  Perhaps this
will help.

The changes to ovs-vsctl(8) add a couple of references to
ovs-vswitchd.conf.db(5) but they also rephrase a couple of paragraphs in
what seems to me an easier to understand style.

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoFAQ: Add additional entries.
Justin Pettit [Tue, 19 Jun 2012 23:44:54 +0000 (16:44 -0700)]
FAQ: Add additional entries.

Does some cleanup and adds entries that cover:

    - OVS isn't Linux-specific.
    - Point out PORTING guide.
    - Explanation of LTS releases.
    - Supported versions of OpenFlow.
    - Missing features from userspace datapath and upstream kernel
      module.

Signed-off-by: Justin Pettit <jpettit@nicira.com>
12 years agoFAQ: Add FAQ entries from website.
Justin Pettit [Tue, 19 Jun 2012 01:03:52 +0000 (18:03 -0700)]
FAQ: Add FAQ entries from website.

The openvswitch.org web site has a FAQ.  This commit integrates those
entries into the FAQ file.

Signed-off-by: Justin Pettit <jpettit@nicira.com>
12 years agoovs-lib: Add time stamps to Valgrind log messages.
Ben Pfaff [Wed, 20 Jun 2012 17:29:49 +0000 (10:29 -0700)]
ovs-lib: Add time stamps to Valgrind log messages.

Sometimes it's easier to interpret Valgrind warnings when you can
correlate them with other events.

Suggested-by: James Schmidt <jschmidt@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoofproto-dpif-governor: Wake up only when there is genuinely work to do.
Ben Pfaff [Wed, 20 Jun 2012 20:18:25 +0000 (13:18 -0700)]
ofproto-dpif-governor: Wake up only when there is genuinely work to do.

Until now, governor_wait() has awakened the poll loop whenever the
generation timer expires, to allow it to shrink the governor to the next
smaller size in governor_run().  However, if the governor is already the
smallest possible size, then governor_run() will not have anything to do
and will not restart the timer, which means that governor_wait() will again
immediately wake up the poll loop, and we end up using 100% CPU.

This is kind of hard to trigger because normally the client will destroy
a governor in such a case.  However, if there are too many subfacets, the
client will keep even a minimum-size governor, triggering the bug.

Bug #12106.
Reported-by: Alex Yip <alex@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agoRevert DSCP update changes.
Ben Pfaff [Wed, 20 Jun 2012 16:31:42 +0000 (09:31 -0700)]
Revert DSCP update changes.

This reverts commit cd8fca2ba0a7d036da069a4484d501bdc7a6f611 (jsonrpc:
Correctly setting the dscp value before reconnect.) and commit
b2e18db292cd4962af3248f11e9f17e6eaf9c033 (No need to restart DB / OVS on
changing dscp value.), which on some systems causes numerous unit test
failures that valgrind diagnoses as:

Conditional jump or move depends on uninitialised value(s)
   at 0x805F63F: jsonrpc_session_set_dscp (jsonrpc.c:1061)
   by 0x804F45D: ovsdb_jsonrpc_server_set_remotes (jsonrpc-server.c:417)
   by 0x804B775: reconfigure_from_db (ovsdb-server.c:656)
   by 0x804C231: main (ovsdb-server.c:159)

Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agojsonrpc: Correctly setting the dscp value before reconnect.
Mehak Mahajan [Wed, 20 Jun 2012 03:13:19 +0000 (20:13 -0700)]
jsonrpc: Correctly setting the dscp value before reconnect.

In commit b2e18d(No need to restart DB / OVS on changing dscp value.), the
dscp value was wrongly set after the reconnect.

Signed-off-by: Mehak Mahajan <mmahajan@nicira.com>
Reported-by: Ravi Kerur <rkerur@gmail.com>