cascardo/ovs.git
8 years agodb-ctl-base: do not expose get_table() API
Andy Zhou [Wed, 8 Jul 2015 02:34:28 +0000 (19:34 -0700)]
db-ctl-base: do not expose get_table() API

Both get_table() and set_cloum() APIs are mostly used within db-ctl-base
library. This patch makes both private to the library.

Add a new ctl_set_colum() API for library client.

The changes are cleanups. No functional changes.

Signed-off-by: Andy Zhou <azhou@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agohmap: Fix bad advice in comment (plus a typo).
Ben Pfaff [Mon, 13 Jul 2015 04:28:19 +0000 (21:28 -0700)]
hmap: Fix bad advice in comment (plus a typo).

This dates to 2010!

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Justin Pettit <jpettit@nicira.com>
8 years agoxml2nroff: Allow comments in block XML.
Ben Pfaff [Sun, 12 Jul 2015 18:59:17 +0000 (11:59 -0700)]
xml2nroff: Allow comments in block XML.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Justin Pettit <jpettit@nicira.com>
8 years agonicira-ext: Fix typo in comment.
Ben Pfaff [Sun, 12 Jul 2015 18:54:48 +0000 (11:54 -0700)]
nicira-ext: Fix typo in comment.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
8 years agoUndefined symbol make_unix_socket
Alin Serdean [Wed, 1 Jul 2015 19:01:44 +0000 (19:01 +0000)]
Undefined symbol make_unix_socket

syslog_direct_create defined in (lib/syslog-direct.c) uses make_unix_socket
which is currently undefined on the windows build.

We either can remove the new file from the chain but this patch proposes
to define a wrapper to make_unix_socket in which we return EINVAL.

This will avoid this kind of problems in the future.

Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Acked-by: Eitan Eliahu <eliahue@vmware.com>
Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
8 years agodb-ctl-base: fix a few typos
Andy Zhou [Wed, 8 Jul 2015 01:59:13 +0000 (18:59 -0700)]
db-ctl-base: fix a few typos

Minor typo and style fixes.

Signed-off-by: Andy Zhou <azhou@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agohash: Add symmetric L3/L4 hash functions for multipath, bundle hashing.
Jeroen van Bemmel [Mon, 6 Jul 2015 17:58:24 +0000 (12:58 -0500)]
hash: Add symmetric L3/L4 hash functions for multipath, bundle hashing.

Signed-off-by: Jeroen van Bemmel <jvb127@gmail.com>
[blp@nicira.com made code style fixes, expanded documentation]
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agodebian: wrap-and-sort
James Page [Tue, 7 Jul 2015 15:04:42 +0000 (16:04 +0100)]
debian: wrap-and-sort

Wrap long lines and sort items in the Debian packaging files.

Signed-off-by: James Page <james.page@ubuntu.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoFAQ: Fix headline.
Steffen Gebert [Thu, 2 Jul 2015 17:25:00 +0000 (19:25 +0200)]
FAQ: Fix headline.

There must be no line break within the headline.

Signed-off-by: Steffen Gebert <steffen.gebert@informatik.uni-wuerzburg.de>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoFAQ.md: Remove text saying that OpenFlow 1.5 is not final.
Ben Pfaff [Mon, 6 Jul 2015 14:26:11 +0000 (07:26 -0700)]
FAQ.md: Remove text saying that OpenFlow 1.5 is not final.

OF1.5 was released months ago.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Justin Pettit <jpettit@nicira.com>
8 years agonroff: Fix style of names.
Ben Pfaff [Tue, 7 Jul 2015 04:05:03 +0000 (21:05 -0700)]
nroff: Fix style of names.

The recommended Google Python style is multi_word_names, not
multiWordNames.

There are lots of other places where the style could be improved.
I started here because I was working in this code anyway and because
this code is only used at build time and not installed, so that it
can't break any third-party code.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Justin Pettit <jpettit@nicira.com>
8 years agoofp-util: Log the type of an invalid message being added to a bundle.
Ben Pfaff [Mon, 6 Jul 2015 17:18:36 +0000 (10:18 -0700)]
ofp-util: Log the type of an invalid message being added to a bundle.

This makes troubleshooting easier.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
8 years agoofp-util: Require inner and outer message in bundle add to be same version.
Ben Pfaff [Mon, 6 Jul 2015 17:19:02 +0000 (10:19 -0700)]
ofp-util: Require inner and outer message in bundle add to be same version.

It doesn't make sense for the messages added to a bundle to have a
different OpenFlow version from the outer OpenFlow version.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
8 years agoofp-msgs: Add function ofptype_get_name().
Ben Pfaff [Mon, 6 Jul 2015 16:54:32 +0000 (09:54 -0700)]
ofp-msgs: Add function ofptype_get_name().

An upcoming commit will make use of this.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
8 years agoclassifier: Make versioning more explicit.
Jarno Rajahalme [Mon, 6 Jul 2015 18:45:54 +0000 (11:45 -0700)]
classifier: Make versioning more explicit.

Now that struct cls_match has 'add_version' the 'version' in cls_match
was largely redundant.  Remove 'version' from struct cls_rule, and add
it to function prototypes that need it.  This makes versioning more
explicit (or less indirect) in the API.

Suggested-by: Ben Pfaff <blp@nicira.com>
Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto: Add struct ofproto_flow_mod.
Jarno Rajahalme [Mon, 6 Jul 2015 18:45:54 +0000 (11:45 -0700)]
ofproto: Add struct ofproto_flow_mod.

It is cleaner to not use ofp_bundle_entry for non-bundle flow mods.
To address this, the new struct ofproto_flow_mod combines an
ofputil_flow_mod and the necessary execution context for executing the
start, revert, and finish phases of the flow mod, which all were
previously members of struct ofp_bundle_entry.

This also simplifies many of the function prototypes introduced with
the OF 1.4 bundles code.  However, in case of learn action execution
this approach requires a new copy of the ofputil_flow_mod.  This could
be avoided by making struct ofproto_flow_mod more complex, but it
seems not worth the complication.

As part of carving out the execution context from ofp_bundle_entry to
ofproto_flow_mod, the 'version' member is now also in
ofproto_flow_mod, as it makes sense for flow mods, but not for port
mods.  Now that the functions operate on the version also get the full
execution context, they use 'version' instead of
'ofproto->tables_version'. This allows ofproto->tables_version to be
changed only when a new version is committed.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoodp-util: Share fields between odp and dpif_backer.
Joe Stringer [Tue, 30 Jun 2015 23:43:03 +0000 (16:43 -0700)]
odp-util: Share fields between odp and dpif_backer.

Datapath support for some flow key fields is used inside ofproto-dpif as
well as odp-util. Share these fields using the same structure.

