openvswitch
13 years agoovs-ctl: Start ovs-vswitchd with correct niceness.
Ben Pfaff [Fri, 15 Jul 2011 21:54:26 +0000 (14:54 -0700)]
ovs-ctl: Start ovs-vswitchd with correct niceness.

13 years agoovsdb: Log when remote connections are deconfigured.
Ben Pfaff [Fri, 15 Jul 2011 18:25:14 +0000 (11:25 -0700)]
ovsdb: Log when remote connections are deconfigured.

Recently I helped debug a scenario where ovsdb-server connected to a remote
manager, then ovs-vsctl deleted the remote manager and soon after re-added
it.  The log was difficult to interpret because it showed two successful
connection attempts to the same remote without showing a reason why the
connection was dropped in the first place.  Adding this log message would
make it clear that the configuration changed to remove that remote
connection in the meantime.

13 years agoPORTING: Document why OVS does not support hybrid ofproto+dpif providers.
Ben Pfaff [Fri, 15 Jul 2011 16:35:25 +0000 (09:35 -0700)]
PORTING: Document why OVS does not support hybrid ofproto+dpif providers.

CC: Sanjay Sane <ssane@nicira.com>
CC: Justin Pettit <jpettit@nicira.com>
CC: Hao Zheng <hzheng@nicira.com>
13 years agorhel: Add ovs-bugtool manpage to list of packaged files.
Ben Pfaff [Thu, 14 Jul 2011 17:14:28 +0000 (10:14 -0700)]
rhel: Add ovs-bugtool manpage to list of packaged files.

With this change, the RPM builds for me again on RHEL 6.

Bug #6413.

13 years agoovs-bugtool: Include conf.db backups in bugtool output.
Ben Pfaff [Thu, 7 Jul 2011 20:19:31 +0000 (13:19 -0700)]
ovs-bugtool: Include conf.db backups in bugtool output.

When an upgrade or downgrade fails due to OVSDB issues, it is useful to
have the old versions of the database available.

13 years agoovs-bugtool: Add an OVSDB snapshot to ovs-bugtool output.
Ben Pfaff [Wed, 6 Jul 2011 17:26:57 +0000 (10:26 -0700)]
ovs-bugtool: Add an OVSDB snapshot to ovs-bugtool output.

The ovs-bugtool output already includes a copy of the configuration
database file, but this file omits many instantaneous details.  For
example, it does not include any information about controller connection
status or interface statistics.  This commit adds a snapshot of the
database contents that does include these details.

13 years agoovs-bugtool: Add plugins previously used only under XenServer.
Ben Pfaff [Wed, 6 Jul 2011 17:43:03 +0000 (10:43 -0700)]
ovs-bugtool: Add plugins previously used only under XenServer.

All of the xen-bugtool plugins that OVS has previously installed only under
XenServer are equally useful with Debian and other distributions, so
this commit installs and uses them everywhere.

13 years agoconfigure: Improve error message when pkg-config is missing.
Ben Pfaff [Wed, 13 Jul 2011 17:58:59 +0000 (10:58 -0700)]
configure: Improve error message when pkg-config is missing.

Until now, when pkg-config is missing, Autoconf emitted this error:
    error: possibly undefined macro: PKG_CHECK_MODULES
This commit changes the message to:
    error: Please install pkg-config.
This should be easier for users to interpret.

Suggested-by: Ethan Jackson <ethan@nicira.com>
13 years agotests: Fix deprecated use of qw.
Ethan Jackson [Tue, 12 Jul 2011 01:56:59 +0000 (18:56 -0700)]
tests: Fix deprecated use of qw.

This causes tests to fail on my system with the following error.

Use of qw(...) as parentheses is deprecated at
/home/root/ovs/tests/flowgen.pl line 35.

13 years agoovs-bugtool: Dump dpkg-related information as well as RPM-related info.
Ben Pfaff [Thu, 30 Jun 2011 21:55:28 +0000 (14:55 -0700)]
ovs-bugtool: Dump dpkg-related information as well as RPM-related info.

13 years agoovs-bugtool: Turn off "group" and "other" permissions for generated files.
Ben Pfaff [Tue, 12 Jul 2011 16:38:12 +0000 (09:38 -0700)]
ovs-bugtool: Turn off "group" and "other" permissions for generated files.

ovs-bugtool's output is potentially sensitive, so it seems best not to
allow anyone but the owner to read it.  This commit disables "group" and
"other" bits in the Unix ACL.

13 years agoovs-bugtool: Make available outside of Debian packages.
Ben Pfaff [Tue, 12 Jul 2011 16:37:08 +0000 (09:37 -0700)]
ovs-bugtool: Make available outside of Debian packages.

ovs-bugtool is no longer Debian-specific, so install it everywhere.  (On
XenServer, specifically, we do not install it, because there xen-bugtool
already exists.)

13 years agoovs-bugtool: Restore RHEL support.
Ben Pfaff [Thu, 30 Jun 2011 19:42:32 +0000 (12:42 -0700)]
ovs-bugtool: Restore RHEL support.

ovs-bugtool was originally xen-bugtool from Citrix XenServer.  We modified
it for OVS by tailoring it to work better on Debian, updating file
locations and removing features that were specific to XenServer or that
work with packages not installed by default on Debian.

