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
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.
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.
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.
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>
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.
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).
We want ovsdb_create() (and thus, the open database) to receive the file
only if it is a read-write database. If it is read-only, then there is
no need to keep the file around, since we will never read or write it
after opening the database.
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.
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
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.
The previous code checked only that JSON objects have members with the
same names. This commit makes json_equal() also check that like-named
members have the same values.
This reverts commit cae7a4b90a.
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.
This code is heavily based on the vconn code. Eventually we should make
the stream-based vconns (currently that's all of them) a wrapper around
streams, but I haven't done that yet.
SSL is not implemented yet.
Until now, tcp_open_active() and tcp_open_passive() have only been used
in situations where there is a reasonable default port, e.g. OFP_TCP_PORT.
But now, in the upcoming JSON-RPC library and underlying stream library,
there is no reasonable default, so enhance these functions so that they
can require the user to specify a port explicitly.
Usually, the hash comparison that HMAP_FOR_EACH_WITH_HASH does is an
optimization, because comparing a hash value is usually cheaper than
comparing an entire hash map key. But for simple hash map keys, it makes
sense to just compare the key directly, because it avoids doing two
comparisons when a single simple comparison suffices. This commit adds new
functions and macros to support this simple case.
When hmap_replace() replaces one hash table node by another, it must
ensure that any nodes following the old node also follow the new node,
by copying the "next" pointer from "old" to "new".
As previously defined, the following both returned the same value for
given values of 'basis':
hash_int(0, hash_int(1, basis))
hash_int(1, hash_int(0, basis))
because hash_int(0, basis) evaluated to basis and hash_int(1, basis)
evaluated to c + basis for some constant c.
This commit fixes the problem, by eliminating any simple linear
relationship between basis and the hash value.
We should write some tests for hash function quality.
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