Signed-off-by: Joe Stringer <joestringer@nicira.com>
Acked-by: Andy Zhou <azhou@nicira.com>
8 years agodatapath-windows: Solved BSOD when adding OVS ports
Sorin Vinturis [Thu, 2 Jul 2015 11:39:14 +0000 (11:39 +0000)]
datapath-windows: Solved BSOD when adding OVS ports

This BSOD occurred in the context of a packet (NBL) with multiple
NET_BUFFER(s) (NBs). The reason for the BSOD is due to the marking
of NBLs created by OVS as being external and wrongly completing them.

Signed-off-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-at: https://github.com/openvswitch/ovs-issues/issues/82
Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoovs-bugtool: Remove argument of "ovs-appctl dpif/show".
Huanle Han [Mon, 6 Jul 2015 13:51:13 +0000 (21:51 +0800)]
ovs-bugtool: Remove argument of "ovs-appctl dpif/show".

"ovs-appctl dpif/show" no longer takes any argument after commit dc54ef36
(ofproto: Track subfacet stats in the backer).

Signed-off-by: Huanle Han <hanxueluo@gmail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agostream-ssl: Set SSL session cache mode to disables.
Guru Chaitanya Perakam [Fri, 3 Jul 2015 05:17:31 +0000 (10:47 +0530)]
stream-ssl: Set SSL session cache mode to disables.

To enable SSL clients to reconnect with the ovs-testcontoller without being
rejected, one must either set the SSL Session ID flag or disable the
SSL caching. This patch disables the SSL caching/reuse.

In the absence of this fix, the error message from ovs-testcontroller is as
below:

  SSL protocol error: SSL_accept (error:140D9115:SSL
  routines:SSL_GET_PREV_SESSION:session id context uninitialized)

See <https://www.openssl.org/docs/ssl/SSL_CTX_set_session_id_context.html>.

Validation: Tested with ovs-testcontroller, by performing SSL reconnection
with OpenSSL based SSL client.

Signed-off-by: Guru Chaitanya Perakam <gperakam@brocade.com>
Reported-by: Guru Chaitanya Perakam <gperakam@brocade.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoovn: Add ovn/lib/libovn.sym to .gitignore.
Alex Wang [Fri, 26 Jun 2015 15:31:11 +0000 (08:31 -0700)]
ovn: Add ovn/lib/libovn.sym to .gitignore.

Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoImplement OpenFlow 1.4+ OFPMP_TABLE_DESC message.
Ben Pfaff [Fri, 3 Jul 2015 03:35:44 +0000 (20:35 -0700)]
Implement OpenFlow 1.4+ OFPMP_TABLE_DESC message.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Co-authored-by: Saloni Jain <saloni.jain@tcs.com>
Signed-off-by: Saloni Jain <saloni.jain@tcs.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
8 years agoImplement OpenFlow 1.4+ OFPTC_EVICTION.
Ben Pfaff [Fri, 3 Jul 2015 03:33:08 +0000 (20:33 -0700)]
Implement OpenFlow 1.4+ OFPTC_EVICTION.

OpenFlow 1.4 introduces the ability to turn on flow table eviction with an
OFPT_TABLE_MOD message specifying OFPTC_EVICTION.  It also adds related
machinery to other messages that mention OFPTC_* fields.  This commit adds
support for the new feature, implementing it as a second, parallel way to
enable flow table eviction.  It takes more work than it seems like it
should because there is so much weirdness with the treatment of OFPTC_*
flags over the evolution of OpenFlow; please refer to the explanation in
DESIGN.md for more information.

This commit also adds related support to ovs-ofctl, plus tests.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Co-authored-by: Saloni Jain <saloni.jain@tcs.com>
Signed-off-by: Saloni Jain <saloni.jain@tcs.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
8 years agoofproto: Use OF1.4+ "importance" as part of eviction criteria.
Ben Pfaff [Fri, 3 Jul 2015 15:45:15 +0000 (08:45 -0700)]
ofproto: Use OF1.4+ "importance" as part of eviction criteria.

The "importance" field is considered before flow timeout because I figure
that if you set the importance, you think it's important.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Co-authored-by: Saloni Jain <saloni.jain@tcs.com>
Signed-off-by: Saloni Jain <saloni.jain@tcs.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
8 years agoofp-util: Fix typo in comment.
Ben Pfaff [Wed, 24 Jun 2015 17:21:43 +0000 (10:21 -0700)]
ofp-util: Fix typo in comment.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
8 years agoofproto: Make 'importance' immutable.
Ben Pfaff [Tue, 23 Jun 2015 22:05:55 +0000 (15:05 -0700)]
ofproto: Make 'importance' immutable.

OpenFlow provides no means to change the importance of a flow after it is
added, so make it immutable so that it is reasonable to read it without
locking.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
8 years agoovn: Take advantage of OVSDB garbage collection in OVN_Northbound schema.
Ben Pfaff [Fri, 3 Jul 2015 00:30:22 +0000 (17:30 -0700)]
ovn: Take advantage of OVSDB garbage collection in OVN_Northbound schema.

Until now, the OVN_Northbound schema has been designed to sidestep a
weakness in the OVSDB protocol when a column has a great deal of data in
it.  In the current OVSDB protocol, whenever a column changes, the entire
new value of the column is sent to all of the clients that are monitoring
that column.  That means that adding or removing a small amount of data,
say 1 element in a set, requires sending all of the data, which is
expensive if the column has a lot of data.

One example of a column with potential to have a lot of data is the set of
ports within a logical switch, if a logical switch has a large number of
ports.  Thus, the existing OVN_Northbound schema has each Logical_Port
point to its containing Logical_Switch instead of the other way around.
This sidesteps the problem because it does not use any large columns.

The tradeoff that this forces, however, is that the schema cannot take
advantage of OVSDB's garbage collection feature, where it automatically
deletes rows that are unreferenced.  That's a problem for Neutron because
of Neutron-internal races between deletion of a Logical_Switch and
creation of new Logical_Ports on the switch being deleted.  When such a
race happens, OVSDB refuses to delete the Logical_Switch because of
references to it from the newly created Logical_Port (although Neutron
does delete the pre-existing logical ports).

To solve the problem, this commit changes the OVN_Northbound schema to
use a set of ports within Logical_Switch.  That will lead to large columns
for large logical switches; I plan to address that (though I don't have
code written) by enhancing the OVSDB protocol.  With this commit applied,
the database will automatically cascade deleting a logical switch row to
delete all of its ports, ACLs, and its router port (if any).