This commit reverts many of those changes.  This commit:

  - Adds back code that works with RHEL features not installed by default
    on Debian (but not XenServer-specific features, since xen-bugtool works
    nicely on XenServer).

  - Switches from hard-coded paths for utilities to searching the
    superuser's typical $PATH (because RHEL and Debian disagree on the
    location for some utilities).

  - In a few cases merges lists, e.g. now it looks for logs under the names
    used in both Debian and RHEL.

  - Fixes a few spurious differences between ovs-bugtool and xen-bugtool,
    e.g. in white space.

13 years agodatapath: An expanded table should be larger than its predecessor
Simon Horman [Tue, 12 Jul 2011 06:52:44 +0000 (15:52 +0900)]
datapath: An expanded table should be larger than its predecessor

This resolves what appears to be a think-o in tbl_expand()

* Old Logic: Always create tables with TBL_MIN_BUCKETS buckets
* New Logic: Create tables twice as big as their predecessor

When sending 10,000 flows through ovs-vswitchd:
* Old Logic: CPU bound in tbl_lookup(), significant packet loss
* New Logic: ~10% of one core used, negligible packet loss

Tested with an Intel E5520 @ 2.27GHz,
flows from an ethernet device to to a dummy interface with
no address configured.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Jesse Gross <jesse@nicira.com>
13 years agoconfigure: Pass correct -target option to "cgcc" in the common case.
Ben Pfaff [Mon, 11 Jul 2011 20:57:58 +0000 (13:57 -0700)]
configure: Pass correct -target option to "cgcc" in the common case.

The "cgcc" script included with sparse guesses the target architecture
based on the host architecture instead of based on the GCC architecture.
This means that it often guesses wrong on biarch systems, e.g. my Linux
kernel is x86_64 but userspace is i686 and thus GCC targets i686 by
default.

This fixes the problem by passing an explicit "-target=i86" to cgcc if
GCC targets x86 or "-target=x86_64" if GCC targets x86_64.

Bug #6312.
Reported-by: Ethan Jackson <ethan@nicira.com>
13 years agoINSTALL.bridge: Fix suggested ovs-brcompatd invocation.
Ben Pfaff [Fri, 8 Jul 2011 23:56:08 +0000 (16:56 -0700)]
INSTALL.bridge: Fix suggested ovs-brcompatd invocation.

ovs-brcompatd no longer accepts any non-option arguments.  Also,
-vANY:console:EMER is unnecessary, because --detach now implies disabling
logging to the console.

13 years agoovsdb: Remove useless "return;" in ovsdb_jsonrpc_session_get_status().
Ben Pfaff [Sat, 9 Jul 2011 00:10:15 +0000 (17:10 -0700)]
ovsdb: Remove useless "return;" in ovsdb_jsonrpc_session_get_status().

13 years agopackets: Remove unneeded !! from eth_addr_is_local().
Ben Pfaff [Fri, 8 Jul 2011 17:47:22 +0000 (10:47 -0700)]
packets: Remove unneeded !! from eth_addr_is_local().

There's no value in using !! on an operand of && or || as done here.

13 years agovconn-stream: Always call the stream's run function from vconn_stream_run().
Ben Pfaff [Fri, 8 Jul 2011 16:11:55 +0000 (09:11 -0700)]
vconn-stream: Always call the stream's run function from vconn_stream_run().

The stream's run function ensures that data buffered in the stream itself
gets pushed to the network.  Only the SSL stream class has such a run
function, which means that SSL stream data failed to be pushed to the
remote peer in a timely manner in some cases.

Many thanks to Alex Yip for narrowing this down.

Reported-by: Alex Yip <alex@nicira.com>
Tested-by: Alex Yip <alex@nicira.com>
Bug #6221.

13 years agoovsdb-tool: Put version number in comment when compacting or converting.
Ben Pfaff [Thu, 7 Jul 2011 19:25:04 +0000 (12:25 -0700)]
ovsdb-tool: Put version number in comment when compacting or converting.

Adding the version number can make it clear what version of OVS screwed
something up as part of an upgrade or downgrade.

13 years agoovsdb: Fix segfault in ovsdb_file_txn_row_from_json().
Ben Pfaff [Wed, 6 Jul 2011 21:22:42 +0000 (14:22 -0700)]
ovsdb: Fix segfault in ovsdb_file_txn_row_from_json().

If 'error' is nonnull then we destroy the row, so we must not try to reuse
the row immediately after that.

Support request #6155.
Repoted-by: Geoff White <gwhite@nicira.com>
13 years agoovs-ctl: Fix indentation of some headings.
Ben Pfaff [Wed, 6 Jul 2011 16:04:04 +0000 (09:04 -0700)]
ovs-ctl: Fix indentation of some headings.

Reported-by: Dan Wendlandt <dan@nicira.com>
13 years agopython: Make invalid UTF-8 sequence messages consistent across Python versions.
Ben Pfaff [Fri, 1 Jul 2011 17:11:30 +0000 (10:11 -0700)]
python: Make invalid UTF-8 sequence messages consistent across Python versions.

Given the invalid input <C0 22>, some versions of Python report <C0> as the
invalid sequence and other versions report <C0 22> as the invalid sequence.
Similarly, given input <ED 80 7F>, some report <ED 80> and others report
<ED 80 7F> as the invalid sequence.  This caused spurious test failures for
the test "no invalid UTF-8 sequences in strings - Python", so this commit
makes the messages consistent by dropping the extra trailing byte from the
message.

