openvswitch
15 years agodatapath: Cleanup tab/space issues in datapath
Justin Pettit [Mon, 16 Nov 2009 23:24:35 +0000 (15:24 -0800)]
datapath: Cleanup tab/space issues in datapath

15 years agovconn: Fix endian issue in unknown action type error message
Justin Pettit [Mon, 16 Nov 2009 23:26:31 +0000 (15:26 -0800)]
vconn: Fix endian issue in unknown action type error message

15 years agoovs-ofctl: Add support for transport and network modification actions
Justin Pettit [Tue, 17 Nov 2009 01:58:26 +0000 (17:58 -0800)]
ovs-ofctl: Add support for transport and network modification actions

Add support to ovs-ofctl for modifying the network source and destination
IP address with the "mod_nw_src" and "mod_nw_dst" actions, respectively.
And support modifying the TCP/UDP source and destination ports with the
"mod_tp_src" and "mod_tp_dst" actions, respectively.

15 years agoofproto: Support missing set_nw_dst and set_tp_dst translations
Justin Pettit [Tue, 17 Nov 2009 02:08:12 +0000 (18:08 -0800)]
ofproto: Support missing set_nw_dst and set_tp_dst translations

The function that translates OpenFlow actions into datapath actions was
missing definitions for OFPAT_SET_NW_DST and OFPAT_SET_TP_DST.  This
meant those actions would not occur in the datapath.

15 years agodatapath: Calculate proper checksum for set_tp_src/dst action
Justin Pettit [Tue, 17 Nov 2009 01:51:31 +0000 (17:51 -0800)]
datapath: Calculate proper checksum for set_tp_src/dst action

When the set_tp_src or set_tp_dst action is used, the calculation for
where the checksum is located was wrong.  This caused the checksum to
not be updated and packet corruption in the bad offset.

15 years agoovs-appctl: Fix shadow variable that could cause segfault
Justin Pettit [Tue, 17 Nov 2009 00:36:21 +0000 (16:36 -0800)]
ovs-appctl: Fix shadow variable that could cause segfault

The variable "socket_name" contains the name of the unix domain socket
to be used for communicating with the OVS process.  If the target does
not begin with a "/", the socket name is determined based on a pidfile.
A shadow copy of "socket_name" was kept in the block that looks at the
pidfile, which would cause the function-level one to not be set.  This
removes that shadow copy.

15 years agoofproto: Update time of super-rule to match sub-rule
Justin Pettit [Sat, 14 Nov 2009 02:53:28 +0000 (18:53 -0800)]
ofproto: Update time of super-rule to match sub-rule

Rules keep track of their creation and last used time.  When a sub-rule
is updated, it wasn't updating the time of its super-rule.  This commit
fixes that behavior.

Thanks to Jesse Gross for the help tracking this down.

15 years agoovs-openflowd: Setup default listener
Justin Pettit [Fri, 13 Nov 2009 23:51:44 +0000 (15:51 -0800)]
ovs-openflowd: Setup default listener

By default, ovs-openflowd was not listening for any management
connections.  Tools such as ovs-ofctl attempt to use a default location
based on the datapath name.  This change creates that default listener.

15 years agoofproto: Correct structure length assertion for ofp_action_vlan_pcp
Justin Pettit [Fri, 13 Nov 2009 19:15:35 +0000 (11:15 -0800)]
ofproto: Correct structure length assertion for ofp_action_vlan_pcp

15 years agoofp-print: Add missing error types
Justin Pettit [Thu, 12 Nov 2009 23:46:35 +0000 (15:46 -0800)]
ofp-print: Add missing error types

15 years agoMerge citrix branch into master.
Jesse Gross [Tue, 10 Nov 2009 23:12:01 +0000 (15:12 -0800)]
Merge citrix branch into master.

15 years agomirroring: Allow learning to be disabled on a VLAN.
Jesse Gross [Sat, 7 Nov 2009 01:13:51 +0000 (17:13 -0800)]
mirroring: Allow learning to be disabled on a VLAN.

RSPAN does not work properly unless MAC learning for the VLAN is
disabled on all switches between the origin and monitoring point.
This allows learning to be disabled on a given VLAN so vSwitch can
acts as an intermediate switch.

Feature #2136

15 years agobridge: Require learning table at all times.
Jesse Gross [Mon, 9 Nov 2009 23:26:51 +0000 (15:26 -0800)]
bridge: Require learning table at all times.

The bridge nominally allowed the MAC learning module to not be enabled
though in reality it was always used.  Tracking active MAC addresses
in the bridge is useful for other reasons besides deciding the output
port - primarily for bonding.  In addition there were several bugs
that would have been triggered had learning actually been disabled since
that code path is never tested.  This makes it explicit that the learning
table should be maintained at all times.

15 years agovconn: Clean-up "match" typo in comments
Justin Pettit [Tue, 10 Nov 2009 00:06:52 +0000 (16:06 -0800)]
vconn: Clean-up "match" typo in comments

A few comments referenced "m", when "match" was clearly meant.  This was
likely due to a quick search and replace that scooped up these comments
along with the intended code.  This cleans that up.