This commit makes some pretty pervasive changes to ovn-northd, but they
are mostly beneficial to the code readability because now it becomes
possible to trivially iterate through the ports that belong to a switch,
which was difficult before the schema change.

This commit will break the Neutron integration until that is changed to
handle the new database schema.

CC: Aaron Rosen <arosen@vmware.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Russell Bryant <rbryant@redhat.com>
Acked-by: Justin Pettit <jpettit@nicira.com>
8 years agodatapath/README: Fix some typos.
Luis E. P [Thu, 2 Jul 2015 19:34:19 +0000 (12:34 -0700)]
datapath/README: Fix some typos.

Signed-off-by: Luis E. P <lpena@vmware.com>
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
8 years agoofproto: Hold ofproto_mutex when enabling or disabling eviction.
Ben Pfaff [Thu, 2 Jul 2015 19:50:59 +0000 (12:50 -0700)]
ofproto: Hold ofproto_mutex when enabling or disabling eviction.

ofproto_enable_eviction() and ofproto_disable_eviction() require
ofproto_mutex (and they were even annotated that way, though not on their
prototypes but only at definition), but it wasn't being held.  This fixes
the problem.

Found by inspection.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
8 years agodatapath-windows: Solved memory leak in OVS datapath
Sorin Vinturis [Thu, 2 Jul 2015 06:53:08 +0000 (06:53 +0000)]
datapath-windows: Solved memory leak in OVS datapath

When closing opened instances, make sure the user dump state is cleared.

Signed-off-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-at: https://github.com/openvswitch/ovs-issues/issues/90
Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoSolved datapath-windows: BSOD when initializing switch context
Alin Serdean [Thu, 2 Jul 2015 06:35:58 +0000 (06:35 +0000)]
Solved datapath-windows: BSOD when initializing switch context

Add check in case of NdisAllocateRWLock fails to allocate the resources.

Check datapath->lock before trying to free it.

Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Reported-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-at: https://github.com/openvswitch/ovs-issues/issues/92
Acked-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agomcast-snooping: Add Multicast Listener Discovery support
Thadeu Lima de Souza Cascardo [Wed, 1 Jul 2015 19:12:12 +0000 (16:12 -0300)]
mcast-snooping: Add Multicast Listener Discovery support

Add support for MLDv1 and MLDv2. The behavior is not that different from
IGMP. Packets to all-hosts address and queries are always flooded,
reports go to routers, routers are added when a query is observed, and
all MLD packets go through slow path.

Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
Cc: Flavio Leitner <fbl@redhat.com>
Cc: Ben Pfaff <blp@nicira.com>
[blp@nicira.com moved an assignment out of an 'if' statement]
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agomcast-snooping: Use IPv6 address for MDB
Thadeu Lima de Souza Cascardo [Wed, 1 Jul 2015 19:12:11 +0000 (16:12 -0300)]
mcast-snooping: Use IPv6 address for MDB

Use IPv6 internally for storing multicast addresses. IPv4 addresses are
translated to their IPv4-mapped equivalent.

Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
Cc: Flavio Leitner <fbl@redhat.com>
Cc: Ben Pfaff <blp@nicira.com>
[blp@nicira.com added a "sparse" implementation of IN6_IS_ADDR_V4MAPPED.]
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agodatapath-windows: Solved BSOD when handling flows
Sorin Vinturis [Wed, 1 Jul 2015 20:03:01 +0000 (20:03 +0000)]
datapath-windows: Solved BSOD when handling flows

OvsPrepareFlow() returns an error only when the new flow allocation
fails. In this case HandleFlowPut() should return error without trying
to free the flow, thus avoiding the BSOD.

Signed-off-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-at: https://github.com/openvswitch/ovs-issues/issues/91
Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agotunnels: Don't initialize unnecessary packet metadata.
Jesse Gross [Wed, 1 Jul 2015 02:19:40 +0000 (19:19 -0700)]
tunnels: Don't initialize unnecessary packet metadata.

The addition of Geneve options to packet metadata significantly
expanded its size. It was reported that this can decrease performance
for DPDK ports by up to 25% since we need to initialize the whole
structure on each packet receive.

It is not really necessary to zero out the entire structure because
miniflow_extract() only copies the tunnel metadata when particular
fields indicate that it is valid. Therefore, as long as we zero out
these fields when the metadata is initialized and ensure that the
rest of the structure is correctly set in the presence of a tunnel,
we can avoid touching the tunnel fields on packet reception.

Reported-by: Ciara Loftus <ciara.loftus@intel.com>
Tested-by: Ciara Loftus <ciara.loftus@intel.com>
Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agodatapath-windows: Rename 'vport->isPresentOnHv' to 'isAbsentOnHv'
Nithin Raju [Fri, 26 Jun 2015 18:51:29 +0000 (11:51 -0700)]
datapath-windows: Rename 'vport->isPresentOnHv' to 'isAbsentOnHv'

Looking at the code, the flag 'vport->isPresentOnHv' is actually
indicating if the vport is present on the Hyper-V switch or not, but the
logic seems to be inverse. 'isPresentOnHv == TRUE' indicates that the
vport is not present on the Hyper-V switch. Eg. VXLAN port, would have
isPresentOnHv == TRUE.

In this patch, we rename the variable to reflect its meaning.

vport->isAbsentOnHv is TRUE iff:
- vport is bridge internal port
- vport is tunnel port
- vport was added from Hyper-V and also from OVS, but got deleted from
Hyper-V

Signed-off-by: Nithin Raju <nithin@vmware.com>
Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agodatapath-windows: Code refactoring and fixes in Vport.c
Nithin Raju [Fri, 26 Jun 2015 18:51:28 +0000 (11:51 -0700)]
datapath-windows: Code refactoring and fixes in Vport.c

In this patch, there a couple of fixes and some code refactoring:
1. During deletion of "internal" and "external" in
   OvsRemoveAndDeleteVport(), we need to check if 'hvDelete' is TRUE before
   updating the data structures. Added code comments explaining the
   same.

2. Added a OvsRemoveTunnelPort() that gets called from
   OvsRemoveAndDeletePort() for the special processing for tunnel ports.

3. Folded in OvsCleanupVportCommon() back into OvsRemoveAndDeletePort(),
   since we only need a part of the functionality of
   OvsCleanupVportCommon() to be called from
   OvsTunnelVportPendingUninit(), and not the entire function.

4. Renamed OvsTunnelVportPendingUninit() to
   OvsTunnelVportPendingRemove() since it is basically a "pending" version
   of OvsVportTunnelRemove().