I first noticed the longer sequences <C0 22> and <ED 80 7F> on Ubuntu
10.04 with python version 2.6.5-0ubuntu1, but undoubtedly it exists
elsewhere also.

13 years agodebian: Remove obsolete reference to var/log/core.
Ben Pfaff [Fri, 1 Jul 2011 21:50:01 +0000 (14:50 -0700)]
debian: Remove obsolete reference to var/log/core.

Commit 14c3b136 "debian: Remove corekeeper package" removed the
var/log/core directory from the Debian packaging, but I missed this part.

13 years agoofproto: Rename "private.h" to "ofproto->provider.h".
Justin Pettit [Fri, 1 Jul 2011 21:13:56 +0000 (14:13 -0700)]
ofproto: Rename "private.h" to "ofproto->provider.h".

To be more consistent with other providers, rename "private.h" to
"ofproto-provider.h".

13 years agoPORTING: Add some minor clarifications.
Justin Pettit [Fri, 1 Jul 2011 21:07:16 +0000 (14:07 -0700)]
PORTING: Add some minor clarifications.

13 years agoovs-ofctl: Document "in_port" action in man page.
Justin Pettit [Fri, 1 Jul 2011 20:09:46 +0000 (13:09 -0700)]
ovs-ofctl: Document "in_port" action in man page.

13 years agoconnmgr: Free controller info in the same module where it's allocated.
Andrew Evans [Fri, 1 Jul 2011 01:08:59 +0000 (18:08 -0700)]
connmgr: Free controller info in the same module where it's allocated.

Make ofproto_free_ofproto_controller_info() just a passthrough to
connmgr_free_controller_info() so the allocation and freeing of memory in the
controller info structure is done in the same place.

13 years agobridge: Update controller connection status correctly.
Andrew Evans [Thu, 30 Jun 2011 22:15:46 +0000 (15:15 -0700)]
bridge: Update controller connection status correctly.

Updates to status-related columns in the Controller table can be lost if there
are multiple bridges with different sets of controllers. This commit fixes this
behavior by first accumulating status for all controllers on all bridges, then
making one pass over all rows in the Controller tables, updating the status of
each.

Bug #6185.
Reported-by: Michael Hu <mhu@nicira.com>
13 years agobridge: Fix null pointer dereference.
Ben Pfaff [Fri, 1 Jul 2011 17:13:35 +0000 (10:13 -0700)]
bridge: Fix null pointer dereference.

If the netdev_open() fails then iface->netdev will be NULL and
iface_refresh_stats() will cause a null pointer dereference in
netdev_get_stats().

Fixes a problem introduced by commit 1101a0b47 "bridge: Populate interface
status/statistics as soon as a port is added."

Reported-by: Aaron Rosen <arosen@clemson.edu>
13 years agotunneling: Force selection of an IP ID with GRE.
Jesse Gross [Thu, 30 Jun 2011 19:49:11 +0000 (12:49 -0700)]
tunneling: Force selection of an IP ID with GRE.

By default we set the DF bit on tunneled packets because we want to
get path MTU discovery from the underlying network.  In turn this
causes Linux to leave the IP ID as 0 because it believes that
fragmentation can never occur.  However, with GRE fragmentation is
still possible because we may get a large packet to be encapsulated
and let the local IP stack do fragmentation.  As long as packets are
kept in order fragments are not misassociated and everything works fine.
However, if there is reordering in the underlying network then packets
can become corrupted.  This forces selection of an IP ID for GRE packets
to avoid misassociation.

Bug #6128

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
13 years agoofp-util: Centralize decoding of OpenFlow actions.
Ben Pfaff [Thu, 30 Jun 2011 17:05:52 +0000 (10:05 -0700)]
ofp-util: Centralize decoding of OpenFlow actions.

This significantly simplifies code in ofp-print and ofproto-dpif and is
likely to simplify any new ofproto implementations whose support for
actions differs from ofproto-dpif.

13 years agoofp-util: Simplify iteration through OpenFlow actions.
Ben Pfaff [Thu, 30 Jun 2011 17:04:09 +0000 (10:04 -0700)]
ofp-util: Simplify iteration through OpenFlow actions.

The existing actions_first() and actions_next() iterator functions are not
much like the other iteration constructs found throughout the Open vSwitch
tree.  Also, they only work with actions that have already been validated,
so there are cases where they cannot be used.

This commit adds new macros for iterating through OpenFlow actions, one
for actions that have been validated and one for actions that have not, and
adapts the existing users.  The following commit will further refine action
parsing and add more users.

13 years agoofp-util: Rename OFPUTIL_INVALID to OFPUTIL_MSG_INVALID.
Ben Pfaff [Fri, 24 Jun 2011 20:58:08 +0000 (13:58 -0700)]
ofp-util: Rename OFPUTIL_INVALID to OFPUTIL_MSG_INVALID.

An upcoming commit will introduce new OPFUTIL_* constants for actions.  It
seems best to be able to visually distinguish the contants.  Most of the
existing constants start with a good prefix, but OFPUTIL_INVALID does not,
so rename it.

13 years agoclassifier: Print ARP opcode as "arp_op" instead of "opcode".
Ben Pfaff [Fri, 24 Jun 2011 21:36:24 +0000 (14:36 -0700)]
classifier: Print ARP opcode as "arp_op" instead of "opcode".

"opcode" is not very specific.  All the other ARP fields have an "arp_"
prefix, so this commit adds one for the opcode too.

