Flavio Leitner [Thu, 6 Nov 2014 18:45:29 +0000 (16:45 -0200)]
fedora-spec: add openvswitch-test package
Put the utilities that are useful to diagnose performance
and connectivity issues in Open vSwitch setup into another
package since they are not needed in most cases.
Signed-off-by: Flavio Leitner <fbl@redhat.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Ben Pfaff [Thu, 6 Nov 2014 21:48:39 +0000 (13:48 -0800)]
FAQ: Describe how to add new fields and new actions.
We get these questions from time to time and it would be nice to just be
able to cut and paste the answer. (And possibly some people might actually
read the answer straight from the FAQ.)
Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Andy Zhou <azhou@nicira.com>
Simon Horman [Wed, 5 Nov 2014 23:55:47 +0000 (15:55 -0800)]
ovs-ofctl: Only allow usable protocols for group commands
parse_ofp_group_mod_str() may limit the usable protocols according
to the group and in particular its actions. However, without this
change ovs-ofctl ignores this calculation.
Signed-off-by: Simon Horman <simon.horman@netronome.com> Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
Andy Zhou [Thu, 16 Oct 2014 22:23:11 +0000 (15:23 -0700)]
bridge: Store datapath version into ovsdb
OVS userspace are backward compatible with older Linux kernel modules.
However, not having the most up-to-date datapath kernel modules can
some times lead to user confusion. Storing the datapath version in
OVSDB allows management software to check and optionally provide
notifications to users.
Signed-off-by: Andy Zhou <azhou@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Pravin B Shelar [Wed, 29 Oct 2014 09:45:48 +0000 (02:45 -0700)]
datapath: Convert dp rcu read operation to locked operations
dp read operations depends on ovs_dp_cmd_fill_info(). This API
needs to looup vport to find dp name, but vport lookup can
fail. Therefore to keep vport reference alive we need to
take ovs lock.
Found by code inspection.
Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Acked-by: Andy Zhou <azhou@nicira.com>
Ben Pfaff [Tue, 4 Nov 2014 19:17:11 +0000 (11:17 -0800)]
ofproto-dpif: Make ofproto/trace a bit more like real packet translation.
Until now, ofproto/trace has looked up the flow itself. xlate_actions()
can do the flow lookup internally and, since that is what happens when a
packet arrives, having it do its own packet lookup makes a lot of sense.
I noticed this in connection with the actset_output field, which
xlate_actions() should set to OFPP_UNSET at the beginning of translation
before looking up the flow. ofproto/trace didn't do that, so it looked
up a rule with actset_output=0 instead. By having xlate_actions() do the
lookup, the behavior can be consistent and correct.
Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
Motonori Shindo [Tue, 4 Nov 2014 16:12:18 +0000 (01:12 +0900)]
netflow: Fix interpretation of flow_seq.
'flow_seq" field in NetFlow v5 header should represent a number of NetFlow
flow records exported while it is representing the number of NetFlow
packets exported in the current code. This patch fixes this problem.
Signed-off-by: Motonori Shindo <motonori@shin.do> Signed-off-by: Ben Pfaff <blp@nicira.com>
David Verbeiren [Tue, 14 Oct 2014 17:01:49 +0000 (19:01 +0200)]
netdev-dpdk: Fix DPDK rings broken by multi queue
DPDK rings don't need one queue per PMD thread and don't support multiple
queues (set_multiq function is undefined). To fix operation with DPDK rings,
this patch ignores EOPNOTSUPP error on netdev_set_multiq() and provides, for
DPDK rings, a netdev send() function that ignores the provided queue id
(= PMD thread core id).
Suggested-by: Maryam Tahhan <maryam.tahhan@intel.com> Signed-off-by: David Verbeiren <david.verbeiren@intel.com> Acked-by: Pravin B Shelar <pshelar@nicira.com>
Ben Pfaff [Fri, 10 Oct 2014 05:57:47 +0000 (22:57 -0700)]
nx-match: Add support for multiple OXM field assignments for one field.
actset_output, to be added in an upcoming commit, has one OXM assignment
in OpenFlow 1.3 and another one in OpenFlow 1.5. This commit allows both
of them to be supported in appropriate OpenFlow versions.
This feature is difficult to test on its own, so the same commit that adds
actset_output support also tests this feature.
Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
Jarno Rajahalme [Mon, 3 Nov 2014 22:40:22 +0000 (14:40 -0800)]
ofproto-dpif-xlate: Do not clear ports with frags in xlate_actions().
Transport ports are already cleared for lookup if need be, and they
should be available for action processing, so do not clear them in
xlate_actions().
A drop flow takes care of dropping the packet, so no special case is
needed in xlate_actions().
Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Jarno Rajahalme [Mon, 3 Nov 2014 22:40:22 +0000 (14:40 -0800)]
tests/ofproto-dpif - fragment handling: Add detail.
Add transport port modifications to the existing frags handling test
case.
This demonstrates incorrect behavior by not moving the destination
port number to source port in normal mode for first fragment, as the
transport port numbers have been zeroed and the move has no effect,
and by allowing moves to/from transport ports on later fragments
(which do not have a transport header).
Next patches fix these problems.
Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Pravin B Shelar [Thu, 16 Oct 2014 18:38:16 +0000 (11:38 -0700)]
route-table: extract gw information.
Routing table will be used by ovs userspace tunneling, it need to
know gw address, following commit extract gw information from
netlink message so that ovs can populate it in ovs route table.
Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Acked-by: Thomas Graf <tgraf@noironetworks.com>
Pravin B Shelar [Thu, 16 Oct 2014 18:38:12 +0000 (11:38 -0700)]
route-table: Use classifier to store routing table.
Rather than using hmap for storing routing entries we can directly use
classifier which has support for priority and wildcard entries.
This makes route lookup lockless. This help when we use route lookup
for native tunneling.
Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Acked-by: Thomas Graf <tgraf@noironetworks.com> Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
Pravin B Shelar [Thu, 16 Oct 2014 18:38:06 +0000 (11:38 -0700)]
route-table: get rid of name-table
name table maintains device ifindex to name mapping. On any name
table changes it invalidate name table and routing table. So
rather than building two tables this patch moves dev name to routing
entry and build routing table on any name table changes.
Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Acked-by: Thomas Graf <tgraf@noironetworks.com>
Ben Pfaff [Fri, 3 Oct 2014 22:49:23 +0000 (15:49 -0700)]
xenserver: Turn on SSE and SSE2 for the build, for atomic 64-bit ops.
The ovs-atomic-i586 implementation of atomic operations can implement
64-bit atomics more efficiently when SSE is supported. XenServer runs only
on 64-bit capable processors, in 32-bit mode, so we know on XenServer that
SSE and SSE2 are supported because they are architectural for amd64. Thus,
this commit enables SSE and SSE2 when building for XenServer to get the
improved atomics support.
I tested that this successfully adds -msse -msse2 to the compiler flags
inside a XenServer DDK, but I didn't actually run it on a real XenServer
install.
Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
Jesse Gross [Fri, 31 Oct 2014 23:47:45 +0000 (16:47 -0700)]
packets: Use WORDS_BIGENDIAN for struct geneve_opt.
The macro LITTLE_ENDIAN is a constant, not a test for endianness,
so it doesn't actually tell us anything about the machine.
WORDS_BIGENDIAN is both correct and defined by configure so it is
more portable.
Reported-by: Ben Pfaff <blp@nicira.com> Signed-off-by: Jesse Gross <jesse@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Jarno Rajahalme [Fri, 31 Oct 2014 23:22:23 +0000 (16:22 -0700)]
classifier: Use rculist.
The list of identical, but lower priority rules is not currently used
in classifier lookup. A later patch introducing conjunctive matches
needs to access the list during lookups, so we must make the list RCU.
Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Joe Stringer [Fri, 31 Oct 2014 21:05:46 +0000 (14:05 -0700)]
odp-util: Fix segfault in MPLS attribute parsing.
Just because the ethertype is MPLS, this doesn't mean that the datapath
understands and provides OVS_KEY_ATTR_MPLS attributes for the flow.
Previously we would check the size of the OVS_KEY_ATTR_MPLS attribute
before checking whether the attribute is present. This would cause a
segfault in nl_attr_get_size(), usually triggered from a handler thread.
This patch brings the MPLS parsing code more in line with the rest of
the parse_l2_5_onward() function, by only processing MPLS if the
attribute is present.
Reported-by: Pravin B Shelar <pshelar@nicira.com> Signed-off-by: Joe Stringer <joestringer@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Simon Horman [Fri, 31 Oct 2014 08:14:46 +0000 (17:14 +0900)]
ovs-ofctl: Free group buckets.
To some extent this is cosmetic because ovs-ovfctl will immediately
exit. However, it does seem to be in keeping with freeing 'gms' in
ofctl_group_mod_file().
Found by inspection using make check-valgrind.
Signed-off-by: Simon Horman <simon.horman@netronome.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Nithin Raju [Wed, 29 Oct 2014 22:18:19 +0000 (15:18 -0700)]
datapath-windows: Increase the maximum size of port name.
In userspace, port name sizes are restricted to IFNAMSIZ which is
defined to IF_NAME_SIZE in:
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\netioapi.h
In the kernel, since IFNAMSIZ was not available, we previously defined a
value of 16 for the kernel. This is restrictive for Openstack
integration where we use UUID as the name.
In this patch, we make the kernel code also use the same value as the
userspace.
Also updated is the OVS.psm1 powershell script which now allows friendly
names to be upto 48 bytes.
Nithin Raju [Thu, 30 Oct 2014 20:17:43 +0000 (13:17 -0700)]
datapath-windows: Don't leak NBLs with multiple NBs.
Currently, if we receive an NBL with multiple NBs from NDIS, we just
ASSERT() and not do anything. The right thing to do obviously is to
process the NBL. This is a work in progress.
In the meantime, we should complete the NBL and not just leak it.
Signed-off-by: Nithin Raju <nithin@vmware.com> Acked-by: Eitan Eliahu <eliahue@vmware.com> Tested-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Ben Pfaff [Thu, 30 Oct 2014 18:40:07 +0000 (11:40 -0700)]
classifier: Change type used for priorities from 'unsigned int' to 'int'.
OpenFlow has priorities in the 16-bit unsigned range, from 0 to 65535.
In the classifier, it is sometimes useful to be able to have values below
and above this range. With the 'unsigned int' type used for priorities
until now, there were no values below the range, so some code worked
around it by converting priorities to 64-bit signed integers. This didn't
seem so great to me given that a plain 'int' also had the needed range.
This commit therefore changes the type used for priorities to int.
The interesting parts of this change are in pvector.h and classifier.c,
where one can see the elimination of the use of int64_t.
Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
Ben Pfaff [Thu, 30 Oct 2014 17:38:06 +0000 (10:38 -0700)]
netdev-linux: Avoid depending on kernel definition of rtnl_link_stats64.
We have to define our own with some kernel headers, so we might as well do
it everywhere, especially since there seems to be a problem with detecting
the presence of the definition with at least some kernels.
Reported-by: Wang Sheng-Hui <shhuiw@gmail.com> Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Joe Stringer <joestringer@nicira.com>
This patch adds bash command-line completion script for ovs-appctl,
ovs-dpctl, ovs-ofctl and ovsdb-tool command. Right now, the script
can do the following:
- display available completion or complete on unfinished user input
(long option, subcommand, and argument).
- once the subcommand (e.g. ofproto/trace) has been given, the
script will print the subcommand format.
- the script can convert between keywords like 'bridge/port/interface/dp'
and the available record in ovsdb.
The limitations are:
- only support small set of important keywords
(dp, datapath, bridge, switch, port, interface, iface).
- does not support parsing of nested options
(e.g. ovsdb-tool create [db [schema]]).
- does not support expansion on repeatitive argument
(e.g. ovs-dpctl show [dp...]).
- only support matching on long options, and only in the format
(--option [arg], i.e. should not use --option=[arg]).
To use the script, either copy it inside /etc/bash_completion.d/
or manually run it via . ovs-command-compgen.bash.
Also, a unit testsuite is provided as ovs-command-compgen-test.bash.
It is suggested that this test script be run only inside
tutorial/sandbox directory.
For more info please refer to utilities/ovs-command-compgen.INSTALL.md.
Signed-off-by: Alex Wang <alexw@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Jarno Rajahalme [Wed, 29 Oct 2014 18:34:40 +0000 (11:34 -0700)]
ovs_assert, tests: Support NDEBUG.
./configure accepts --enable-ndebug option. Make ovs_assert() honor
it, and make sure all test programs disable it.
The order of include files in test programs is also made uniform:
1. #include <config.h>
2. #undef NDEBUG
3. Include file of the test subject (to make sure it itself has
sufficient include directives).
4. System includes in alphapetical order.
5. OVS includes in aplhapetical order.
Suggested-by: Ben Pfaff <blp@nicira.com> Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Thomas Graf [Thu, 30 Oct 2014 12:04:14 +0000 (13:04 +0100)]
doc: Add more cross references between docs
Suggested-by: Lori Jakab <lojakab@cisco.com> Signed-off-by: Thomas Graf <tgraf@noironetworks.com> Reviewed-by: Flavio Leitner <fbl@redhat.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Ben Pfaff [Wed, 29 Oct 2014 21:59:48 +0000 (14:59 -0700)]
vswitch.xml: Improve IPFIX documentation.
A coworker came by yesterday with a question about IPFIX in Open vSwitch.
I did not know the answer, so I read the documentation. The documentation
was harder to understand than necessary. This change should make it easier
to understand by providing an overview of the two forms of configuration
and grouping together the columns that apply only to one form of
configuration.
Ben Pfaff [Wed, 29 Oct 2014 21:11:07 +0000 (14:11 -0700)]
ovs-vsctl: Allow referring to rows whose names are UUIDs by those names.
Every row in the database has a UUID, generated by the database server.
Rows in most tables also have a user-assigned name (e.g. a bridge or port
or interface name). The ovs-vsctl database commands (e.g. "set", "get",
"list", ...) accept both UUIDs and names, but until now if a command's
argument had the form of a UUID, then it had to be the database-assigned
UUID for a row; that is, ovs-vsctl did not check whether it was the name
of a row. This commit changes that: a UUID argument to a database command
is now first checked against database UUIDs then, if it is not a database
UUID, it is checked as the name of a row.
This is prompted by Windows integration with OpenStack, which uses UUIDs
as port names.
Jarno Rajahalme [Wed, 29 Oct 2014 16:59:57 +0000 (09:59 -0700)]
tests/test-classifier: Properly use ovsrcu_postpone.
Following patches add stricter checks of RCU memory management of
rules removed from a classifier. This patch properly postpones
freeing of 'struct cls_rule's that have been removed from a
classifier.
Also remove all the rules from classifier before destructing it in
test_rule_replacement().
Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Jarno Rajahalme [Wed, 29 Oct 2014 16:59:57 +0000 (09:59 -0700)]
lib/rculist: New RCU-iterator, single-writer doubly-linked list.
rculist allows concurrent lockless list iteration, while a writer may
be modifying the list. Multiple writers can be supported by using a
mutex in addition to rculist.
First user will be added in a following patch.
Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Alex Wang [Thu, 16 Oct 2014 20:27:32 +0000 (13:27 -0700)]
command-line: Add function to print command usage.
This commit adds a new variable in 'struct command' for
recording the command usage. Also, a new function is
added to print the usage given the array of defined
commands.
Later patch will use the output in bash command-line
completion script.
Signed-off-by: Alex Wang <alexw@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Alex Wang [Thu, 16 Oct 2014 20:26:07 +0000 (13:26 -0700)]
dpctl: Implement 'list-commands' function.
This commit implements the 'list-commands' command for ovs-dpctl
and ovs-appctl dpctl/* commands. The function will print the
usage string for each subcommand.
Signed-off-by: Alex Wang <alexw@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Alex Wang [Fri, 17 Oct 2014 18:11:36 +0000 (11:11 -0700)]
ovs-appctl: Rename 'help' to 'list-commands'.
Having 'ovs-appctl help' and 'ovs-appctl --help' print different
output is confusing. This commit renames the 'help' to 'list-commands'.
Also, future patches will add the 'list-commands' to other ovs-*
commands, and the output will be used by bash command-line completion
script.
Signed-off-by: Alex Wang <alexw@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Alex Wang [Fri, 12 Sep 2014 00:24:35 +0000 (17:24 -0700)]
command-line: Add function to print all options.
This commit adds a function that prints (both long and short)
options of a ovs-* command. To use this function, option
'--option' is added to ovs-appctl/dpctl/ofctl and ovsdb-tool
commands. A future patch will use the option output to
conduct bash command-line completion.
Signed-off-by: Alex Wang <alexw@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Nithin Raju [Fri, 24 Oct 2014 18:41:17 +0000 (11:41 -0700)]
datapath-windows: Allow encapsulation if source is bridge-internal port.
It has been observed that when userspace generates and executes that
packet, the source port of such a packet is set to the bridge-internal
port. Currently, we allow encapsulation only if the source port is a VIF
port or no port. We relax the check in this patch.
Signed-off-by: Nithin Raju <nithin@vmware.com> Acked-by: Ankur Sharma <ankursharma@vmware.com> Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Tested-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Thomas Graf [Tue, 28 Oct 2014 10:19:52 +0000 (11:19 +0100)]
doc: Convert docs to Markdown language
Converts the majority of docs over to use the Markdown language for
pretty printing on GitHub. It's a rough first convertion without
exploiting the full potential of Markdown at this point. Section
titles and indentation are fixed as needed. Minimal docs interlinking
is added.
Signed-off-by: Thomas Graf <tgraf@noironetworks.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Nithin Raju [Fri, 24 Oct 2014 00:33:14 +0000 (17:33 -0700)]
datapath-windows: OvsFindVportByPortIdAndNicIndex() and external port.
We use OvsFindVportByPortIdAndNicIndex() to lookup the vport for a
packte received from the Hyper-V switch. If a packet was indeed received
from the virtual external NIC, we should flag it.
Validation:
1. Install and Uninstall the OVS EXT Driver (without enabling the OVS
extension on the Hyper-V switch).
2. Install and Uninstall the OVS EXT Driver (with enabling the OVS
extension on the Hyper-V switch). Hyper-V switch had a few ports.
3. Install and Uninstall the OVS EXT Driver (with enabling the OVS
extension on the Hyper-V switch). Added a few ports before
uninstalling.
4. Install the OVS EXT driver, and test the following functionality:
a) ping between 2 VMs on the same host
b) ping between 2 VMs on 2 Hyper-Vs - one physical and another
virtual backed by VLAN (patch port between br-pif and br-int).
c) ping between 2 VMs on 2 Hyper-Vs - one physical and another
virtual backed by VXLAN.
d) Successful uninstallation after these tests.
Signed-off-by: Nithin Raju <nithin@vmware.com> Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Tested-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Acked-by: Ankur Sharma <ankursharma@vmware.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Nithin Raju [Fri, 24 Oct 2014 00:33:13 +0000 (17:33 -0700)]
datapath-windows: Update vport add code.
In this patch, we make the following updates to the vport add code:
1. Clarify the roles of the different hash tables, so it is easier to
read/write code in the future.
2. Update OvsNewVportCmdHandler() to support adding bridge-internal
ports.
3. Fixes in OvsNewVportCmdHandler() to support adding external port.
Earlier, we'd hit ASSERTs.
4. I could not figure out way to add a port of type
OVS_PORT_TYPE_INTERNAL with name "internal" to the confdb using
ovs-vsctl.exe. And, this is needed in order to add the Hyper-V
internal port from userspace. To workaround this problem, we treat a
port of type OVS_PORT_TYPE_NETDEV with name "internal" as a request
to add the Hyper-V internal port. This is a workaround. The end
result is that there's a discrepancy between the port type in the
datpaath v/s confdb, but this has not created any trouble in testing
so far. If this ends up becoming an issue, we can mark the Hyper-V
internal port to be of type OVS_PORT_TYPE_NETDEV. No harm.
5. Because of changes indicated in #1, we also update the vport dump
code to look at the correct hash table for ports added from
userspace.
6. Add a OvsGetTunnelVport() for convenience.
7. Update ASSERTs() while cleaning up the switch.
8. Nuke OvsGetExternalVport() and OvsGetExternalMtu().
Signed-off-by: Nithin Raju <nithin@vmware.com> Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Tested-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Acked-by: Ankur Sharma <ankursharma@vmware.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Nithin Raju [Fri, 24 Oct 2014 00:33:12 +0000 (17:33 -0700)]
datapath-windows: Refactor core in Vport.c.
We do a bunch of changes that did not make sense to split up into
smaller patches:
1. Add descriptive comments to the important functions to clarify
purpose.
2. s/OvsInitVportCommon/InitHvVportCommon - this function is common code
for every port that shows up on the Hyper-V switch.
3. Introduce a InitOvsVportCommon() that is common code for evrey port
that gets added from userspace. This is especially useful for ports
that are not present on the Hyper-V switch. ie. tunnel ports and
bridge-internal ports.
4. Fix OvsClearAllSwitchVports() to remove ports from both the lists:
the ones added from Hyper-V as well as the ones added from OVS
userspace.
5. Update OvsInitVxlanTunnel() to not call into InitHvVportCommon
(formerly OvsInitVportCommon()) since it is not a port on the Hyper-v
switch. In a later patch in the series, we'll call
InitOvsVportCommon() for a VXLAN port.
6. 'numNonHvVports' increments and decrements ONLY for ports that are
added from OVS userspace but not present on the Hyper-V switch.
Signed-off-by: Nithin Raju <nithin@vmware.com> Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Tested-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Acked-by: Ankur Sharma <ankursharma@vmware.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Nithin Raju [Fri, 24 Oct 2014 00:33:09 +0000 (17:33 -0700)]
datapath-windows: Clarify externalVport.
In this patch, we add some explanation about the usage of
'externalVport' in the switch context. Also, we rename 'externalVport'
to 'virtualExternalVport' in alignment with the explanation. Also, we
rename 'numVports' to 'numHvVports' since ports are added from 2 ends
now.
Signed-off-by: Nithin Raju <nithin@vmware.com> Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Tested-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Acked-by: Ankur Sharma <ankursharma@vmware.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Nithin Raju [Fri, 24 Oct 2014 00:33:08 +0000 (17:33 -0700)]
datapath-windows: Re-init the list entry in OvsDeleteVportCmdHandler().
Without this patch, the kernel crashes when it tries to cleanup a port
at unload time when a port has been previously deleted from userspace.
Crash is in OvsRemoveAndDeleteVport() when we call into
RemoveEntryList().
Signed-off-by: Nithin Raju <nithin@vmware.com> Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Tested-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Sorin Vinturis [Mon, 27 Oct 2014 19:26:49 +0000 (19:26 +0000)]
datapath-windows: Fix BSOD caused by DV due to memory leaks.
If the OVS extension is enabled, Driver Verifier will issue a BSOD
due to memory leaks. This issue reproduces each time and the problem
is in the filter attach routine when the switch context is initialized.
Jarno Rajahalme [Mon, 27 Oct 2014 17:57:28 +0000 (10:57 -0700)]
lib/ovs-rcu: Support static initialization.
Currently, OVSRCU_TYPE_INITIALIZER always initializes the RCU pointer
as NULL. There is no reason why the RCU pointer could not be
initialized with a non-NULL value, however, as statically allocated
memory is even more stable than required for RCU.
This patch changes the initializer to OVSRCU_INITIALIZER(VALUE), which
can take any pointer value as a parameter.
This allows rculist, which is introduced in a following patch, to
provide an initializer similar to the one in the normal list.
Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Jarno Rajahalme [Fri, 24 Oct 2014 20:22:24 +0000 (13:22 -0700)]
lib/classifier: Add lib/classifier-private.h.
tests/test-classifier.c used to include lib/classifier.c to gain
access to the internal data structures and some utility functions.
This was confusing, so this patch splits the relevant groups of
classifier internal definations to a new file
(lib/classifier-private.h), which is included by both lib/classifier.c
and tests/test-classifier.c. Other use of the new file is
discouraged.
Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Jarno Rajahalme [Fri, 24 Oct 2014 20:22:24 +0000 (13:22 -0700)]
lib: Clean up vlog use.
Vlog functions assume a vlog module has been defined for the current
translation unit. Including lib/vlog.h from a header file makes the
vlog API visible even when no vlog module may not have been defined.
This patch removes the two cases in the tree where vlog.h was included
from a header file.
Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Simon Horman [Fri, 24 Oct 2014 05:59:20 +0000 (14:59 +0900)]
ofproto: Only allow indirect groups with one bucket
OpenFlow 1.1 - 1.4 specify that indirect groups should
opperate on the "one defined bucket in the group". OpenFlow
1.2 - 1.4 also state "This group only supports a single bucket."
This patch enforces the single bucket limitation for indirect groups
when decoding group mod messages. A test is also added to exercise
this change.
Signed-off-by: Simon Horman <simon.horman@netronome.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Pravin B Shelar [Mon, 20 Oct 2014 23:13:04 +0000 (16:13 -0700)]
datapath: Use upstream ipv6_find_hdr().
ipv6_find_hdr() already fixed in newer upstram kernel by Ansis, we
can start using this API safely.
This patch also backports fix (ipv6: ipv6_find_hdr restore prev
functionality) to compat ipv6_find_hdr().
CC: Ansis Atteka <aatteka@nicira.com> Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Acked-by: Andy Zhou <azhou@nicira.com>