15 years agoovs-vsctl: Capitalize names of global constants but not variables.
Ben Pfaff [Mon, 9 Nov 2009 23:02:05 +0000 (15:02 -0800)]
ovs-vsctl: Capitalize names of global constants but not variables.

Conforms to the Google style guide for Python.

Reported by Justin.

15 years agoMake ovs-appctl easier to use and synchronize its interface with ovs-vsctl.
Ben Pfaff [Mon, 9 Nov 2009 22:46:38 +0000 (14:46 -0800)]
Make ovs-appctl easier to use and synchronize its interface with ovs-vsctl.

It is inconvenient to type the whole path to the Unix daemon socket when
using ovs-appctl.  Allow the name of the daemon to be used instead when
a pidfile exists in the default location, and contact ovs-vswitchd by
default.

Also, the various options for manipulating vlog were invented before the
general-purpose command mechanism existed.  Get rid of all of the action
options in favor of just specifying the command to be executed as
non-option arguments.

Finally, there simply wasn't much value in allowing multiple targets or
options to be specified; these variations were never used in practice.  So
simplify the interface by making it one target, one action per invocation.

Also, make ovs-vsctl use the same syntax for its --target option.

Based on work by Justin Pettit.

15 years agobonding: Ignore updelay if there is no active slave.
Jesse Gross [Wed, 4 Nov 2009 21:48:41 +0000 (13:48 -0800)]
bonding: Ignore updelay if there is no active slave.

If all slaves on a bond are down but some are waiting for an updelay,
enable the slave with the shortest amount of delay remaining.  This
would already occur if all other slaves were disabled at the time the
delay was to begin but not if a delay was already in progress.  This
also immediately sends learning packets out in both situations, which
prevents incoming packets to disabled slaves from being blackholed.

CC: Danny Wannagat <Danny.Wannagat@eu.citrix.com>
15 years agoFix incorrect printf format specifiers.
Ben Pfaff [Fri, 6 Nov 2009 18:43:50 +0000 (10:43 -0800)]
Fix incorrect printf format specifiers.

GCC reported these during a 64-bit build.

15 years agobacktrace: Avoid GCC warning on x86-64.
Ben Pfaff [Fri, 6 Nov 2009 18:25:50 +0000 (10:25 -0800)]
backtrace: Avoid GCC warning on x86-64.

The portable implementation of stack_low(), which before this commit is
used on x86-64, provokes a warning from GCC that cannot be disabled.  We
already have an i386-specific implementation that does not warn; this
commit adds a corresponding implementation for x86-64 to avoid the warning
there too.

15 years agobacktrace: Suppress dumb GCC warning on x86-64.
Ben Pfaff [Fri, 6 Nov 2009 18:22:55 +0000 (10:22 -0800)]
backtrace: Suppress dumb GCC warning on x86-64.

Without this change GCC warns "use of assignment suppression and length
modifier together in scanf format", which doesn't actually point out any
real problem (and why would it?  Google turns up nothing interesting).

15 years agoudatapath: Implement ZERO_TCP_FLAGS option.
Jesse Gross [Fri, 6 Nov 2009 22:18:58 +0000 (14:18 -0800)]
udatapath: Implement ZERO_TCP_FLAGS option.

An option to zero the TCP flags when querying flow stats was added
to the kernel datapath to support NetFlow active timeouts.  This
adds that same support to the user datapath.

15 years agonetflow: Only query stats of installed flows.
Jesse Gross [Fri, 6 Nov 2009 21:26:42 +0000 (13:26 -0800)]
netflow: Only query stats of installed flows.

NetFlow active timeouts was querying the stats of all exact match
flows that had reached a certain age including those that could
not be installed.  This was not harmful but it was wasteful and
produced log spew.  This changes it to only query the flows that
are actually installed.

Bug #2252

15 years agodatapath: Allow TCP flags to be cleared.
Jesse Gross [Wed, 28 Oct 2009 21:36:52 +0000 (14:36 -0700)]
datapath: Allow TCP flags to be cleared.

When querying flow stats allow the TCP flags to be reset.  Since
the datapath ORs together all flags that have previously been
seen it is otherwise impossible to determine the set of flags from
after a particular time.

15 years agoRevert "ovs-ofctl: Fix use-after-free error in del-flows command."
Jean Tourrilhes [Thu, 5 Nov 2009 07:40:18 +0000 (23:40 -0800)]
Revert "ovs-ofctl: Fix use-after-free error in del-flows command."

This reverts commit cae7a4b90a55cbfd4cfd23c06f9f09cd429ab4c0.

This commit forced the user to specify an action when deleting a flow,
which is not desirable.  The change was not actually needed, as the
buffer is never passed to str_to_flow() in the original code.

15 years agoovs-ofctl: Fix use-after-free error in del-flows command.
Jean Tourrilhes [Wed, 4 Nov 2009 21:21:07 +0000 (13:21 -0800)]
ovs-ofctl: Fix use-after-free error in del-flows command.

15 years agoxenserver: Fix issue with deleting network UUID on VLAN destruction
Justin Pettit [Wed, 4 Nov 2009 05:19:47 +0000 (21:19 -0800)]
xenserver: Fix issue with deleting network UUID on VLAN destruction