Validation:
- Add external port from Hyper-V, add external port from OVS, remove
external port from OVS, remove external port from Hyper-V. No ASSERT
hit.
- Add external port from Hyper-V, add external port from OVS, remove
external port from Hyper-V, remove external port from OVS. No ASSERT
hit.
- Vxlan tunnel port creation/deletion
- Stt tunnel port creation/deletion
- Ping on Vxlan/Stt tunnels
- Ovs Extension load/unload. There's an unrelated issue I found that is
reported in: https://github.com/openvswitch/ovs-issues/issues/86

Signed-off-by: Nithin Raju <nithin@vmware.com>V
Reported-at: https://github.com/openvswitch/ovs-issues/issues/79
Reported-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Reported-by: Nithin Raju <nithin@vmware.com>
Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agowindows: Avoid OVS_UNUSED in Windows stubs for syslog.h.
Alin Serdean [Tue, 30 Jun 2015 16:27:27 +0000 (16:27 +0000)]
windows: Avoid OVS_UNUSED in Windows stubs for syslog.h.

Currently OVS_UNUSED is defined in compiler.h since syslog.h is a
standalone wrapper remove it from the parameters.

Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Acked-by: Eitan Eliahu <eliahue@vmware.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoINSTALL.DPDK.md: Fix wrong command for creating dpdkvhostuser.
Wei li [Mon, 29 Jun 2015 10:35:13 +0000 (18:35 +0800)]
INSTALL.DPDK.md: Fix wrong command for creating dpdkvhostuser.

Signed-off-by: Wei li <liw@dtdream.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agodatapath-windows: Failed initialization for datapath tunnel ports
Sorin Vinturis [Wed, 1 Jul 2015 15:32:18 +0000 (15:32 +0000)]
datapath-windows: Failed initialization for datapath tunnel ports

Tunnel ports are not initialized with the corresponding default port.
The newly allocated vport is not yet initialized and the ovsType
member does not reflect the correct tunnel port type, thus the
transport port destination won't be correctly initialized.

Signed-off-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-at: https://github.com/openvswitch/ovs-issues/issues/88
Acked-by: Eitan Eliahu <eliahue@vmware.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agodatapath-windows: Avoid double incrementation of tx VXLAN packet statistics
Sorin Vinturis [Wed, 1 Jul 2015 15:21:03 +0000 (15:21 +0000)]
datapath-windows: Avoid double incrementation of tx VXLAN packet statistics

VXLAN tunnel tx packet stats are incorrectly incremented.

Signed-off-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-at: https://github.com/openvswitch/ovs-issues/issues/89
Acked-by: Eitan Eliahu <eliahue@vmware.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agodatapath-windows: Duplicate tag for STT pools
Sorin Vinturis [Wed, 1 Jul 2015 15:20:27 +0000 (15:20 +0000)]
datapath-windows: Duplicate tag for STT pools

All pool allocations should have unique tags.
OVS_STT_POOL_TAG matches the OVS_MEMORY_TAG.

Changed the OVS_STT_POOL_TAG to make it unique.

Signed-off-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Acked-by: Eitan Eliahu <eliahue@vmware.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoovs-lib: Ability to move ip address and routes.
Gurucharan Shetty [Sun, 21 Jun 2015 15:39:04 +0000 (08:39 -0700)]
ovs-lib: Ability to move ip address and routes.

The ability to move IP address and routes between two interfaces
is useful when we want to make a physical interface (say eth0)
as a port of OVS bridge (say breth0) with all its IP address and route
information transferred to OVS bridge. An upcoming commit
uses the new ability.

Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoovs-save: Refactor and move some code to ovs-lib.
Gurucharan Shetty [Sun, 21 Jun 2015 15:02:15 +0000 (08:02 -0700)]
ovs-save: Refactor and move some code to ovs-lib.

An upcoming commit becomes the second user of the
new functions.

Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agorhel: Add dkms support for ovs datapath build.
Alex Wang [Sun, 28 Jun 2015 23:31:16 +0000 (16:31 -0700)]
rhel: Add dkms support for ovs datapath build.

This commit adds a rpmbuild spec file for building ovs datapath
in dkms similar to the one for debian.

Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Flavio Leitner <fbl@sysclose.org>
8 years agovlog: add "vlog/list-pattern" command
Ansis Atteka [Sat, 13 Jun 2015 20:28:02 +0000 (13:28 -0700)]
vlog: add "vlog/list-pattern" command

This patch allows to query logging format at the runtime for each destination
with "vlog/list-pattern" command.

Signed-off-by: Ansis Atteka <aatteka@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agovlog: abstract out interface to syslog daemon
Ansis Atteka [Sun, 14 Jun 2015 00:22:15 +0000 (17:22 -0700)]
vlog: abstract out interface to syslog daemon

This patch helps to address two issues that are present on Ubuntu
15.04 (and most likely other Linux distributions) where rsyslog daemon
is configured to relay log messages from OVS to a remote log collector
and syslog format being used is something other than the one defined in
RFC 3164.  These two issues are:

1. libc syslog() function always adds RFC 3164 prefix to syslog
   messages before sending them over /dev/log Unix domain socket.
   This does not allow us to use libc syslog() function to log in
   RFC 5424 format;  and

2. rsyslogd daemon that comes with Ubuntu 15.04 is too old and
   uses hardcoded syslog message parser when it received messages
   over /dev/log UNIX domain socket.

Solution to those two issues would be to use the newly introduced
--syslog-method=udp:127.0.0.1:514 command line argument when starting
OVS.

Signed-off-by: Ansis Atteka <aatteka@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agotunneling: Userspace datapath support for Geneve options.
Jesse Gross [Mon, 22 Jun 2015 21:23:37 +0000 (14:23 -0700)]
tunneling: Userspace datapath support for Geneve options.

Currently the userspace datapath only supports Geneve in a
basic mode - without options - since the rest of userspace
previously didn't support options either. This enables the
userspace datapath to send and receive options as well.

The receive path for extracting the tunnel options isn't entirely
optimal because it does a lookup on the options on a per-packet
basis, rather than per-flow like the kernel does. This is not
as straightforward to do in the userspace datapath since there
is no translation step between packet formats used in packet vs.
flow lookup. This can be optimized in the future and in the
meantime option support is still useful for testing and simulation.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto: Fix use-after-free in bridge destruction with groups.
Ben Pfaff [Tue, 23 Jun 2015 18:38:56 +0000 (11:38 -0700)]
ofproto: Fix use-after-free in bridge destruction with groups.

Groups were not destroyed until after lots of other important bridge
data had been destroyed, including the connection manager.  There was an
indirect dependency on the connection manager for bridge destruction
because destroying a group also destroys all of the flows that reference
the group, which in turn causes the ofmonitor to be invoked to report that
the flows had been destroyed.  This commit fixes the problem by destroying
groups earlier.