13 years agoofproto: Simplify bucket finding in facet_max_idle()
Simon Horman [Thu, 30 Jun 2011 11:34:15 +0000 (20:34 +0900)]
ofproto: Simplify bucket finding in facet_max_idle()

The existing dual-loop setup is unnecessary
as the outer loop only skips to the first non-zero value
and then exits once the inner loop completes.
Zero values in the inner loop have no affect on its logic.

Signed-off-by: Simon Horman <horms@verge.net.au>
[pushed declaration of subtotal out to function scope]
Signed-off-by: Ben Pfaff <blp@nicira.com>
13 years agoofproto: Fix typo in documentation.
Ben Pfaff [Thu, 30 Jun 2011 16:23:53 +0000 (09:23 -0700)]
ofproto: Fix typo in documentation.

Using .RS instead of .RE caused the rest of the manpage to be indented two
levels too deep.

13 years agoxenserver: Restart HA daemon after force-reload-kmod.
Ben Pfaff [Wed, 29 Jun 2011 22:55:15 +0000 (15:55 -0700)]
xenserver: Restart HA daemon after force-reload-kmod.

Otherwise its heartbeats start failing after the reload and the XenServer
reboots after a minute or so.

Thanks to Justin Pettit for figuring out that this was HA-related.

Bug #5706.
Reported-by: Henrik Amren <henrik@nicira.com>
13 years agoovs-ctl: Fix ovs-dpctl invocation.
Ben Pfaff [Wed, 29 Jun 2011 22:53:45 +0000 (15:53 -0700)]
ovs-ctl: Fix ovs-dpctl invocation.

There's no $dpctl variable so this always failed.

13 years agobond: Drop packets on slaves disabled by LACP.
Ethan Jackson [Wed, 29 Jun 2011 22:39:27 +0000 (15:39 -0700)]
bond: Drop packets on slaves disabled by LACP.

Theoretically, when LACP is configured, a bond shouldn't receive
any packets on disabled slaves.  This patch enforces that
invariant.

13 years agodatapath: Support Linux 3.0
Simon Horman [Wed, 29 Jun 2011 07:24:44 +0000 (16:24 +0900)]
datapath: Support Linux 3.0

This trivially supports linux 3.0 by incrementing the version check.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Jesse Gross <jesse@nicira.com>
13 years agoutilities: Update gitignore.
Ethan Jackson [Tue, 28 Jun 2011 21:57:00 +0000 (14:57 -0700)]
utilities: Update gitignore.

13 years agoofp-parse: Fix invalid memory use.
Ethan Jackson [Tue, 28 Jun 2011 20:22:18 +0000 (13:22 -0700)]
ofp-parse: Fix invalid memory use.

In some cases, parsing of the note action could cause a realloc
which would result in the use of memory which was no longer
allocated.

13 years agobridge: Populate interface status/statistics as soon as a port is added.
Andrew Evans [Tue, 28 Jun 2011 20:17:54 +0000 (13:17 -0700)]
bridge: Populate interface status/statistics as soon as a port is added.

Currently there's a lag of up to five seconds before the status and statistics
columns in the Interface table are populated when a port is first added to a
bridge. This may confuse systems that expect those columns to be populated
right away.

Bug #6145.

13 years agobond: Drop packets on backup slaves.
Ethan Jackson [Mon, 27 Jun 2011 20:18:19 +0000 (13:18 -0700)]
bond: Drop packets on backup slaves.

Currently, OVS accepts incoming traffic on all slaves participating
in a bond.  In Linux active-backup bonding, all traffic which comes
in on backup slaves is dropped.  This patch causes OVS to do the
same.

Bug #6125.

13 years agodatapath: Rename linux-2.6 and compat-2.6 directories.
Jesse Gross [Fri, 24 Jun 2011 00:10:00 +0000 (17:10 -0700)]
datapath: Rename linux-2.6 and compat-2.6 directories.

The linux-2.6 and compat-2.6 directories apply equally to the upcoming
Linux 3.0 release, so this drops the 2.6 suffix and updates Makefiles.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
13 years agoovsdb: Synchronize comments and code in ovsdb_file_commit().
Ben Pfaff [Wed, 26 Jan 2011 00:50:44 +0000 (16:50 -0800)]
ovsdb: Synchronize comments and code in ovsdb_file_commit().

The comments and the code didn't match, so make them agree.

13 years agoDebian: set source format to 3.0 (quilt)
Simon Horman [Thu, 23 Jun 2011 19:50:09 +0000 (12:50 -0700)]
Debian: set source format to 3.0 (quilt)

This is my preferred package format as it allows changes
to be added as patches when the Debian package needs to
be updated between upstream releases.

I have been making this change in the Debian packages
so it seems as well to include it upstream.

[Update to debian/automake.mk by Ben Pfaff.]

13 years agodatapath: Add missing header.
Jesse Gross [Thu, 23 Jun 2011 19:54:48 +0000 (12:54 -0700)]
datapath: Add missing header.

The internal dev vport really needs hardirq.h but doesn't depend
directly on it and has relied on it being included from other sources.
Recent kernels broke this, so explicitly add the header.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
13 years agoovs-ofctl: Accept only valid flow_mod and flow_stats_request fields.
Ben Pfaff [Wed, 22 Jun 2011 17:37:18 +0000 (10:37 -0700)]
ovs-ofctl: Accept only valid flow_mod and flow_stats_request fields.