In XenServer, a VLAN is considered an additional network with its own
UUID.  The interface-reconfigure script properly adds this network UUID
to the configuration script, but commit 774428 removed the code that
would remove this information on VLAN destruction.  Ian Campbell was the
author of that commit and felt that reverting this part was safe.

Bug #1973

15 years agoMention running boot.sh when pulling sources from Git
Justin Pettit [Tue, 3 Nov 2009 21:56:46 +0000 (13:56 -0800)]
Mention running boot.sh when pulling sources from Git

When the sources are pulled directly from Git, it is necessary to run
"./boot.sh" before "./configure" can be run.  This commit documents that
useful bit of information.

15 years agonetflow: Implement NetFlow active timeouts.
Jesse Gross [Tue, 3 Nov 2009 20:25:29 +0000 (12:25 -0800)]
netflow: Implement NetFlow active timeouts.

Provides a NetFlow expiration message at regular intervals if the
key netflow.<br>.active-timeout is set.

Feature #1317

15 years agodatapath: Allow TCP flags to be cleared.
Jesse Gross [Wed, 28 Oct 2009 21:36:52 +0000 (14:36 -0700)]
datapath: Allow TCP flags to be cleared.

When querying flow stats allow the TCP flags to be reset.  Since
the datapath ORs together all flags that have previously been
seen it is otherwise impossible to determine the set of flags from
after a particular time.

15 years agoofproto: Only zero stats for non exact-match sub-rules.
Jesse Gross [Wed, 28 Oct 2009 23:05:57 +0000 (16:05 -0700)]
ofproto: Only zero stats for non exact-match sub-rules.

We zero the stats on sub-rules after they expire to prevent them
from being counted twice in their super-rule if they are reinstalled.
However, for exact-match sub-rules this means that the OpenFlow stats
are always zero.  This changes that to only zero the stats for
non exact match rules.

Bug #1911

15 years agodump-vif-details: Safeguard 'finally' code
Reid Price [Fri, 30 Oct 2009 19:39:14 +0000 (12:39 -0700)]
dump-vif-details:  Safeguard 'finally' code

This makes several minor streamlining changes to dump-vif-details,
and moves the try statement in dump_vif_info to exclude session
initialization, so that finally will not obscure the original exception
with a new exception related to the session variable when logins fail.

15 years agoopenflow: Fix endian issues in flow expiration messages
Justin Pettit [Thu, 29 Oct 2009 00:15:57 +0000 (17:15 -0700)]
openflow: Fix endian issues in flow expiration messages

A few of the fields in the OpenFlow flow expiration message were being
sent in host-byte order.  This properly converts them to network.

Thanks to David Erickson for catching this!

15 years agoxenserver: Print program name on error in dump-vif-details
Justin Pettit [Wed, 28 Oct 2009 19:01:36 +0000 (12:01 -0700)]
xenserver: Print program name on error in dump-vif-details

15 years agonetflow: Populate NetFlow output interface field.
Jesse Gross [Fri, 23 Oct 2009 00:51:05 +0000 (17:51 -0700)]
netflow: Populate NetFlow output interface field.

Previously NetFlow expiration messages always contained 0 as the
output interface index.  This changes that to report the OpenFlow
interface instead.

Feature #1202

15 years agoSpell verb form of "set up" correctly throughout the tree.
Ben Pfaff [Mon, 26 Oct 2009 21:41:32 +0000 (14:41 -0700)]
Spell verb form of "set up" correctly throughout the tree.

15 years agoflow: Differentiate between "port" when printing flows
Justin Pettit [Mon, 26 Oct 2009 19:02:02 +0000 (12:02 -0700)]
flow: Differentiate between "port" when printing flows

When printing a flow, there were two references to "port": one the
interface the packet arrived on and the other the L4 ports.  This could
be a bit confusing to new users looking at the output of a command such
as "ovs-ofctl dump-flows".  This commit changes the incoming interface
field from "port" to "in_port".

15 years agoovs-vswitchd: Document "bridge/dump-flows" management command
Justin Pettit [Sat, 24 Oct 2009 22:51:31 +0000 (15:51 -0700)]
ovs-vswitchd: Document "bridge/dump-flows" management command

15 years agobridge: Allow flows based on ARP opcode to be installed.
Jesse Gross [Fri, 14 Aug 2009 21:23:44 +0000 (14:23 -0700)]
bridge: Allow flows based on ARP opcode to be installed.

Since we can now distinguish between flows with different ARP opcodes
in the kernel, allow these flows to be installed.

15 years agoMerge "citrix" into "master".
Ben Pfaff [Fri, 23 Oct 2009 00:43:28 +0000 (17:43 -0700)]
Merge "citrix" into "master".

This merge took a little bit of care due to two issues:

    - Crossport of "interface-reconfigure" fixes from master back to
      citrix that had happened and needed to be canceled out of the merge.

    - New script "refresh-xs-network-uuids" added on citrix branch that
      needed to be moved from /root/vswitch/scripts to
      /usr/share/vswitch/scripts.

15 years agobridge: Eject NORMAL flows without a learning entry from datapath.
Jesse Gross [Thu, 22 Oct 2009 18:40:04 +0000 (11:40 -0700)]
bridge: Eject NORMAL flows without a learning entry from datapath.