The problem can be observed by reverting the code changes in this commit
then running "make check-valgrind" with the test that this commit
introduces.

Reported-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
8 years agoofp-actions: Support mixing "conjunction" and "note" actions.
Ben Pfaff [Fri, 26 Jun 2015 15:14:15 +0000 (08:14 -0700)]
ofp-actions: Support mixing "conjunction" and "note" actions.

It doesn't make sense to mix "conjunction" actions with most other kinds
of actions.  That's because flows with "conjunction" actions aren't ever
actually executed, so any actions mixed up with them would never do
anything useful.  "note" actions are a little different because they never
do anything useful anyway: they are just there to allow a controller to
annotate flows.  It makes as much sense to annotate a flow with
"conjunction" actions as it does to annotate any other flow, so this
commit makes this possible.

Requested-by: Soner Sevinc <sevincs@vmware.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Andy Zhou <azhou@nicira.com>
8 years agoexpr: Fix typo in comment.
Ben Pfaff [Thu, 25 Jun 2015 18:27:03 +0000 (11:27 -0700)]
expr: Fix typo in comment.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Andy Zhou <azhou@nicira.com>
8 years agotunneling: Don't match on source IP address for native tunnels.
Jesse Gross [Wed, 24 Jun 2015 21:44:50 +0000 (14:44 -0700)]
tunneling: Don't match on source IP address for native tunnels.

When doing native tunneling, we look at packets destined to the
local port to see if they match tunnel protocols that we should
intercept. The criteria are IP protocol, destination UDP port, etc.

However, we also look at the source IP address of the packets. This
should be a function of the port-based tunnel layer and not the
tunnel receive code itself. For comparison, the kernel tunnel code
has no idea about the IP addresses of its link partners. If port
based tunnel is desired, it can be handled using the normal port
tunnel layer, regardless of whether the packets originally came
from userspace or the kernel.

For port based tunneling, this bug has no effect - the check is
simply redundant. However, it breaks flow-based native tunnels
because the remote IP address is not known at port creation time.

CC: Pravin Shelar <pshelar@nicira.com>
Reported-by: David Griswold <David.Griswold@overturenetworks.com>
Tested-by: David Griswold <David.Griswold@overturenetworks.com>
Signed-off-by: Jesse Gross <jesse@nicira.com>
8 years agonetdev-dpdk: Fix sparse and clang warnings
Daniele Di Proietto [Wed, 24 Jun 2015 15:55:39 +0000 (08:55 -0700)]
netdev-dpdk: Fix sparse and clang warnings

Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
Acked-by: Pravin B Shelar <pshelar@nicira.com>
8 years agodpif-netdev: log port/core affinity
Mark Kavanagh [Tue, 9 Jun 2015 14:49:18 +0000 (07:49 -0700)]
dpif-netdev: log port/core affinity

When using multiple PMDs and numerous ports, a performance gain
may be achieved in some use cases by pinning a PMD/port to a
particular (set of) core(s).

This patch provides a summary of the switch's port/core affinities
each time that the status of the switch's ports is modified.
Based on this information, a user may determine what affinity
modifications are required to optimise performance for their
particular use case.

Signed-off-by: Mark Kavanagh <mark.b.kavanagh@intel.com>
Signed-off-by: Wojciech Andralojc <wojciechx.andralojc@intel.com>
Acked-by: Flavio Leitner <fbl@redhat.com>
Acked-by: Pravin B Shelar <pshelar@nicira.com>
8 years agonetdev-dpdk: Do not flush tx queue which is shared among CPUs since it is always...
Wei li [Thu, 25 Jun 2015 09:45:08 +0000 (02:45 -0700)]
netdev-dpdk: Do not flush tx queue which is shared among CPUs since it is always flushed

When tx queue is shared among CPUS,the pkts always be flush
in 'netdev_dpdk_eth_send'. So it is unnecessarily for flushing
in netdev_dpdk_rxq_recv Otherwise tx will be accessed without
locking.

Signed-off-by: Wei li <liw@dtdream.com>
Acked-by: Daniele Di Proietto <diproiettod@vmware.com>
Acked-by: Pravin B Shelar <pshelar@nicira.com>
8 years agopkt-metadata: Avoid introducing overhead for userspace tunnels.
Jesse Gross [Fri, 12 Jun 2015 19:49:23 +0000 (12:49 -0700)]
pkt-metadata: Avoid introducing overhead for userspace tunnels.

The addition of Geneve metadata requires a large amount of additional
space to handle the maximum set of options. In most cases, this is
not a big deal since it is only temporary storage on the stack or
can be automatically stripped out for miniflows. However, userspace
tunnels need to deal with this on a per-packet basis, so we should
avoid introducing additional overhead if possible. Two small changes
are aimed at this:

 * Move struct flow_tnl to the end of the packet metadata. Since
   the Geneve metadata is already at the end of flow_tnl and pkt_metadata
   is at the end of struct dp_packet, this avoids putting a large
   amount metadata (which might be empty) in hot cache lines.

 * Only push the new metadata into a miniflow if any options are present
   during miniflow_extract(). This does not necessarily provide the
   most fine-grained flow generation but it is a quick check and
   the userspace implementation of Geneve does not currently support
   options anyways.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agotunnel: Geneve TLV handling support for OpenFlow.
Jesse Gross [Fri, 1 May 2015 01:09:57 +0000 (18:09 -0700)]
tunnel: Geneve TLV handling support for OpenFlow.

The current support for Geneve in OVS is exactly equivalent to VXLAN:
it is possible to set and match on the VNI but not on any options
contained in the header. This patch enables the use of options.

The goal for Geneve support is not to add support for any particular option
but to allow end users or controllers to specify what they would like to
match. That is, the full range of Geneve's capabilities should be exposed
without modifying the code (the one exception being options that require
per-packet computation in the fast path).

The main issue with supporting Geneve options is how to integrate the
fields into the existing OpenFlow pipeline. All existing operations
are referred to by their NXM/OXM field name - matches, action generation,
arithmetic operations (i.e. tranfer to a register). However, the Geneve
option space is exactly the same as the OXM space, so a direct mapping
is not feasible. Instead, we create a pool of 64 NXMs that are then
dynamically mapped on Geneve option TLVs using OpenFlow. Once mapped,
these fields become first-class citizens in the OpenFlow pipeline.

An example of how to use Geneve options:
ovs-ofctl add-geneve-map br0 {class=0xffff,type=0,len=4}->tun_metadata0
ovs-ofctl add-flow br0 in_port=LOCAL,actions=set_field:0xffffffff->tun_metadata0,1