OpenFlow commands have several idiosyncratic fields that are used in some
cases and ignored in others.  Until now, ovs-ofctl has been lax about
allowing some of them in places where they are ignored.  This commit
tightens the checks to exactly what is allowed.

Bug #5979.
Reported-by: Reid Price <reid@nicira.com>
13 years agoovs-ctl: Use iptables -n -L instead of -S for compatibility.
Ben Pfaff [Thu, 23 Jun 2011 16:59:49 +0000 (09:59 -0700)]
ovs-ctl: Use iptables -n -L instead of -S for compatibility.

The -S command isn't present in old versions of iptables, including the
version installed on Citrix XenServer.  We have to use -n -L instead.

Bug #6071.

13 years agoovs-ctl: Fix incorrect error message.
Ben Pfaff [Thu, 23 Jun 2011 16:46:50 +0000 (09:46 -0700)]
ovs-ctl: Fix incorrect error message.

The sense of the test was wrong.

Bug #6071.

13 years agoxenserver: Update all external_ids in tap interfaces.
Ethan Jackson [Wed, 22 Jun 2011 20:42:52 +0000 (13:42 -0700)]
xenserver: Update all external_ids in tap interfaces.

Commit 400430 "xenserver: Give tap devices iface-ids." copies the
iface-id from vifs to their related tap device.  It turns out this
is not sufficient, so this commit copies all relevant external_ids
over.

Requested-by: Pankaj Thakkar <thakkar@nicira.com>
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Bug #5954.

13 years agoconfigure: Fix typo in user message.
Ben Pfaff [Wed, 22 Jun 2011 22:09:50 +0000 (15:09 -0700)]
configure: Fix typo in user message.

13 years agoconfigure: Fix --with-linux when environment contains KSRC.
Ben Pfaff [Wed, 22 Jun 2011 22:09:35 +0000 (15:09 -0700)]
configure: Fix --with-linux when environment contains KSRC.

When "configure"'s environment contains KSRC, "configure" would use it in
preference to the value specified on --with-linux.  This caused a problem
for module-assistant builds in particular.

13 years agoconfigure: Do not reject Linux 3.0 at configure time.
Ben Pfaff [Wed, 22 Jun 2011 17:15:23 +0000 (10:15 -0700)]
configure: Do not reject Linux 3.0 at configure time.

Until now, the configure script has rejected any version of Linux other
than 2.6.  In preparation for Linux 3.0, this allows newer versions also.

13 years agoconfigure: Change --with-l26 to --with-linux.
Ben Pfaff [Wed, 22 Jun 2011 18:07:33 +0000 (11:07 -0700)]
configure: Change --with-l26 to --with-linux.

Linux 3.0 will be out soon, so it seems like a good idea to reflect that
in our "configure" script options.

13 years agoconfigure: Remove "26" from Linux variable names.
Ben Pfaff [Wed, 22 Jun 2011 16:26:31 +0000 (09:26 -0700)]
configure: Remove "26" from Linux variable names.

OVS used to support Linux 2.4 and Linux 2.6, but now it only supports
Linux 2.6.  Linux 3.0 is coming up, and it's just an evolution of 2.6, so
OVS should stop referring to it as "2.6".

This takes a first step by removing "26" from internal variable names.
There should be no user-visible changes.

13 years agoconfigure: Fix typo in variable name.
Ben Pfaff [Wed, 22 Jun 2011 17:16:15 +0000 (10:16 -0700)]
configure: Fix typo in variable name.

13 years agodebian: Avoid implying that Linux 2.6.9 is supported.
Ben Pfaff [Wed, 22 Jun 2011 16:57:31 +0000 (09:57 -0700)]
debian: Avoid implying that Linux 2.6.9 is supported.

13 years agoovsdb: Fix memory leak in transaction.
Ben Pfaff [Wed, 22 Jun 2011 20:50:18 +0000 (13:50 -0700)]
ovsdb: Fix memory leak in transaction.

13 years agovswitch.xml: Use new <ref key> attribute where appropriate.
Andrew Evans [Wed, 22 Jun 2011 17:13:57 +0000 (10:13 -0700)]
vswitch.xml: Use new <ref key> attribute where appropriate.

I've looked at all the <code> tags and changed them to use
<ref column=".." key=".."/> where appropriate (I hope).

13 years agoAvoid inserting duplicate iptables rules when restarting vswitch.
Ben Pfaff [Tue, 21 Jun 2011 23:40:44 +0000 (16:40 -0700)]
Avoid inserting duplicate iptables rules when restarting vswitch.

On startup, some OVS initscripts insert an iptables rule to allow GRE
traffic (because GRE support is an important OVS feature).  I noticed that,
each time I restarted OVS, this added another GRE-related rule to the
iptables chain.  This is wasteful, because each additional rule increases
the time it takes to process a packet in the IP stack.

This commit avoids the problem by inserting an iptables rule when there
isn't already an appropriate rule.  It also avoids inserting an iptables
rule if the iptables policy is ACCEPT, meaning that packets are accepted
by default; in such a case, if the GRE packet would be dropped, it is
because the system administrator made that decision explicitly.

Signed-off-by: Ben Pfaff <blp@nicira.com>
13 years agoovs-ctl: Clean up temporary file used for force-reload-kmod.
Ben Pfaff [Tue, 21 Jun 2011 17:13:04 +0000 (10:13 -0700)]
ovs-ctl: Clean up temporary file used for force-reload-kmod.