When revalidating NORMAL flows we consult the learning table, which
could be empty if a packet hasn't come to userspace in a while or we
just did a bridge flush.  If there is no learning entry then existing
flows will begin flooding packets until a new flow is setup.  The
problem is worse with bonding because we can receive one of the flooded
packets back on a bond slave and learn that port, causing us to send
traffic to the wrong location.

15 years agobonding: Balance bond slaves based on ratio.
Jesse Gross [Wed, 21 Oct 2009 02:26:55 +0000 (19:26 -0700)]
bonding: Balance bond slaves based on ratio.

Previously when deciding whether to migrate a hash between slaves
we would never move it if it would cause more load on the new slave
than the old.  This could lead to a situation where the slaves would
be imbalanced but no migration would occur since it would flip the
load.  This will do the migration if it will decrease the ratio.

Bug NIC-49

15 years agobonding: Drop unicast packets which have a different learned port.
Jesse Gross [Mon, 12 Oct 2009 20:09:51 +0000 (13:09 -0700)]
bonding: Drop unicast packets which have a different learned port.

Drop packets received on a bond port if we have learned a different
source port for that MAC.  We were already doing this for multicast
packets but extend the logic to unicast packets as well since the
same situation can occur if the connected switch has not learned the
MAC address and is flooding.  Otherwise vSwitch will learn the bond
port as the source of that MAC.

Bug #2167

15 years agoxen: Restore state files for VIF VLANs
Jesse Gross [Tue, 20 Oct 2009 03:14:31 +0000 (20:14 -0700)]
xen: Restore state files for VIF VLANs

A change on master to use ovs-vsctl instead of state files for VLANs
was ported to the citrix branch, which does not have ovs-vsctl.  The
interface reconfigure portion, which does not store the state files
was ported but the vif-hotput script portion was not.  This restores
interface reconfigure to again save the state files.

Bug #2187

15 years agoxen: Correctly write VLAN key in config file.
Jesse Gross [Tue, 20 Oct 2009 01:40:11 +0000 (18:40 -0700)]
xen: Correctly write VLAN key in config file.

When adding the VLAN key the name of the vif was from a variable in
use on only the xs5.7 branch.  This uses the correct variable name
for the master branch

15 years agoovs-vsctl: Add tests that adding duplicate bridges or ports fails.
Ben Pfaff [Fri, 16 Oct 2009 16:49:59 +0000 (09:49 -0700)]
ovs-vsctl: Add tests that adding duplicate bridges or ports fails.

Suggested-by: Reid Price <reid@nicira.com>
15 years agoovs-vsctl: Add the ability to perform multiple operations in a single run.
Ben Pfaff [Fri, 16 Oct 2009 16:42:21 +0000 (09:42 -0700)]
ovs-vsctl: Add the ability to perform multiple operations in a single run.

CC: Ian Campbell <Ian.Campbell@citrix.com>
15 years agoovs-vsctl: Refactor internals to increase flexibility.
Ben Pfaff [Fri, 16 Oct 2009 16:36:25 +0000 (09:36 -0700)]
ovs-vsctl: Refactor internals to increase flexibility.

This changes the interface of each of the command implementations, making
them take the configuration as an argument and return the output.  This
will make it easier to support alternate output formats and to execute more
than one command per invocation (both happening in upcoming commits).

15 years agoovs-vsctl: Allow bridge name to be omitted from del-port command.
Ben Pfaff [Thu, 15 Oct 2009 19:47:05 +0000 (12:47 -0700)]
ovs-vsctl: Allow bridge name to be omitted from del-port command.

The 'bridge' argument to ovs-vsctl's del-port command is only supplied as
a form of error checking.  Sometimes the name of the bridge isn't readily
available, so for such situations this commit allows the user to omit the
name of the bridge entirely.

CC: Ian Campbell <Ian.Campbell@citrix.com>
15 years agoovs-vsctl: Log changes to configuration file to syslog.
Ben Pfaff [Fri, 16 Oct 2009 16:26:20 +0000 (09:26 -0700)]
ovs-vsctl: Log changes to configuration file to syslog.

This feature, which has been in ovs-cfg-mod for some time as the "-c"
option, makes it much easier to see what changes ovs-vsctl actually makes
to ovs-vswitchd.conf.

CC: <Ian.Campbell@citrix.com>
15 years agoMake sure that time advances in a daemon between calls to time_refresh().
Ben Pfaff [Thu, 15 Oct 2009 17:39:10 +0000 (10:39 -0700)]
Make sure that time advances in a daemon between calls to time_refresh().

Open vSwitch uses an interval timer signal to tell it that its cached idea
of the current time has expired.  However, this didn't work in a daemon
detached from the foreground session (invoked with --detach) because a
child created with fork() does not inherit the parent's interval timer and
we did not re-set it after calling fork().

This commit fixes the problem by setting the interval timer back up after
calling fork() from daemonize().

This fix is based on code inspection (which was then verified to be correct
through testing).  It may not fix any actual problems in practice, because
time_refresh() is called every time through the poll loop, and the poll
loop typically runs more quickly than the periodic timer fires (1 ms or so
average in ovs-vswitchd, vs. 100 ms timer interval).