This will add a 4 bytes option (filled will all 1's) to all packets
coming from the LOCAL port and then send then out to port 1.

A limitation of this patch is that although the option table is specified
for a particular switch over OpenFlow, it is currently global to all
switches. This will be addressed in a future patch.

Based on work originally done by Madhu Challa. Ben Pfaff also significantly
improved the comments.

Signed-off-by: Madhu Challa <challa@noironetworks.com>
Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoodp-util: Pass down flow netlink attributes when translating masks.
Jesse Gross [Fri, 19 Jun 2015 20:54:13 +0000 (13:54 -0700)]
odp-util: Pass down flow netlink attributes when translating masks.

Sometimes we need to look at flow fields to understand how to parse
an attribute. However, masks don't have this information - just the
mask on the field. We already use the translated flow structure for
this purpose but this isn't always enough since sometimes we actually
need the raw netlink information. Fortunately, that is also readily
available so this passes it down from the appropriate callers.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agometaflow: Extend size of mf_value to 128 bytes.
Jesse Gross [Fri, 19 Jun 2015 20:39:03 +0000 (13:39 -0700)]
metaflow: Extend size of mf_value to 128 bytes.

Tunnel metadata can be substantially larger than our existing fields
(up to 124 bytes in a single Geneve option) so this extends the size
of the data that we can handle with metaflow fields. This also
breaks a few tests that assume that their max size is also the
maximum that can be handled in a field.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoopenflow: Table maintenance commands for Geneve options.
Jesse Gross [Tue, 2 Jun 2015 22:11:00 +0000 (15:11 -0700)]
openflow: Table maintenance commands for Geneve options.

In order to work with Geneve options, we need to maintain a mapping
table between an option (defined by <class, type, length>) and
an NXM field that can be operated on for the purposes of matches,
actions, etc. This mapping must be explicitly specified by the
user.

Conceptually, this table could be communicated using either OpenFlow
or OVSDB. Using OVSDB requires less code and definition of extensions
than OpenFlow but introduces the possibility that mapping table
updates and flow modifications are desynchronized from each other.
This is dangerous because the mapping table signifcantly impacts the
way that flows using Geneve options are installed and processed by
OVS. Therefore, the mapping table is maintained using OpenFlow commands
instead, which opens the possibility of using synchronization between
table changes and flow modifications through barriers, bundles, etc.

There are two primary groups of OpenFlow messages that are introduced
as Nicira extensions: modification commands (add, delete, clear mappings)
and table status request/reply to dump the current table along with switch
information.

Note that mappings should not be changed while they are in active use by
a flow. The result of doing so is undefined.

This only adds the OpenFlow infrastructure but doesn't actually
do anything with the information yet after the messages have been
decoded.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agonx-match: Enable parsing string representations of variable fields.
Jesse Gross [Fri, 8 May 2015 03:11:57 +0000 (20:11 -0700)]
nx-match: Enable parsing string representations of variable fields.

When reading in hex strings that form NXM fields, we don't need to
enforce size constraints if the fields are variable length.
Instead, we can set the header size based on the string length.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agonx-match: Trim variable length fields when encoding as actions.
Jesse Gross [Thu, 7 May 2015 01:05:18 +0000 (18:05 -0700)]
nx-match: Trim variable length fields when encoding as actions.

It is technically correct to send the entire maximum length of
a field when it is variable length. However, it is awkward to
do so and not what one would naively expect. Since receivers will
internally zero-extend fields, we can do the opposite and trim
off leading zeros. This results in encodings that are generally
sensible without specific knowledge of what is being transmitted.
(Of course, other implementations, such as controllers, may know
exactly the expected length of the field and are free to encode
it that way even if it has leading zeros.)

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agonx-match: Enable senders of NXM fields to specify length.
Jesse Gross [Thu, 7 May 2015 01:04:11 +0000 (18:04 -0700)]
nx-match: Enable senders of NXM fields to specify length.

Currently when an NXM field is encoded, the caller must specify
the length of the data being provided. However, this data is
always placed into a field of standard length. In order to
support variable length options, the length field must also
alter the size in the header. The previous implementation
already required callers to pass in the exact (fixed) size of
the field or it would not work properly, so there is no danger
that this will change the behavior for non-variable length
fields.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agonx-match: Handle receiving variable length fields.
Jesse Gross [Thu, 7 May 2015 01:00:52 +0000 (18:00 -0700)]
nx-match: Handle receiving variable length fields.

This adds support for receiving variable length fields encoded in
NXM/OXM and mapping them into OVS internal structures. In order
for this to make sense, we need to define some semantics:

There are three lengths that matter in this process: the maximum
size of the field (represented as the existing mf->n_bytes), the
size of the field in the incoming NXM (given by the length in the
NXM header), and the currently configured length of the field
(defined by the consumer of the field and outside the scope of
this patch).

Fields are modeled as being their maximum length and have the
characteristics expected by exsiting code (i.e. exact match fields
have masks that are all 1's for the whole field, etc.). Incoming
NXMs are stored in the field in the least significant bits. If
the NXM length is larger than the field, is is truncated, if it
is smaller it is zero-extended. When the field is consumed, the
component that needs data picks the configured length out of the
generated field.

In most cases, the configured and NXM lengths will be equal and
these edge cases do not matter. However, since we cannot easily
enforce that the lengths match (and might not even know what the
right length is, such as in the case of a string parsed by
ovs-ofctl), these semantics should provide deterministic results
that are easy to understand and not require most existing code
to be aware of variable length fields.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agonx-match: Support variable length header lookup.
Jesse Gross [Thu, 7 May 2015 00:59:24 +0000 (17:59 -0700)]
nx-match: Support variable length header lookup.

Currently we treat the entire NXM/OXM header, including length,
as an ID to define a field. However, this does not allow for
multiple lengths of a particular field.

If a field has been marked as variable, we should ignore the length
when looking up the field and only use the class and field. We
continue to use the length for non-variable fields to ensure that
we don't accept something that can never match.

Signed-off-by: Jesse Gross <jesse@nicira.com>
8 years agometaflow: Allow fields to be marked as variable length.
Jesse Gross [Thu, 7 May 2015 00:57:03 +0000 (17:57 -0700)]
metaflow: Allow fields to be marked as variable length.

Until now, all fields that OVS can match against have been fixed
size (variable length headers can be skipped during parsing but
the match is fixed). However, Geneve options can vary in size
so we must not require the size of these fields to be known
at compile time.

This allows data types to be annotated with not only their size
but whether the field can be smaller than that. The following
patches will change OpenFlow parsing based on that.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agobitmap: Convert single bitmap functions to 64-bit.
Jesse Gross [Thu, 25 Jun 2015 16:18:38 +0000 (09:18 -0700)]
bitmap: Convert single bitmap functions to 64-bit.

Currently the functions to set, clear, and iterate over bitmaps
only operate over 32 bit values. If we convert them to handle
64 bit bitmaps, they can be used in more places.

Suggested-by: Ben Pfaff <blp@nicira.com>
Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agotests: Use taskkill if tskill is not available, on Windows.
Ben Pfaff [Thu, 25 Jun 2015 15:34:39 +0000 (08:34 -0700)]
tests: Use taskkill if tskill is not available, on Windows.

This is not the minimal change; it "improves" the rest of the code as well.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
8 years agopython: Fix issue with probes for JSONRPC connections
Sumit Garg [Thu, 25 Jun 2015 13:24:54 +0000 (09:24 -0400)]
python: Fix issue with probes for JSONRPC connections

When opening a JSONRPC connection, the health probes
are incorrectly getting turned off for connections
that need probes.

In other words, when stream_or_pstream_needs_probes()
return non-zero, the probes are gettting disabled as
the probe interval is getting set to zero. This leads
to incorrect behavior such that probes are:

  - not getting turned off for unix: connections
  - getting turned off for tcp:/ssl: connections

The changes in this commit fix this issue.

Signed-off-by: Sumit Garg <sumit@extremenetworks.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agopython: Fix writing to non-"alert" column for newly inserted row.
Sumit Garg [Thu, 25 Jun 2015 15:51:42 +0000 (08:51 -0700)]
python: Fix writing to non-"alert" column for newly inserted row.

When 'alert' was turned off on a column, the code was erroring out when
value for that column was being set in a newly inserted row. This is
because the row._data was None at this time.

It seems that new rows are not initialized to defaults and that's why the
NULL error happens.  IMO a newly inserted row should automatically get
intialized to default values.  This new behavior can be implemented as a
separate improvement sometime in the future.

For now, I don't see an issue with adding the additional check. This new
check can continue as-is even after the new behavior is implemented.

Signed-off-by: Sumit Garg <sumit@extremenetworks.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agopython: Fix attempt to use a bool as a function.
Sumit Garg [Thu, 25 Jun 2015 12:44:10 +0000 (08:44 -0400)]
python: Fix attempt to use a bool as a function.

A bool (has_lock) was being accessed as a function call leading to a
runtime exception.

Signed-off-by: Sumit Garg <sumit@extremenetworks.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agotests: Reduce user burden for running "make check".
Alin Serdean [Thu, 25 Jun 2015 15:30:34 +0000 (15:30 +0000)]
tests: Reduce user burden for running "make check".

With this commit, users do not have to manually add the pthread-win32
DLL directory to their PATH.

Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Co-authored-by: Ben Pfaff <blp@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto-dpif: Fix coding style.
Thadeu Lima de Souza Cascardo [Tue, 23 Jun 2015 20:03:14 +0000 (17:03 -0300)]
ofproto-dpif: Fix coding style.

Identation was one extra level at ofproto_unixctl_mcast_snooping_show.

Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoovn: Add get/set-enabled to ovn-nbctl.
Russell Bryant [Tue, 23 Jun 2015 18:22:09 +0000 (14:22 -0400)]
ovn: Add get/set-enabled to ovn-nbctl.

This patch adds support for getting and setting the 'enabled' column
for logical ports using ovn-nbctl.

Signed-off-by: Russell Bryant <rbryant@redhat.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoovn: Add logical port 'enabled' state.
Russell Bryant [Tue, 23 Jun 2015 18:22:08 +0000 (14:22 -0400)]
ovn: Add logical port 'enabled' state.

This patch adds a new column to the Logical_Port table of the
OVN_Northbound database called 'enabled'.  The purpose is to allow a
port to be administratively enabled or disabled.  It is sometimes
useful to keep a port and its related configuration, but temporarily
disable it, which means no traffic is allowed in or out of the port.

The implementation is fairly non-invasive as it only required minor
changes to the logical pipeline.

Signed-off-by: Russell Bryant <rbryant@redhat.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoMakefiles: Move xml2nroff rule from ovn directory to top level.
Ben Pfaff [Mon, 22 Jun 2015 22:42:29 +0000 (15:42 -0700)]
Makefiles: Move xml2nroff rule from ovn directory to top level.

Originally only the OVN documentation used the XML format, but now it's
used outside the ovn directory (initially for ovs-sim.1) so it's more
logical to have the xml->nroff rule at the top level.

Reported-by: Alex Wang <alexw@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agonx-match: Fix typo in comment.
Ben Pfaff [Wed, 24 Jun 2015 18:46:26 +0000 (11:46 -0700)]
nx-match: Fix typo in comment.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
8 years agonx-match: Fix distribution of hash function for NXM/OXM headers.
Ben Pfaff [Wed, 24 Jun 2015 18:17:12 +0000 (11:17 -0700)]
nx-match: Fix distribution of hash function for NXM/OXM headers.

NXM/OXM headers as represented in this file are 64-bit long and the low
bits are essentially constant (almost always 0) so using hash_int(),
which takes an uint32_t, is going to be a useless hash function.  This
commit fixes the problem.

Found by inspection.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
8 years agodatapath-windows: Wrong cleanup of newly created multiple NBLs
Sorin Vinturis [Wed, 24 Jun 2015 10:56:55 +0000 (10:56 +0000)]
datapath-windows: Wrong cleanup of newly created multiple NBLs

Bug found in OvsPartialCopyToMultipleNBLs function in the cleanup part of
the code. Before completing the current NBL (newNbl) the NEXT link for the
following NBL (firstNbl) was broken, instead of the current one (newNbl).

Signed-off-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-at: https://github.com/openvswitch/ovs-issues/issues/87
Acked-by: Nithin Raju <nithin@vmware.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoovsdb: Flush JSON cache only when necessary
Andy Zhou [Thu, 11 Jun 2015 00:24:08 +0000 (17:24 -0700)]
ovsdb: Flush JSON cache only when necessary

Currently, JSON cache is always flushed whenever the monitor receives
a transaction. This patch improves the JSON cache efficiency by only
flush the JSON cache when a transaction causes client visible
changes, avoiding unnecessary flushes.

Suggested-by: Ben Pfaff <blp@nicira.com>
Signed-off-by: Andy Zhou <azhou@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoovsdb: Only update monitor when necessary
Andy Zhou [Thu, 11 Jun 2015 00:11:09 +0000 (17:11 -0700)]
ovsdb: Only update monitor when necessary

Some DB modification transactions won't affect the columns of a monitor.
Skip those updates.

Signed-off-by: Andy Zhou <azhou@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoovsdb: add ovsdb_monitor_row_update_type()
Andy Zhou [Wed, 10 Jun 2015 20:19:43 +0000 (13:19 -0700)]
ovsdb: add ovsdb_monitor_row_update_type()

The logic of determining row update type will be useful in the following
patch. Make it into a function.

Signed-off-by: Andy Zhou <azhou@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agodatapath-windows: Return success for already existing WFP objects
Sorin Vinturis [Thu, 18 Jun 2015 18:37:13 +0000 (18:37 +0000)]
datapath-windows: Return success for already existing WFP objects

There are cases when the WFP callout or sublayer, being persistent
objects, already exists when we try to register the OVS callout. In
this cases, when trying to add again these WFP objects the return code
is STATUS_FWP_ALREADY_EXISTS, which we are interpreting as an error.
This is incorrect and this patch changes that.

Signed-off-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-at: https://github.com/openvswitch/ovs-issues/issues/84
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoMakefiles: Stop distributing files because building them requires Python.
Ben Pfaff [Wed, 10 Jun 2015 16:04:23 +0000 (09:04 -0700)]
Makefiles: Stop distributing files because building them requires Python.

A long time ago, the Open vSwitch build did not depend on Python (whereas
the runtime did), so the "make dist" based distribution included the
results of Python build tools.  Later, the build began using Python,
but the distribution still included some of those results, because no one
had gone to the trouble of changing them.  This commit changes the
Makefiles not to distribute Python-generated files but instead to just
generate them at build time.

Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoIncrease prerequisite from Python 2.4 to Python 2.7.
Ben Pfaff [Wed, 10 Jun 2015 16:04:22 +0000 (09:04 -0700)]
Increase prerequisite from Python 2.4 to Python 2.7.

This means that users of XenServer 6.5 and earlier will need to install
Python 2.7.

Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agonroff: Fix the escape of '.'.
Ben Pfaff [Tue, 23 Jun 2015 18:06:01 +0000 (11:06 -0700)]
nroff: Fix the escape of '.'.

Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agodb-ctl-base: Improve show command.
Alex Wang [Fri, 12 Jun 2015 02:29:40 +0000 (19:29 -0700)]
db-ctl-base: Improve show command.

This commit adds improvement to 'show' command logic and allows it
to print key->table_ref maps.  The direct effect can be observed
from the tests/vtep-ctl.at change.  The improvement will also be
used in the ovn-sbctl implementation.

Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agovtep-ctl: Use db-ctl-base.
Alex Wang [Thu, 11 Jun 2015 21:09:27 +0000 (14:09 -0700)]
vtep-ctl: Use db-ctl-base.

This commit makes vtep-ctl use db-ctl-base to avoid duplicate code.
As an addition, a 'show' command is added to vtep-ctl.

Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agodb-ctl-base: Librarize database command manual.
Alex Wang [Fri, 12 Jun 2015 00:08:52 +0000 (17:08 -0700)]
db-ctl-base: Librarize database command manual.

This commit extracts the database command manual and puts it into
db-ctl-base.man.

Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agodb-ctl-base: Librarize show command.
Alex Wang [Thu, 11 Jun 2015 16:45:06 +0000 (09:45 -0700)]
db-ctl-base: Librarize show command.

This commit extracts the 'show' command code and puts it into the
db-ctl-base module.

Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agodb-ctl-base: Librarize code in parse_options().
Alex Wang [Thu, 11 Jun 2015 15:19:15 +0000 (08:19 -0700)]
db-ctl-base: Librarize code in parse_options().

This commit extracts general code from parse_options() and puts it into
db-ctl-base module.

Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agodb-ctl-base: Make common database command code into library.
Alex Wang [Thu, 28 May 2015 23:19:15 +0000 (16:19 -0700)]
db-ctl-base: Make common database command code into library.

This commit extracts common database command (e.g. ovs-vsctl, vtep-ctl)
code into a new library module, db-ctl-base.  Specifically, the module
unifies the command syntax and common database-operating commands like
(get, list, find, set ...), and provides apis which allow user to create
more specific commands.

Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoovs-vsctl: Simplify code.
Alex Wang [Wed, 10 Jun 2015 22:31:51 +0000 (15:31 -0700)]
ovs-vsctl: Simplify code.

Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoAdd a few OVN files as part of DISTCLEANFILES.
Gurucharan Shetty [Tue, 23 Jun 2015 14:31:41 +0000 (07:31 -0700)]
Add a few OVN files as part of DISTCLEANFILES.

Reported-by: Ian Stokes <ian.stokes@intel.com>
Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Tested-by: Ian Stokes <ian.stokes@intel.com>
Acked-by: Russell Bryant <rbryant@redhat.com>
8 years agotests: Remove the windows service in case it failed to start
Alin Serdean [Mon, 22 Jun 2015 22:45:18 +0000 (22:45 +0000)]
tests: Remove the windows service in case it failed to start

In case the ovsdb-server failed to start, the defined service was not
properly cleaned.

Add a run-if-false command in case the service failed to start.

Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
8 years agobfd: Add OVS_VSWITCHD_STOP to bfd unit tests
Alin Serdean [Mon, 22 Jun 2015 22:45:17 +0000 (22:45 +0000)]
bfd: Add OVS_VSWITCHD_STOP to bfd unit tests

On Windows the following tests hang unless we also call
the OVS_VSWITCHD_STOP macro to stop the executable.

Tested on Windows and Linux

Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
8 years agoofproto-dpif-xlate: Add support for OpenFlow group chaining.
Ben Pfaff [Mon, 22 Jun 2015 22:15:40 +0000 (15:15 -0700)]
ofproto-dpif-xlate: Add support for OpenFlow group chaining.

Requested-by: Vinllen Chen <cvinllen@gmail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agotests: Adjust output of vconn for windows.
Gurucharan Shetty [Mon, 15 Jun 2015 15:13:06 +0000 (08:13 -0700)]
tests: Adjust output of vconn for windows.

Recent tests added for openflow atomic bundle support
looks for Linux specific output in logs. Adjust them
so that tests pass in Windows too.

Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
8 years agoofproto.at: Don't specify the specific error.
Gurucharan Shetty [Fri, 12 Jun 2015 17:40:57 +0000 (10:40 -0700)]
ofproto.at: Don't specify the specific error.

On Windows, we don't do a good job of translating errors to Linux
type errors.  So in the tests, don't look for a specific type of
error.

Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
8 years agorpms: Exclude OVN files from openvswitch packages.
Gurucharan Shetty [Mon, 22 Jun 2015 15:37:29 +0000 (11:37 -0400)]
rpms: Exclude OVN files from openvswitch packages.

Currently rhel rpm does not build because of OVN files. This
patch only fixes the build failures. We eventually may have
to add OVN packages for RHEL, Xenserver and Debian.

Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>