Suggested-by: Andrew Evans <aevans@nicira.com>
13 years agoovs-ctl: Use "action" to print success or failure directly.
Ben Pfaff [Tue, 21 Jun 2011 22:12:49 +0000 (15:12 -0700)]
ovs-ctl: Use "action" to print success or failure directly.

This displays errors in whatever fashion the distro prefers, which seems
like a good idea.  We have to use a shell function so that the redirection
to a temporary file doesn't write the messages for the admin to the file
instead of the console.

13 years agodebian: Install ovs-save script into openvswitch-switch package.
Ben Pfaff [Tue, 21 Jun 2011 17:10:44 +0000 (10:10 -0700)]
debian: Install ovs-save script into openvswitch-switch package.

The force-reload-kmod command needs this.

13 years agoovsdb-idl: Plug hole in state machine.
Ben Pfaff [Mon, 20 Jun 2011 23:17:44 +0000 (16:17 -0700)]
ovsdb-idl: Plug hole in state machine.

The state machine didn't have a proper state for "not yet committed or
aborted", which meant that destroying an ovsdb_idl_txn without committing
or aborting it caused a segfault.  This fixes the problem by adding a new
state TXN_UNCOMMITTED to the state machine.

This is related to commit 79554078d "ovsdb-idl: Fix bad logic in
ovsdb_idl_txn_commit() state transitions", which fixed a related bug.

Bug #2438.

13 years agovlog: Add a little more detail to ratelimit messages
Ben Pfaff [Mon, 20 Jun 2011 22:06:33 +0000 (15:06 -0700)]
vlog: Add a little more detail to ratelimit messages

When a message is suppressed by vlog ratelimiting, and then that message
occurs again much later, sometimes we get messages like this:

   Dropped 4 log messages in last 8695 seconds due to excessive rate

It seems pretty clear in this case that in fact we just didn't get that
kind of message for most of that 8695 seconds.  This commit improves the
message by adding a little more detail, e.g.:

   Dropped 4 log messages in last 8695 seconds (most recently, 6697 seconds
   ago) due to excessive rate.

Bug #2144.

13 years agobridge: Enable system stats only if turned on in the database.
Ben Pfaff [Mon, 20 Jun 2011 21:21:06 +0000 (14:21 -0700)]
bridge: Enable system stats only if turned on in the database.

Most hypervisors have no use for this column, so populating it just wastes
CPU time.  It can still be enabled explicitly via other-config.

CC: Peter Balland <peter@nicira.com>
CC: David Tsai <dtsai@nicira.com>
Bug #5961.
NIC-397.

13 years agoovsdb-doc: Add support for references to specific keys.
Ben Pfaff [Mon, 20 Jun 2011 21:14:27 +0000 (14:14 -0700)]
ovsdb-doc: Add support for references to specific keys.

Now a specific key can be referenced with syntax like
<ref table="Bridge" column="other-config" key="datapath-id"/>.

Also fixes up an existing place that needed this feature already (and had
a typo, too).

13 years agoovsdb-idl: Improve comment.
Ben Pfaff [Mon, 20 Jun 2011 21:11:14 +0000 (14:11 -0700)]
ovsdb-idl: Improve comment.

13 years agoAdd RHEL 5/6 spec files and instructions.
Ben Pfaff [Tue, 21 Jun 2011 20:00:22 +0000 (13:00 -0700)]
Add RHEL 5/6 spec files and instructions.

13 years agoschema: Update schema version due to xenserver changes.
Ethan Jackson [Tue, 21 Jun 2011 18:24:52 +0000 (11:24 -0700)]
schema: Update schema version due to xenserver changes.

Commit 32abfca0 "xenserver: New iface-status external id." and
Commit 40043044 "xenserver: Give tap devices iface-ids.", changed
the way a controller interprets the external_ids column of the
Interface table.  This patch increments the schema version number
to reflect that change.

Requested-by: Pankaj Thakkar <thakkar@nicira.com>
13 years agoFix force-reload-kmod initscript command implementations.
Ben Pfaff [Fri, 17 Jun 2011 23:24:54 +0000 (16:24 -0700)]
Fix force-reload-kmod initscript command implementations.

I screwed this up in the recent conversion.

Signed-off-by: Ben Pfaff <blp@nicira.com>
13 years agovswitchd: Install vswitch.ovsschema to $(pkgdatadir).
Ben Pfaff [Fri, 17 Jun 2011 19:51:18 +0000 (12:51 -0700)]
vswitchd: Install vswitch.ovsschema to $(pkgdatadir).

This way, the xenserver spec file and the upcoming RHEL 5.6 spec file don't
have to install it by hand.

Signed-off-by: Ben Pfaff <blp@nicira.com>
13 years agoFix typo in "--force-corefiles" and "force-reload-kmod".
Ben Pfaff [Fri, 17 Jun 2011 20:50:28 +0000 (13:50 -0700)]
Fix typo in "--force-corefiles" and "force-reload-kmod".

Reported-by: Andrew Evans <aevans@nicira.com>
13 years agobridge: Avoid duplicate logging when netdev_get_etheraddr() fails.
Ben Pfaff [Thu, 16 Jun 2011 21:05:17 +0000 (14:05 -0700)]
bridge: Avoid duplicate logging when netdev_get_etheraddr() fails.

get_etheraddr() in netdev-linux.c logs when the Ethernet address cannot be
obtained so there is no need to log again in the caller.

Bug #5844.