15 years agodatapath: Fix build with Linux 2.6.31.
Ben Pfaff [Mon, 12 Oct 2009 18:13:55 +0000 (11:13 -0700)]
datapath: Fix build with Linux 2.6.31.

Linux 2.6.31 breaks the network device functions pointers into a separate
"netdev_ops" structure, so we need to handle this case now too.

15 years agodatapath: Ignore return value from rtnl_notify().
Ben Pfaff [Wed, 24 Jun 2009 21:58:57 +0000 (14:58 -0700)]
datapath: Ignore return value from rtnl_notify().

In Linux 2.6.30, the rtnl_notify() return type was changed from int to
void along with the following commit message:

    This patch also modifies the rtnetlink code to ignore the return
    value of rtnl_notify() in all callers. The function rtnl_notify()
    (before this patch) returned the error of the unicast notification
    which makes rtnl_set_sk_err() reports errors to all listeners. This
    is not of any help since the origin of the change (the socket that
    requested the echoing) notices the ENOBUFS error if the notification
    fails and should resync itself.

Thus there's no point in checking the return value, even in older versions
of the kernel, and so this commit changes our code to ignore it, even
on older kernel versions.  We also update the rtnl_notify() wrapper macros
to make the return type void on older kernel versions.

This has not been tested, just built.

Thanks to Mikio for spurring me to try building with Linux 2.6.29 and
2.6.30.

15 years agodatapath: Fix warning on 64-bit builds.
Ben Pfaff [Mon, 12 Oct 2009 17:34:38 +0000 (10:34 -0700)]
datapath: Fix warning on 64-bit builds.

15 years agodatapath: Factor out code for getting and setting listen mask.
Ben Pfaff [Mon, 12 Oct 2009 17:34:10 +0000 (10:34 -0700)]
datapath: Factor out code for getting and setting listen mask.

This fixes GCC warnings on 64-bit architectures caused by storing an "int"
in the "void *" f->private_data field.

15 years agovlan: Compare vlan tags before implicit tagging when RSPANing.
Jesse Gross [Thu, 8 Oct 2009 19:31:03 +0000 (12:31 -0700)]
vlan: Compare vlan tags before implicit tagging when RSPANing.

We check that a packet is not sent out the on the in port on the
same VLAN when performing RSPAN.  However, we were comparing the
vlan tag from a packet after implicit tagging with a tag from
before implicit tagging.  This ensures that we always compare them
before such tagging.

15 years agodatapath: Fix build with Centos 5.3 kernel.
Ben Pfaff [Fri, 9 Oct 2009 16:41:29 +0000 (09:41 -0700)]
datapath: Fix build with Centos 5.3 kernel.

Centos 5.3 backports more functions from later kernel versions to 2.6.18,
so the kernel version number is no longer a reliable way to check for these
functions.  Thus, add a "configure" test for them.

Reported-by: Paulo Cravero <pcravero@as2594.net>
15 years agodatapath: Add cpumask.h header wrapper to distribution.
Ben Pfaff [Fri, 9 Oct 2009 16:44:47 +0000 (09:44 -0700)]
datapath: Add cpumask.h header wrapper to distribution.

This header was included in the Git tree but we failed to distribute it
as part of the tarball.

This problem was found by inspection.  I am not aware of an actual problem
this fixes.

15 years agoxenserver: Crossport "master" interface-reconfigure to "citrix".
Ben Pfaff [Wed, 7 Oct 2009 19:07:27 +0000 (12:07 -0700)]
xenserver: Crossport "master" interface-reconfigure to "citrix".

This commit copies the interface-reconfigure script from "master" into
"citrix" and fixes up a few incompatibilities: the location of ovs-cfg-mod,
which in master is in /usr/bin and in citrix is in /root/vswitch/bin, and
the RPM spec file fragments needed to initialize the database cache.

The purpose of this commit is to obtain the bug fixes that have been
applied (mainly by Ian Campbell) to "master" but which are not in "citrix".

It's difficult to understand the changes from this commit alone.  It is
more meaningful to compare the resulting files against those currently
on the master branch.

15 years agoofproto: Make current packet counts more accurate.
Jesse Gross [Fri, 14 Aug 2009 20:47:28 +0000 (13:47 -0700)]
ofproto: Make current packet counts more accurate.

When the stats for a currently active flow are requested this
ensures that the packets not handled by the kernel are counted
immediately.  Before, these packets would only be counted once
the kernel flow expired and the counts were combined.

15 years agobonding: Compare ports, not interfaces, for loop checks.
Jesse Gross [Thu, 8 Oct 2009 19:20:10 +0000 (12:20 -0700)]
bonding: Compare ports, not interfaces, for loop checks.

In order to avoid loops we check that the input and output ports
are not equal.  When selecting mirror outputs for RSPAN we were
checking interfaces instead of ports.  This lead to loops when
using RSPAN with bonded ports.

Bug #2118

15 years agoovs-ofctl: Fix use-after-free error in mod-flows command.
Jean Tourrilhes [Thu, 8 Oct 2009 17:39:49 +0000 (10:39 -0700)]
ovs-ofctl: Fix use-after-free error in mod-flows command.