13 years agoReduce log level for ENODEV errors getting Ethernet address.
Ben Pfaff [Thu, 16 Jun 2011 21:02:10 +0000 (14:02 -0700)]
Reduce log level for ENODEV errors getting Ethernet address.

Bug #5844 reports several log messages of the form:

    netdev_linux|ERR|ioctl(SIOCGIFHWADDR) on vif426.1 device failed: No
    such device

during migrations.  These are normal and unavoidable, because the vifs
disappear from the kernel before they are removed them from the OVS
database.  Reduce the log level to avoid making people worry.

Bug #5844.

13 years agoxenserver: New iface-status external id.
Ethan Jackson [Thu, 16 Jun 2011 23:37:18 +0000 (16:37 -0700)]
xenserver: New iface-status external id.

The iface-status external id indicates to a controller which device
it should manage when there are multiple choices for a given vif.
Currently, it always chooses a tap device if available, but one
could imagine more sophisticated strategies in the future.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
13 years agoxenserver: Give tap devices iface-ids.
Ethan Jackson [Thu, 16 Jun 2011 22:02:50 +0000 (15:02 -0700)]
xenserver: Give tap devices iface-ids.

In some cases XenServer will give a virtual machine a tap device in
addition to its usual vif.  These tap devices need iface-ids so
that controllers can figure out which vif they are related to.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
13 years agoxenserver: Fix use of undefined variable.
Ethan Jackson [Thu, 16 Jun 2011 22:05:22 +0000 (15:05 -0700)]
xenserver: Fix use of undefined variable.

Found with pylint.

E:167:update_in_band_mgmt: Undefined variable 'bridge'

Signed-off-by: Ethan Jackson <ethan@nicira.com>
13 years agoutilities: Install ovs-save in scripts directory.
Ben Pfaff [Thu, 16 Jun 2011 17:47:16 +0000 (10:47 -0700)]
utilities: Install ovs-save in scripts directory.

This way, the xenserver spec file and the upcoming RHEL 5.6 spec file don't
have to install it by hand.

Signed-off-by: Ben Pfaff <blp@nicira.com>
13 years agoRefactor initscripts into distro-independent and distro-specific pieces.
Ben Pfaff [Fri, 17 Jun 2011 19:24:31 +0000 (12:24 -0700)]
Refactor initscripts into distro-independent and distro-specific pieces.

This should make it easier to add OVS support to new distributions.

13 years agoovs-ofctl: Print the offending flow on parse error when reading from a file.
Andrew Evans [Fri, 17 Jun 2011 19:24:54 +0000 (12:24 -0700)]
ovs-ofctl: Print the offending flow on parse error when reading from a file.

When an error is encountered while parsing flows from a file, ovs-ofctl doesn't
print the erroneous flow, so it's not always obvious which flow is causing
the error. Print the flow before the error message to make it clear.

13 years agoxenserver: allow dom0 traffic in secure pool host when controller unavailable.
David Tsai [Fri, 17 Jun 2011 06:13:24 +0000 (23:13 -0700)]
xenserver: allow dom0 traffic in secure pool host when controller unavailable.

A pool configured for secure fail-mode can block dom0 traffic on hosts joining
the pool or if the host reboots while the controller is unavailable.  This
commit sets default flows on a host under these conditions to allow management
traffic.  Once the connection with the controller is re-established, these
default flows are replaced by the controller.

tests/interface-reconfigure.at updated by Ben Pfaff.

NIC-376.

Signed-off-by: David Tsai <dtsai@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
13 years agostream-ssl: Clear CAs for certificate verification before adding new ones.
Ben Pfaff [Wed, 15 Jun 2011 18:50:24 +0000 (11:50 -0700)]
stream-ssl: Clear CAs for certificate verification before adding new ones.

If the CA certificate changed and OVS added the new CA certificate, the
change was ineffective.  Clearing the certificate store before adding the
new CA certificate fixes the problem.

I don't know exactly why this fixes the problem, but in my testing it does.

Bug #2921.
Reported-by: Dan Wendlandt <dan@nicira.com>
Reported-by: Pierre Ettori <pettori@nicira.com>
13 years agonetdev-vport: Don't use ipsec options for either arg in config_equal_ipsec().
Justin Pettit [Fri, 17 Jun 2011 01:04:41 +0000 (18:04 -0700)]
netdev-vport: Don't use ipsec options for either arg in config_equal_ipsec().

Commit aebf423 (netdev: Add methods to do netdev-specific argument
comparisons.) added a new config_equal_ipsec() function to ignore
IPsec key options when comparing an existing netdev's options with a new
netdev.  We only ignored the options for the new netdev configuration,
which works when pulling the existing configuration from the kernel.
Unfortunately, if this is just a re-init of a netdev for which we just
created, this ignoring of the IPsec key options on the new netdev will
cause the check to fail, since the full options actually available in
both netdevs.  This commit just ignore all IPsec key options from both
netdevs.

13 years agodatapath: Use consume_skb() on non-errors.
Jesse Gross [Thu, 16 Jun 2011 22:32:26 +0000 (15:32 -0700)]
datapath: Use consume_skb() on non-errors.

It's possible to trace kfree_skb() call sites to find out where
packets are getting dropped.  Situations where kfree_skb() does
not actually indicate an error adds additional noise, so use
consume_skb() instead to avoid tracing non-errors.