15 years agodatapath: Fix validation of ODPAT_SET_VLAN_PCP actions.
Jean Tourrilhes [Thu, 8 Oct 2009 17:37:43 +0000 (10:37 -0700)]
datapath: Fix validation of ODPAT_SET_VLAN_PCP actions.

The VLAN PCP mask is in the rightmost bits of the vlan_pcp member but we
were checking for it in its position in the VLAN tag field instead.

Slightly modified from Jean's original patch by adding and using the
VLAN_PCP_SHIFT macro.

15 years agoxenserver: Fix ovs-vsctl in built RPM by defining /etc as sysconfdir.
Ben Pfaff [Wed, 7 Oct 2009 17:19:31 +0000 (10:19 -0700)]
xenserver: Fix ovs-vsctl in built RPM by defining /etc as sysconfdir.

By default, the "configure" script picks a sysconfdir of $prefix/etc,
which works out to /usr/etc in our case.  That's wrong, of course--it
should be /etc--but we didn't notice until now because sysconfdir was
only used in ovs-vsctl, which in turn wasn't used at all on a XenServer
system until recently.

This bug is present on all branches, but it is only potentially visible
on "master" and "xs5.7", since only those have ovs-vsctl.  It is only
actually visible on "xs5.7", since that is the only branch where the
system uses ovs-vsctl itself (from /etc/xensource/scripts/vif), but this
is being committed to master in case we start using ovs-vsctl there too.

Reported-by: Henrik Amren <henrik@nicira.com>
15 years agoMerge commit 'v0.90.6' into citrix
Justin Pettit [Tue, 6 Oct 2009 21:33:31 +0000 (14:33 -0700)]
Merge commit 'v0.90.6' into citrix

15 years agoPrepare for v0.90.6 release.
Justin Pettit [Tue, 6 Oct 2009 21:25:36 +0000 (14:25 -0700)]
Prepare for v0.90.6 release.

15 years agoxenserver: Fix dbcache location for xen-bugtool
Justin Pettit [Tue, 6 Oct 2009 18:38:57 +0000 (11:38 -0700)]
xenserver: Fix dbcache location for xen-bugtool

I forgot to add my local changes to xen-bugtool that reflected the new
location for dbcache.

15 years agoMerge commit 'origin/citrix'
Justin Pettit [Tue, 6 Oct 2009 18:08:31 +0000 (11:08 -0700)]
Merge commit 'origin/citrix'

15 years agoxenserver: Include dbcache in xen-bugtool output
Justin Pettit [Tue, 6 Oct 2009 00:32:36 +0000 (17:32 -0700)]
xenserver: Include dbcache in xen-bugtool output

It has been pointed out that it would be useful to have a copy of the
dbcache file in the bug report.  This adds that.

Bug #2106

15 years agonetflow: Increase maximum number of NetFlow records to 30.
Jesse Gross [Mon, 5 Oct 2009 20:25:19 +0000 (13:25 -0700)]
netflow: Increase maximum number of NetFlow records to 30.

NetFlow v5 allows up to 30 records per packet but we were incorrectly
limiting to 29.  This corrects that and also uses the count of the
number of records in the header rather than the packet size since
it is easier to reason about.

Bug #2103

15 years agoMerge "citrix" branch into "master.
Ben Pfaff [Mon, 5 Oct 2009 17:29:07 +0000 (10:29 -0700)]
Merge "citrix" branch into "master.

15 years agobonding: Update the link status on the bond fake interface.
Jesse Gross [Sat, 3 Oct 2009 01:08:05 +0000 (18:08 -0700)]
bonding: Update the link status on the bond fake interface.

Brings the fake bond interface up and down to match our notion of
whether the bond is currently active.  This solves an issue where
XenCenter would always show the bond as disconnected.

Bug #1703

15 years agoxenserver: use ovs-vsctl for VIF VLANs instead of separate state files
Ian Campbell [Mon, 5 Oct 2009 15:32:53 +0000 (16:32 +0100)]
xenserver: use ovs-vsctl for VIF VLANs instead of separate state files

ovs-vsctl did not exist when this code was originally written, but it
provides exactly what is needed to get rid of those separate state
files.

The vif hotplug script diff is against the xs5.7 branch but I think is
applicable to master and/or citrix with just context changes.

I was thinking of using ovs-vsctl exclusively for configuration
modifications from the vif hotplug script but that would need a
mechanism to pass the additional vif details to ovs-vsctl add-port as
well as perhaps making the bridge optional to del-port. The other option
would be to use the --no-reload option and split the config mods into
two parts, but I don't like that idea much.

15 years agoxenserver: Include bridge.*.xs-network-uuids for all networks
Ian Campbell [Mon, 5 Oct 2009 15:27:01 +0000 (16:27 +0100)]
xenserver: Include bridge.*.xs-network-uuids for all networks