Suggested-by: Ben Pfaff <blp@nicira.com>
Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
13 years agodatapath: Backport consume_skb().
Jesse Gross [Thu, 16 Jun 2011 22:14:08 +0000 (15:14 -0700)]
datapath: Backport consume_skb().

Kernels before 2.6.30 did not implement consume_skb() although RHEL
backports it.  For other kernels, this provides a backport.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
13 years agoovs-ofctl: Add 'replace-flows' command to usage.
Andrew Evans [Thu, 16 Jun 2011 00:16:51 +0000 (17:16 -0700)]
ovs-ofctl: Add 'replace-flows' command to usage.

13 years agodatapath: Further mirror checksum offloading state on old kernels.
Jesse Gross [Fri, 27 May 2011 22:53:49 +0000 (15:53 -0700)]
datapath: Further mirror checksum offloading state on old kernels.

Older kernels (those before 2.6.22) rely on implicit assumptions
to determine checksum offloading status.  These assumptions tend
to break down when doing switching because it sits in the middle
of the transmit and receive path.  Newer kernels deal with this
problem by adding more explicit information about how to checksum.
This replicates that behavior by mirroring the state from newer
kernels in private OVS storage on the kernels that lack it.  On
ingress and egress we then map that state onto the appropriate
location for the given kernel and can consistently manipulate it
within OVS.  Some of this was already done for the checksum type
but this makes it more robust and expands it to the checksum start
and offset as well.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
13 years agodatapath: Drop set_skb_csum_bits().
Jesse Gross [Wed, 8 Jun 2011 00:11:02 +0000 (17:11 -0700)]
datapath: Drop set_skb_csum_bits().

Various older kernels have had different bugs with copying checksum
state when a complete copy of a packet is made.  However, it is not
actually necessary to make these copies and all occurrences have
now been removed.  Therefore, we can also remove the workarounds to
deal with these bugs.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
13 years agotunneling: Avoid extra copying if expanding headroom.
Jesse Gross [Wed, 8 Jun 2011 00:09:35 +0000 (17:09 -0700)]
tunneling: Avoid extra copying if expanding headroom.

Currently if we need additional headroom before encapsulating a
packet a clone is made before expanding headroom or if we are
just trying to make the headroom writable then we copy both
the struct sk_buff and the paged data.  Both of these are unnecessary
and we end up freeing the original copy.  We can remove these copies
and simplify the code by just expanding the linear data area.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
13 years agodatapath: Simplify make_writable().
Jesse Gross [Tue, 7 Jun 2011 02:17:25 +0000 (19:17 -0700)]
datapath: Simplify make_writable().

The current implementation of make_writable() is both overly complex
and unnecessarily aggressive about copying data.  We can improve
performance by only making a copy of the data if someone else holds
a reference to the portion of the data that we want to modify.  This
means that if a clone is held by the TCP stack for retransmission then
we do not need to make a copy if we are changing the IP header because
it will get regenerated on retransmit anyways.  Even when it is necessary
to copy we avoid duplicating struct sk_buff.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
13 years agodatapath: Use strip_vlan() for modify_vlan_tci().
Jesse Gross [Mon, 6 Jun 2011 23:11:47 +0000 (16:11 -0700)]
datapath: Use strip_vlan() for modify_vlan_tci().

The sematics for setting a vlan tag are to modify the existing tag
if one exists.  This can be expressed as removing the existing tag
first and then adding a new one.  This simplifies the code by not
requiring two copies of the logic that manipulates non-accelerated
vlans and should not make a performance difference because the vlan
tag is contained in a single cache line.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
13 years agoovs-appctl: Fix typo in usage message.
Ben Pfaff [Thu, 16 Jun 2011 21:07:12 +0000 (14:07 -0700)]
ovs-appctl: Fix typo in usage message.

Reported-by: Reid Price <reid@nicira.com>
Bug #5978.

13 years agoxenserver: Don't delete pidfile in stop_daemon.
Ben Pfaff [Wed, 15 Jun 2011 23:39:49 +0000 (16:39 -0700)]
xenserver: Don't delete pidfile in stop_daemon.

Deleting the pidfile introduces a minor race: if some other process is
starting a daemon at the same time that the init script is stopping the
same daemon, then this could delete the new daemon's pidfile.

This is really a theoretical risk, because no one should be starting and
stopping a single daemon at the same time.

13 years agoxenserver: Don't require confirmation to restart vswitch.
Ben Pfaff [Fri, 10 Jun 2011 20:10:28 +0000 (13:10 -0700)]
xenserver: Don't require confirmation to restart vswitch.

Early development versions of ovs-vswitchd didn't always restart
successfully, so we required confirmation if "restart" was invoked
interactively.  Recent versions do just fine, so drop the confirmation
prompt.

Signed-off-by: Ben Pfaff <blp@nicira.com>
13 years agoxenserver: Use $OVS_XAPI_SYNC_PIDFILE consistently.
Ben Pfaff [Fri, 10 Jun 2011 20:08:26 +0000 (13:08 -0700)]
xenserver: Use $OVS_XAPI_SYNC_PIDFILE consistently.

This variable was used in some places but not in others.

Signed-off-by: Ben Pfaff <blp@nicira.com>
13 years agodaemon: Disable logging to console after detaching.
Ben Pfaff [Tue, 14 Jun 2011 23:08:59 +0000 (16:08 -0700)]
daemon: Disable logging to console after detaching.

When we detach, we replace stderr by /dev/null, so there's no point in
logging to the console after that.  Just turn it off.