Previously I advised that only networks which were currently attached to
the host be listed in /etc/ovs-vswitchd.conf. However I've just realised
that this interacts badly with the slightly ugly special case used for
PIF.currently-attached when reading from dbcache instead of talking to
Xapi. This bites on boot when /etc/init.d/management-interface tries to
plug a selection of PIFs which are deemed to be somehow required by
xapi. (not helped by a bug in XenServer 5.7.0 which can cause this list
to be larger than it should be and not internally consistent).

For now I think it prudent to simply list all networks which could
potentially be attached to a given datapath, until I can figure out what
the sane fix is on the XenServer end.

(I think there are two options for a proper fix, either inspect the
current state of the network devices or assume dbcache represents the
desired final state after devices are plugged on boot. I'm leaning
towards the later since the dbcache should indicate the set of PIFs
which were attached on shutdown, which xapi will likely be trying to
replug on boot... Needs more thought though).

15 years agovswitch: Allow user to set Ethernet address of any internal interface.
Ben Pfaff [Fri, 2 Oct 2009 20:29:01 +0000 (13:29 -0700)]
vswitch: Allow user to set Ethernet address of any internal interface.

Until now the vswitch configuration file has allowed the user to configure
the MAC address on bridge local ports only.  This commit adds the ability
to configure them on any internal interface.

It would be logical to extend this to any bridge port, period, but many
network devices must be brought down before their Ethernet addresses may be
changed.  Bringing a network interface down and then back up can reset a
lot of state, so as we don't actually need the ability to change any bridge
port's MAC address yet this commit does not implement it.

CC: Ian Campbell <Ian.Campbell@citrix.com>
15 years agovswitch: Factor out detection of internal interfaces into a new function.
Ben Pfaff [Fri, 2 Oct 2009 17:41:05 +0000 (10:41 -0700)]
vswitch: Factor out detection of internal interfaces into a new function.

The following commit needs to use this same logic, so break it out into
a function to avoid redundancy.

15 years agosecchan: Clarify logic in add_output_action().
Ben Pfaff [Fri, 2 Oct 2009 23:01:36 +0000 (16:01 -0700)]
secchan: Clarify logic in add_output_action().

The code and the logic here was too terse for anyone to reasonably
understand it.  Add some comments.

This should not cause any behavioral change.

CC: Jean Tourrilhes <jt@hpl.hp.com>
15 years agodpif-linux: Clarify bad device warning message
Justin Pettit [Fri, 2 Oct 2009 23:59:28 +0000 (16:59 -0700)]
dpif-linux: Clarify bad device warning message

The message warning that the device number is wrong for the Open vSwitch
devices could have been clearer.

Thanks to Ben Pfaff for the suggested wording.

15 years agodpif-linux: Fail earlier if OVS kernel module isn't loaded
Justin Pettit [Fri, 2 Oct 2009 22:20:12 +0000 (15:20 -0700)]
dpif-linux: Fail earlier if OVS kernel module isn't loaded

When the kernel module isn't loaded, the bridge tries to open all the
possible minor devices, regardless.  This change first checks that there
is a major device number for Open vSwitch and only then tries to open the
minor devices.

This change also removes the assumption that there's a default Open vSwitch
major device number, since the kernel module always attempts to get a
dynamic one.  Maybe one day we'll have one...

Bug #1179

15 years agoxenserver: Rework interface-reconfigure.
Ian Campbell [Fri, 2 Oct 2009 18:35:42 +0000 (11:35 -0700)]
xenserver: Rework interface-reconfigure.

Substantially reworks interface-reconfigure, with the following fixes:

      * Create and use ifcfg files only for ipdev, use vswitch
        configuration for topology setup.

      * Take care over moving from bond to slave and back to tear down
        any residual sibling devices

      * Take care to leave datapath present when manipulating VLANs to
        avoid interrupting traffic on the slave PIF as well as other
        VLANs.

      * Lots of minor stuff

15 years agoxenserver: Clear vlan.* from /etc/ovs-vswitchd.conf on boot too
Ian Campbell [Fri, 2 Oct 2009 13:43:20 +0000 (14:43 +0100)]
xenserver: Clear vlan.* from /etc/ovs-vswitchd.conf on boot too

15 years agoCorrect whitespace in xenserver/etc_init.d_vswitch
Ian Campbell [Fri, 2 Oct 2009 18:08:34 +0000 (11:08 -0700)]
Correct whitespace in xenserver/etc_init.d_vswitch

15 years agonetdev-linux: Improve netdev_linux_set_etheraddr().
Ben Pfaff [Thu, 1 Oct 2009 20:27:47 +0000 (13:27 -0700)]
netdev-linux: Improve netdev_linux_set_etheraddr().

Fixes a bug whereby netdev_linux_set_etheraddr() would update the cached
Ethernet address but not mark it valid.  (This potentially wasted a system
call later but wasn't harmful.)

As an added optimization, don't set the Ethernet address at all if the
new address is the same as the current address.

15 years agonetdev-linux: Return correct error codes on receive.
Jesse Gross [Fri, 2 Oct 2009 17:31:20 +0000 (10:31 -0700)]
netdev-linux: Return correct error codes on receive.

netdev_linux_receive was returning positive error codes while the
interface specifies that it should be returning negative errors.
This difference causes a huge increase in (non-existant) packet
processing with the userspace datapath.

15 years agoxenserver: Clear stale configuration keys on boot, but not on later starts
Ben Pfaff [Thu, 1 Oct 2009 16:52:27 +0000 (09:52 -0700)]
xenserver: Clear stale configuration keys on boot, but not on later starts

15 years agoxenserver: Clear stale configuration keys on boot
Ian Campbell [Wed, 30 Sep 2009 10:57:23 +0000 (11:57 +0100)]
xenserver: Clear stale configuration keys on boot

15 years agoxenserver: Clear stale configuration keys on boot, but not on later starts
Ben Pfaff [Thu, 1 Oct 2009 16:52:27 +0000 (09:52 -0700)]
xenserver: Clear stale configuration keys on boot, but not on later starts

15 years agoxenserver: Clear stale configuration keys on boot
Ian Campbell [Wed, 30 Sep 2009 10:57:23 +0000 (11:57 +0100)]
xenserver: Clear stale configuration keys on boot

15 years agonetdev: Add classes which don't require initialization.
Jesse Gross [Tue, 4 Aug 2009 00:04:43 +0000 (17:04 -0700)]
netdev: Add classes which don't require initialization.

If a class requires does not require initialization, still add it
to the list of netdev classes.

15 years agonetdev-linux: Fix tap device using wrong FD.
Jesse Gross [Mon, 3 Aug 2009 23:11:43 +0000 (16:11 -0700)]
netdev-linux: Fix tap device using wrong FD.

Tap devices were doing ioctls on the AF_INET socket, instead of the
FD opened on the tap device.

15 years agonetdev: Fix memory leak in netdev_open.
Jesse Gross [Mon, 3 Aug 2009 22:19:39 +0000 (15:19 -0700)]
netdev: Fix memory leak in netdev_open.

The name of the netdev is copied but is never freed.

15 years agonetdev: Fix typo in netdev provider enumerate.
Jesse Gross [Fri, 31 Jul 2009 22:43:08 +0000 (15:43 -0700)]
netdev: Fix typo in netdev provider enumerate.

15 years agoxenserver: In xsconsole plugin, log via XSConsoleLog module.
Ben Pfaff [Wed, 30 Sep 2009 19:24:46 +0000 (12:24 -0700)]
xenserver: In xsconsole plugin, log via XSConsoleLog module.

Part of a patch from Ian Campbell <ian.campbell@citrix.com>.

15 years agoDrop separate vswitch-cfg-update.log.
Ian Campbell [Wed, 30 Sep 2009 10:57:21 +0000 (11:57 +0100)]
Drop separate vswitch-cfg-update.log.

xapi will log any error returned by the plugin.

15 years agoDocument issues with RSPAN and MAC learning.
Jesse Gross [Tue, 29 Sep 2009 18:02:04 +0000 (11:02 -0700)]
Document issues with RSPAN and MAC learning.

Bug #2118

15 years agoxenserver: Add script refresh-xs-network-uuids.
Ben Pfaff [Mon, 28 Sep 2009 23:03:49 +0000 (16:03 -0700)]
xenserver: Add script refresh-xs-network-uuids.

On pool join, the bridge.<bridge>.xs-network-uuids key is not updated
properly for the primary management interface.  We don't have a proper
fix for this problem yet, and probably won't ever have one for XenServer
5.5.0, so this commit adds a script that works around the problem.
Running the script is a shortcut for rebooting the XenServer host,
which should also solve the problem.

Bug #2097.

15 years agoDocument per-port round-robin during controller rate limiting.
Ben Pfaff [Wed, 23 Sep 2009 19:39:58 +0000 (12:39 -0700)]
Document per-port round-robin during controller rate limiting.

CC: Peter Balland <peter@nicira.com>
Bug #2072.

15 years agodebian: Make dependencies on openvswitch packages specify exact version.
Ben Pfaff [Mon, 28 Sep 2009 17:15:22 +0000 (10:15 -0700)]
debian: Make dependencies on openvswitch packages specify exact version.

NOX packages depend on a particular version of openvswitch-pki, which
depends on openvswitch-common without specifying a version.  This meant
that the installed versions of openvswitch-pki and openvswitch-common
could easily get out of sync.  This commit makes all of the dependencies
among openvswitch packages specify an explicit version, which should fix
this problem.

CC: Dan Wendlandt <dan@nicira.com>
15 years agoshash: Fix memory leak in shash_destroy().
Ben Pfaff [Wed, 23 Sep 2009 22:33:00 +0000 (15:33 -0700)]
shash: Fix memory leak in shash_destroy().

hmap_destroy() has to be called so that sh->map.buckets gets freed.

15 years agoMerge citrix branch into master.
Ben Pfaff [Tue, 22 Sep 2009 17:17:44 +0000 (10:17 -0700)]
Merge citrix branch into master.

15 years agobrcompatd: Delete VLAN tags only for the correct port in del_port().
Ben Pfaff [Mon, 21 Sep 2009 22:34:27 +0000 (15:34 -0700)]
brcompatd: Delete VLAN tags only for the correct port in del_port().

vlan.%s.* will match e.g. eth0.123 if the %s expands to eth0.  We only
want it to match eth0 in that case.

This is based on code inspection.  It may or may not fix a real problem.