cascardo/ovs.git
8 years agoutilities: Ignore generated files.
Alin Serdean [Fri, 19 Jun 2015 20:08:03 +0000 (20:08 +0000)]
utilities: Ignore generated files.

Add
utilities/ovs-sim
utilities/ovs-sim.1

Found by issuing make.

Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agodatapath-windows: Initialize reference count when enabling extension
Sorin Vinturis [Fri, 19 Jun 2015 16:33:56 +0000 (16:33 +0000)]
datapath-windows: Initialize reference count when enabling extension

When the extension is initialized the global reference count, used for
preventing early deallocation of the switch extension, is set to 1.
Enabling and then disabling the extension leaves the latter reference
count to zero. Because of this the switch context fails to be acquired,
i.e OvsAcquireSwitchContext returns zero, and that affects driver's
communication to the userspace.

The solution is to initialize the reference count each time the extension
is enabled.

Signed-off-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-by: Nithin Raju <nithin@vmware.com>
Reported-at: https://github.com/openvswitch/ovs-issues/issues/86
Acked-by: Nithin Raju <nithin@vmware.com>
Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
8 years agodatapath-windows: use correct dst port during Vxlan Tx
Nithin Raju [Fri, 19 Jun 2015 16:13:08 +0000 (09:13 -0700)]
datapath-windows: use correct dst port during Vxlan Tx

A previous commit used the wrong DST port in the UDP header during Vxlan
Tx which caused Vxlan tunneling to break. Fixing it here..

Also included is a cosmetic fix in OvsDetectTunnelRxPkt() where we were
using htons() instead of ntohs(). Doesn't make a difference in practice
though.

One more change is, OvsIpHlprCbVxlan() has been nuked since it is not
used. Not sure if it is worth being resurrected.

Testing done: Ping across Vxlan tunnel and Stt tunnel.

Signed-off-by: Nithin Raju <nithin@vmware.com>
Reported-by: Eitan Eliahu <eliahue@vmware.com>
Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
8 years agoMerge remote-tracking branch 'origin/master' into ovn4
Justin Pettit [Fri, 19 Jun 2015 05:02:55 +0000 (22:02 -0700)]
Merge remote-tracking branch 'origin/master' into ovn4

8 years agoodp-util: Convert flow serialization parameters to a struct.
Jesse Gross [Tue, 16 Jun 2015 18:15:28 +0000 (11:15 -0700)]
odp-util: Convert flow serialization parameters to a struct.

Serializing between userspace flows and netlink attributes currently
requires several additional parameters besides the flows themselves.
This will continue to grow in the future as well. This converts
the function arguments to a parameters struct, which makes the code
easier to read and allowing irrelevant arguments to be omitted.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Signed-off-by: Andy Zhou <azhou@nicira.com>
8 years agoPrepare for post-2.4.0 (2.4.90).
Justin Pettit [Wed, 17 Jun 2015 23:12:46 +0000 (16:12 -0700)]
Prepare for post-2.4.0 (2.4.90).

Signed-off-by: Justin Pettit <jpettit@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
8 years agoPrepare for 2.4.0.
Justin Pettit [Wed, 17 Jun 2015 23:09:48 +0000 (16:09 -0700)]
Prepare for 2.4.0.

Signed-off-by: Justin Pettit <jpettit@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
8 years agodatapath-windows: Return pending for IRPs completed later
Sorin Vinturis [Thu, 18 Jun 2015 13:48:09 +0000 (13:48 +0000)]
datapath-windows: Return pending for IRPs completed later

Return STATUS_PENDING for IRPs that are completed later in another
thread.

Signed-off-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-at: https://github.com/openvswitch/ovs-issues/issues/83
Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoAUTHORS: Add Thadeu Lima de Souza Cascardo.
Ben Pfaff [Wed, 17 Jun 2015 18:14:31 +0000 (11:14 -0700)]
AUTHORS: Add Thadeu Lima de Souza Cascardo.

Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoAdd IGMPv3 support.
Thadeu Lima de Souza Cascardo [Wed, 17 Jun 2015 17:12:20 +0000 (14:12 -0300)]
Add IGMPv3 support.

Support IGMPv3 messages with multiple records. Make sure all IGMPv3
messages go through slow path, since they may carry multiple multicast
addresses, unlike IGMPv2.

Tests done:

* multiple addresses in IGMPv3 report are inserted in mdb;
* address is removed from IGMPv3 if record is INCLUDE_MODE;
* reports sent on a burst with same flow all go to userspace;
* IGMPv3 reports go to mrouters, i.e., ports that have issued a query.

Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
Acked-by: Flavio Leitner <fbl@sysclose.org>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto-dpif-xlate: Make IGMP packets always take slow path.
Thadeu Lima de Souza Cascardo [Wed, 17 Jun 2015 17:12:19 +0000 (14:12 -0300)]
ofproto-dpif-xlate: Make IGMP packets always take slow path.

IGMP packets need to take the slow path. Otherwise, packets that match
the same flow will not be processed by OVS. That might prevent OVS from
updating the expire time for entries already in the mdb, but also to
lose packets with different addresses in the payload.

Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
Acked-by: Flavio Leitner <fbl@sysclose.org>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoovn: Remove completed items from TODO.
Ben Pfaff [Tue, 16 Jun 2015 17:33:15 +0000 (10:33 -0700)]
ovn: Remove completed items from TODO.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agolacp: Remove packed attribute from struct lacp_pdu.
Ben Pfaff [Tue, 16 Jun 2015 15:47:34 +0000 (08:47 -0700)]
lacp: Remove packed attribute from struct lacp_pdu.

The packed annotation doesn't do anything here because all of the members
in the structure are naturally aligned.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Flavio Leitner <fbl@sysclose.org>
Acked-by: Ethan Jackson <ethan@nicira.com>
8 years agoauto-attach: Cleanup i-sid/vlan mappings associated with lldp-enabled port.
Dennis Flynn [Tue, 16 Jun 2015 21:33:35 +0000 (17:33 -0400)]
auto-attach: Cleanup i-sid/vlan mappings associated with lldp-enabled port.

This commit fixes a bug where the i-sid/vlan mapping structures associated with
an lldp-enabled port were not being freed during general port cleanup.

Signed-off-by: Dennis Flynn <drflynn@avaya.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agodocs: Fix alignment for diagram in native-tunneling.md.
Mark D. Gray [Wed, 17 Jun 2015 11:49:25 +0000 (12:49 +0100)]
docs: Fix alignment for diagram in native-tunneling.md.

Markdown was not formatted correctly and, as a result,
was displaying incorrectly on github.

Signed-off-by: Mark D. Gray <mark.d.gray@intel.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoofctrl: Don't use designated initializers.
Gurucharan Shetty [Mon, 15 Jun 2015 19:15:44 +0000 (12:15 -0700)]
ofctrl: Don't use designated initializers.

MSVC 2013 does not like designated initializers when
structs are initialized inside structs.
Apparently it has been fixed in MSVC 2015.

Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoovs-sim: New utility for multi-node OVS and OVN simulation.
Ben Pfaff [Tue, 16 Jun 2015 15:38:46 +0000 (08:38 -0700)]
ovs-sim: New utility for multi-node OVS and OVN simulation.

Please see the examples in ovs-sim(1) for some examples of how this
can be useful.

Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoovs-vtep: Support userspace datapaths.
Daniele Di Proietto [Tue, 16 Jun 2015 15:25:24 +0000 (16:25 +0100)]
ovs-vtep: Support userspace datapaths.

With this commit, the VTEP emulator detects the datapath_type of the
bridge used as a "physical" switch, and creates subsequent bridges
with the same type.  This allows ovs-vtep to work with the userspace
datapath.

Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
Acked-by: Gurucharan Shetty <gshetty@nicira.com>
8 years agoovn-nbctl: Take default database target from OVN_NB_DB in environment.
Ben Pfaff [Sun, 14 Jun 2015 01:02:02 +0000 (18:02 -0700)]
ovn-nbctl: Take default database target from OVN_NB_DB in environment.

This makes life easier for testing at the point you start to separate your
environment into multiple machines.

Also work on the manpage a little.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agoxml2nroff: Add support for variable substitutions.
Ben Pfaff [Tue, 16 Jun 2015 15:22:46 +0000 (08:22 -0700)]
xml2nroff: Add support for variable substitutions.

This allows XML-generated manpages in the source tree to include correct
directory names for the local configuration, instead of just the plain
nroff ones.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agodummy: Introduce new --enable-dummy=system option.
Ben Pfaff [Sat, 13 Jun 2015 23:58:49 +0000 (16:58 -0700)]
dummy: Introduce new --enable-dummy=system option.

Until now there have been two variants for --enable-dummy:

    * --enable-dummy: This adds support for "dummy" dpif and netdev.

    * --enable-dummy=override: In addition, this replaces *every* existing
      dpif and netdev by the dummy type.

The latter is useful for testing but it defeats the possibility of using
the userspace native tunneling implementation (because all the tunnel
netdevs get replaced by dummy netdevs).  Thus, this commit adds a third
variant:

    * --enable-dummy=system: This replaces the "system" dpif and netdev
      by dummies but leaves the others untouched.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agonetdev: Initialize at the beginning of netdev_unregister_provider().
Ben Pfaff [Sat, 13 Jun 2015 23:59:49 +0000 (16:59 -0700)]
netdev: Initialize at the beginning of netdev_unregister_provider().

Otherwise, if netdev_unregister_provider() is called before any other
netdev function, netdev_class_mutex is not initialized and the attempt to
lock it aborts.

This doesn't fix an existing bug but with the following commit
--enable-dummy=system will make netdev_unregister_provider() the first
netdev function to be called.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agodpif: Generalize test for dummy dpifs beyond the name.
Ben Pfaff [Sat, 13 Jun 2015 22:08:31 +0000 (15:08 -0700)]
dpif: Generalize test for dummy dpifs beyond the name.

When --enable-dummy=system or --enable-dummy=override is in use, dpifs
other than "dummy" are actually dummy dpifs, so use a more reliable test.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agoofproto-dpif-xlate: Add native tunnel information to ofproto/trace.
Ben Pfaff [Sun, 10 May 2015 07:05:23 +0000 (00:05 -0700)]
ofproto-dpif-xlate: Add native tunnel information to ofproto/trace.

I found this invaluable for debugging native tunnels over dummy devices.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agoofproto-dpif: Allow translation reports to include formatted data.
Ben Pfaff [Sun, 10 May 2015 07:04:25 +0000 (00:04 -0700)]
ofproto-dpif: Allow translation reports to include formatted data.

This allow the reports to have additional useful information.  An upcoming
commit will take advantage of this.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agonetdev-dummy: Implement ARP responder.
Ben Pfaff [Sun, 10 May 2015 07:01:59 +0000 (00:01 -0700)]
netdev-dummy: Implement ARP responder.

This is the only missing piece to make native tunneling work with dummy
devices for testing purposes.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agopackets: Generalize compose_arp().
Ben Pfaff [Sun, 14 Jun 2015 18:03:23 +0000 (11:03 -0700)]
packets: Generalize compose_arp().

Until now, compose_arp() has only been able to compose ARP requests.  This
extends it to composing general ARP packets, in particular replies.
An upcoming commit will make use of this capability.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agonetdev-dummy: Report EADDRNOTAVAIL when no IPv4 address is configured.
Ben Pfaff [Sun, 10 May 2015 06:58:41 +0000 (23:58 -0700)]
netdev-dummy: Report EADDRNOTAVAIL when no IPv4 address is configured.

This conforms with the interface described in netdev-provider.h.

Found when experimenting with native tunneling and dummy devices.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agodatapath-windows: BSOD when disabling the extension
Sorin Vinturis [Thu, 28 May 2015 20:30:57 +0000 (20:30 +0000)]
datapath-windows: BSOD when disabling the extension

When the filter detach routine is called while there are packets
still in processing, the OvsUninitSwitchContext function call will
decrement the switch context reference count without releasing the
switch context structure. This behaviour is correct and expected,
but the BSOD is caused in this case because the gOvsSwitchContext
variable is set to NULL, which is wrong.

The gOvsSwitchContext global variable must be set to NULL only when
the switch context structure is actually released.

Signed-off-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-at: https://github.com/openvswitch/ovs-issues/issues/80
Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoovn-sb: Remove redundant "attached_port" column from Gateway table.
Ben Pfaff [Mon, 15 Jun 2015 22:28:43 +0000 (15:28 -0700)]
ovn-sb: Remove redundant "attached_port" column from Gateway table.

The keys in the Chassis table's "gateway_ports" column report the same
information as the Gateway table's "attached_port" column, so this commit
removes the latter.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agodpif-netdev: Prefetch next packet before miniflow_extract().
Daniele Di Proietto [Mon, 15 Jun 2015 18:06:39 +0000 (19:06 +0100)]
dpif-netdev: Prefetch next packet before miniflow_extract().

It appears that miniflow_extract() in emc_processing() spends a lot of
cycles waiting for the packet's data to be read.

Prefetching the next packet's data while parsing removes this delay.
For a single flow pipeline the throughput improves by ~10%.  With a
more realistic pipeline the change has a much smaller effect (~0.5%
improvement)

Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
8 years agoovs-ctl: let openvswitch startup to NOT hold up system boot upon error
Sabyasachi Sengupta [Mon, 15 Jun 2015 21:57:53 +0000 (14:57 -0700)]
ovs-ctl: let openvswitch startup to NOT hold up system boot upon error

Abort openvswitch startup script if ovsdb startup fails for
some reason. This helps in getting the system startup to NOT hang
indefinitely, as was seen in a recent report when ovsdb failed with
"I/O error: /etc/openvswitch/conf.db: failed to lock lockfile
(Resource temporarily unavailable)" and system remained in hung state
forever, unless manually rebooted from console.

Signed-off-by: Sabyasachi Sengupta <sabyasachi.sengupta@alcatel-lucent.com>
[blp@nicira.com changed an 'if' statement to '||']
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoflow: Make assertions about offsets within struct flow easier to follow.
Ben Pfaff [Tue, 9 Jun 2015 18:32:24 +0000 (11:32 -0700)]
flow: Make assertions about offsets within struct flow easier to follow.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
8 years agoUpdate location for Neutron plugin.
Russell Bryant [Sat, 13 Jun 2015 01:08:33 +0000 (21:08 -0400)]
Update location for Neutron plugin.

The git repository for the neutron plugin has been renamed to reflect
that it is now officially part of the OpenStack Neutron project.  The
repo now lives in the "openstack" namespace.

Also remove the link to the todo file as those are now just tracked in
the networking-ovn bug tracker (launchpad bugs).

Signed-off-by: Russell Bryant <rbryant@redhat.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agofedora.spec: Create openvswitch-ovn package.
Russell Bryant [Fri, 12 Jun 2015 16:51:24 +0000 (12:51 -0400)]
fedora.spec: Create openvswitch-ovn package.

This patch creates a new subpackage for OVN, openvswitch-ovn.  It also
installs systemd unit files for ovn-controller and ovn-northd.

If you want to run ovn-controller:

    # systemctl start ovn-controller

If you want to run ovn-northd:

    # systemctl start ovn-northd

Both systemd units are currently set to depend on openvswitch.  If
further ovsdb initialization is required for the OVN databases before
ovn-northd can start, that will be handled automatically by ovn-ctl
when you start the ovn-northd service.

This currently assumes that ovn-northd runs on the same host as
ovsdb-server that is hosting the OVN databases.  That seems like a
reasonable assumption in the current architecture and can be evolved
later when needed.

Signed-off-by: Russell Bryant <rbryant@redhat.com>
CC: Flavio Leitner <fbl@redhat.com>
CC: Ben Pfaff <blp@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoovn: Add ovn-ctl to assist with OVN daemon lifecycle.
Russell Bryant [Fri, 12 Jun 2015 16:51:23 +0000 (12:51 -0400)]
ovn: Add ovn-ctl to assist with OVN daemon lifecycle.

This patch introduces ovn-ctl, which is similar to ovs-ctl.  I opted
for a new script as everything in OVN so far is nicely isolated, so a
new script seemed to make the most sense.

If you'd like to run ovn-controller on a host already running ovs:

    # ovn-ctl start_controller

If you'd like to run ovn-northd:

    # ovn-ctl start_northd

Note that ovn-ctl assumes that ovn-northd is running on the same
server as ovsdb-server hosting the OVN databases.  Based on the
current architecture this seems like a completely reasonable
assumption.  This can be improved later when needed.

There's some additional stuff happening in start_northd to make the
experience nicer and not require additional steps by the
administrator.  It creates the OVN dbs if they don't exist.  If
ovsdb-server hasn't loaded them, it tells it to load them, as well.

ovn-ctl also supports running everything on the same host.  This would
be common in a test environment with a single host or small set of
hosts.  That would simply be:

    # ovs-ctl start --system-id=random
    # ovn-ctl start_northd
    # ovn-ctl start_controller

Signed-off-by: Russell Bryant <rbryant@redhat.com>
CC: Flavio Leitner <fbl@redhat.com>
CC: Ben Pfaff <blp@nicira.com>
[blp@nicira.com added configure.ac code to create ovn/utilities builddir]
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agonetdev-dpdk: add dpdk vhost-user ports
Ciara Loftus [Thu, 4 Jun 2015 13:51:40 +0000 (06:51 -0700)]
netdev-dpdk: add dpdk vhost-user ports

This patch adds support for a new port type to the userspace
datapath called dpdkvhostuser.

A new dpdkvhostuser port will create a unix domain socket which
when provided to QEMU is used to facilitate communication between
the virtio-net device on the VM and the OVS port on the host.

vhost-cuse ('dpdkvhost') ports are still available as 'dpdkvhostcuse'
ports and will be enabled if vhost-cuse support is detected in the
DPDK build specified during compilation of the switch. Otherwise,
vhost-user ports are enabled.

Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
Acked-by: Flavio Leitner <fbl@redhat.com>
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
8 years agoovn-controller: Verify bridge ports before changing.
Ben Pfaff [Sun, 14 Jun 2015 01:46:34 +0000 (18:46 -0700)]
ovn-controller: Verify bridge ports before changing.

OVSDB is transactional but it does not have built-in protection from dirty
reads.  To avoid those, it's necessary to manually add verification to
transactions to ensure that any data reads whose values were essential to
later writes have not changed.  ovn-controller didn't do that for
the "ports" column in the Bridge table, which means that if the set of
ports changed when it didn't expect it, it could revert changes made by
other database clients.

In particular this showed up in a scale test, where ovn-controller would
delete "vif" ports added via ovs-vsctl.

(It's easy to see exactly what happened by looking in the database log
with "ovsdb-tool -mm show-log".)

Reported-by: Russell Bryant <rbryant@redhat.com>
Reported-at: http://openvswitch.org/pipermail/dev/2015-June/056326.html
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoMerge "master" into "ovn".
Ben Pfaff [Sun, 14 Jun 2015 01:10:46 +0000 (18:10 -0700)]
Merge "master" into "ovn".

This allows OVN to take advantage of the client scalability changes
that have been committed to ovsdb-server on master recently.

Conflicts:
Makefile.am
lib/learn.c

8 years agoofproto: Support port mods in bundles.
Jarno Rajahalme [Fri, 12 Jun 2015 23:12:56 +0000 (16:12 -0700)]
ofproto: Support port mods in bundles.

Add support for port mods in an OpenFlow 1.4 bundle, as required for
the minimum support level by the OpenFlow 1.4 specification.  If the
bundle includes port mods, it may not specify the OFPBF_ATOMIC flag.
Port mods and flow mods in a bundle are always applied in order and
the consecutive flow mods between port mods are made available to
lookups atomically.

Note that ovs-ofctl does not support creating bundles with port mods.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto: Postpone sending flow removed messages.
Jarno Rajahalme [Fri, 12 Jun 2015 23:12:56 +0000 (16:12 -0700)]
ofproto: Postpone sending flow removed messages.

The final flow stats are available only after there are no references
to the rule.  Postpone sending the flow removed message until the
final stats are available.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoclassifier: Simplify versioning.
Jarno Rajahalme [Fri, 12 Jun 2015 23:12:56 +0000 (16:12 -0700)]
classifier: Simplify versioning.

After all, there are some cases in which both the insertion version
and removal version of a rule need to be considered.  This makes the
cls_match a bit bigger, but makes classifier versioning much simpler
to understand.

Also, avoid using type larger than int in an enum, as it is not
portable C.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoovs-rcu: Comment fixes.
Ben Pfaff [Fri, 12 Jun 2015 17:58:27 +0000 (10:58 -0700)]
ovs-rcu: Comment fixes.

A comment referred to a "Usage" section but the section was named "Use".
This fixes the problem (also a grammar error).

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agorculist: Remove postponed poisoning.
Jarno Rajahalme [Fri, 12 Jun 2015 00:28:37 +0000 (17:28 -0700)]
rculist: Remove postponed poisoning.

Postponed 'next' member poisoning was based on the faulty assumption
that postponed functions would be called in the order they were
postponed.  This assumption holds only for the functions postponed by
any single thread.  When functions are postponed by different
threads, there are no guarantees of the order in which the functions
may be called, or timing between those calls after the next grace
period has passed.

Given this, the postponed poisoning could have executed after
postponed destruction of the object containing the rculist element.

This bug was revealed after the memory leaks on rule deletion were
recently fixed.

This patch removes the postponed 'next' member poisoning and adds
documentation describing the ordering limitations in OVS RCU.

Alex Wang dug out the root cause of the resulting crashes, thanks!

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agovtep-ctl: Fix a bug.
Alex Wang [Tue, 9 Jun 2015 05:57:09 +0000 (22:57 -0700)]
vtep-ctl: Fix a bug.

add_port_to_cache() uses 'cache_name' as the shash node name for
shash_add().  So, the del_cached_port() must also pass 'cache_name'
as argument for shash_find_and_delete().

This bug does not cause any issue currently but should be fixed.

Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Justin Pettit <jpettit@nicira.com>
8 years agoofproto: Revertible eviction.
Jarno Rajahalme [Thu, 11 Jun 2015 22:53:43 +0000 (15:53 -0700)]
ofproto: Revertible eviction.

Handling evictions was broken in the previous patches. Eviction took
place early in the commit, and actually inappropriately bumped the
version number too early.  Now eviction is treated much like a flow
modification, where a new rule replaces the old one, but just without
any 'inheritance' from the evicted rule to the new rule.  This makes
evictions to be executed only when commit is successful, as evictions
are reverted like any other changes when the commit fails.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto: Accurate flow counts.
Jarno Rajahalme [Thu, 11 Jun 2015 22:53:43 +0000 (15:53 -0700)]
ofproto: Accurate flow counts.

Classifier's rule count now contains temporary duplicates and rules
whose deletion has been deferred.  Maintain a new 'n_flows' count in
struct oftable to as the count of rules in the latest version.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoUse classifier versioning.
Jarno Rajahalme [Thu, 11 Jun 2015 22:53:43 +0000 (15:53 -0700)]
Use classifier versioning.

Each rule is now added or deleted in a specific tables version.  Flow
tables are versioned with a monotonically increasing 64-bit integer,
where positive values are valid version numbers.

Rule modifications are implemented as an insertion of a new rule and a
deletion of the old rule, both taking place in the same tables
version.  Since concurrent lookups may use different versions, both
the old and new rule must be available for lookups at the same time.

The ofproto provider interface is changed to accomodate the above.  As
rule's actions need not be modified any more, we no longer need
'rule_premodify_actions', nor 'rule_modify_actions'.  'rule_insert'
now takes a pointer to the old rule and adds a flag that tells whether
the old stats should be forwarded to the new rule or not (this
replaces the 'reset_counters' flag of the now removed
'rule_modify_actions').

Versioning all flow table changes has the side effect of making
learned flows visible for future lookups only.  I.e., the upcall that
executes the learn action, will not see the newly learned action in
it's classifier lookups.  Only upcalls that start executing after the
new flow was added will match on it.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto: Infra for table versioning.
Jarno Rajahalme [Thu, 11 Jun 2015 22:53:43 +0000 (15:53 -0700)]
ofproto: Infra for table versioning.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agotest-classifier: Test versioning features.
Jarno Rajahalme [Thu, 11 Jun 2015 22:53:43 +0000 (15:53 -0700)]
test-classifier: Test versioning features.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoclassifier: Make traversing identical rules robust.
Jarno Rajahalme [Thu, 11 Jun 2015 22:53:42 +0000 (15:53 -0700)]
classifier: Make traversing identical rules robust.

The traversal of the list of identical rules from the lookup threads
is fragile if the list head is removed during the list traversal.

This patch simplifies the implementation of that list by making the
list NULL terminated, singly linked RCU-protected list.  By having the
NULL at the end there is no longer a possiblity of missing the point
when the list wraps around.  This is significant when there can be
multiple elements with the same priority in the list.

This change also decreases the size of the struct cls_match back
pre-'visibility' attribute size.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoodp-util: Remove last use of odp_tun_key_from_attr for formatting.
Jesse Gross [Tue, 9 Jun 2015 17:29:43 +0000 (10:29 -0700)]
odp-util: Remove last use of odp_tun_key_from_attr for formatting.

We formerly converted tunnel attributes to their flow representation
before formatting but now perform all operations directly on the
netlink attributes.

There is one remaining use of odp_tun_key_from_attr() that is not
used for the purposes of generating a flow. This is to check the
mask but this no longer makes sense given the way that we format
the flow itself. In fact, the code is not actually invoked any
more, so we can simply remove it.

This retains the special case for tunnels as a safety measure but it
should not matter in practice.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoovsdb-idl: Document that the IDL always presents a consistent view.
Ben Pfaff [Thu, 11 Jun 2015 17:47:47 +0000 (10:47 -0700)]
ovsdb-idl: Document that the IDL always presents a consistent view.

We've had this question a couple of times so we might as well document it.

Requested-by: Saurabh Shrivastava (सौरभ श्रीवास्तव) <saurabh@gmail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agodatapath-windows: Stateless TCP Tunnelling protocol - Initial implementation
Eitan Eliahu [Thu, 11 Jun 2015 13:35:54 +0000 (06:35 -0700)]
datapath-windows: Stateless TCP Tunnelling protocol - Initial implementation

This change include an initial implementable of STT.

The following should be added:
[1] Checksum offload (SW and HW)
[2] LSO (SW and HW)
[3] IP layer WFP callout for IP segments

Added support for multiple (per TCP port) STT ports

Testing: link layer connection through ping works. File transfer.

Signed-off-by: Eitan Eliahu <eliahue@vmware.com>
Co-authored-by: Saurabh Shah <ssaurabh@vmware.com>
Signed-off-by: Saurabh Shah <ssaurabh@vmware.com>
Acked-by: Nithin Raju <nithin@vmware.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agodatapath-windows: Correctly complete the original NBL with multiple NBs
Sorin Vinturis [Thu, 11 Jun 2015 12:52:49 +0000 (12:52 +0000)]
datapath-windows: Correctly complete the original NBL with multiple NBs

OvsCreateNewNBLsFromMultipleNBs function failed to correctly complete the
original NBL with multiple NBs after creating multiple NBLs with single
NB.

Signed-off-by: Sorin Vinturis <svinturis@cloudbasesolutions.com>
Acked-by: Eitan Eliahu <eliahue@vmware.com>
Acked-by: Nithin Raju <nithin@vmware.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agonetdev-vport: Mark netdev_vport_get_dpif_port() as OVS_WARN_UNUSED_RESULT.
Ben Pfaff [Sat, 6 Jun 2015 05:09:50 +0000 (22:09 -0700)]
netdev-vport: Mark netdev_vport_get_dpif_port() as OVS_WARN_UNUSED_RESULT.

Ignoring the result of this function means that the caller is quite likely
blindly using the character array passed in, instead of the return value,
which leads to latent bugs.

This would have prevented one of the bugs fixed by commit "tunneling: Fix a
tunnel name display bug".

CC: Andy Zhou <azhou@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Andy Zhou <azhou@nicira.com>
8 years agoclassifier: Support table versioning
Jarno Rajahalme [Wed, 10 Jun 2015 00:00:00 +0000 (17:00 -0700)]
classifier: Support table versioning

This patch allows classifier rules to become visible and invisible in
specific versions.  A 'version' is defined as a positive monotonically
increasing integer, which never wraps around.

The new 'visibility' attribute replaces the prior 'to_be_removed' and
'visible' attributes.

When versioning is not used, the 'version' parameter should be passed
as 'CLS_MIN_VERSION' when creating rules, and 'CLS_MAX_VERSION' when
looking up flows.

This feature enables the support for atomic OpenFlow bundles without
significant performance penalty on 64-bit systems. There is a
performance decrease in 32-bit systems due to 64-bit atomics used.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoovs-ofctl: Add bundle support and unit testing.
Jarno Rajahalme [Fri, 5 Jun 2015 21:03:12 +0000 (14:03 -0700)]
ovs-ofctl: Add bundle support and unit testing.

All existing ovs-ofctl flow mod commands now take an optional
'--bundle' argument, which executes the flow mods as a single
transaction.  OpenFlow 1.4+ is implicitly assumed when '--bundle' is
specified.

ovs-ofctl 'add-flow' and 'add-flows' commands now accept flow
specifications that start with an optional 'add', 'modify', 'delete',
'modify_strict', or 'delete_strict' keyword, so that arbitrary flow
table modifications may be specified.  For backwards compatibility, a
missing keyword is treated as an 'add'.  With the new '--bundle'
option all the modifications are executed as a single transaction
using an OpenFlow 1.4 bundle.

OpenFlow 1.4 requires bundles to support at least flow and port mods.
This implementation does not yet support port mods in bundles.

Another restriction is that the atomic transactions are not yet
supported.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto: Rename *_begin functions as *_start.
Jarno Rajahalme [Fri, 5 Jun 2015 21:03:11 +0000 (14:03 -0700)]
ofproto: Rename *_begin functions as *_start.

Weirdest things can bother you at night when you try to sleep ;-)

Now we have function triples such as add_flow_begin(),
add_flow_finish(), and add_flow_revert(), where a modification is
started in *_begin(), which can fail, and when successful can be
either made permanent with *_finish(), or cancelled with *_revert().

Linguistically it should be either "begin/end" or "start/finish", not
"begin/finish".  "begin/end" has some C++ STL baggage, so let's go
with "start/finish".  IMO "revert" rhymes with it, too.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agodebian: Remove obsolete manual setting of CFLAGS and warnings from rules.
Ben Pfaff [Sun, 7 Jun 2015 16:48:15 +0000 (09:48 -0700)]
debian: Remove obsolete manual setting of CFLAGS and warnings from rules.

Setting CFLAGS by hand before invoking dpkg-buildflags is ineffective,
because dpkg-buildflags overrides it.

Reported-by: Andrey Korolyov <andrey@xdel.ru>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoconfigure: Stop avoiding -Wformat-zero-length.
Ben Pfaff [Sun, 7 Jun 2015 16:48:14 +0000 (09:48 -0700)]
configure: Stop avoiding -Wformat-zero-length.

Debian likes to enable -Wformat-zero-length, even over our code trying to
disable it.  It isn't too hard to make our code warning-free against this
option, so this commit both stops disabling it and fixes the warnings.

The first fix is to change set_subprogram_name() to take a plain string
instead of a format string, and to adjust its few callers.  This fixes one
warning since one of those callers passed in an empty string.

The second fix is to remove a test for ovs_scan() against an empty string.
I couldn't find a way to avoid a warning for this test, and it isn't too
valuable in any case.

This allows us to drop filtering for -Wformat from the Debian rules file,
so this commit removes it.

Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agotypes: Rename and move ovs_u128_equal().
Joe Stringer [Fri, 29 May 2015 23:17:01 +0000 (16:17 -0700)]
types: Rename and move ovs_u128_equal().

This function doesn't need to be exported in the public OVS headers, and
it had an inconsistent name compared to uuid_equals(). Rename and move.

Signed-off-by: Joe Stringer <joestringer@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoodp-util: Reuse UUID marshalling for UFID.
Joe Stringer [Sat, 30 May 2015 00:08:45 +0000 (17:08 -0700)]
odp-util: Reuse UUID marshalling for UFID.

Unique flow identifiers are really a UUID of sorts, so it makes sense to
reuse the UUID string representations for UFID.

Suggested-by: Ben Pfaff <blp@nicira.com>
Signed-off-by: Joe Stringer <joestringer@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agodpif: Always generate RFC4122 UUIDs for UFID.
Joe Stringer [Tue, 9 Jun 2015 20:35:29 +0000 (13:35 -0700)]
dpif: Always generate RFC4122 UUIDs for UFID.

This patch sacrifices a few bits of hash quality from the 128-bit unique
flow identifiers to make the UFIDs RFC4122-conformant as per the version 4
(random) UUID spec. Given that the 128-bit space is already quite large,
this should not affect the spread of UFIDs in any meaningful way for
hashing.

Signed-off-by: Joe Stringer <joestringer@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoofp-parse: Use F_OUT_PORT when parsing.
Jarno Rajahalme [Tue, 9 Jun 2015 22:24:33 +0000 (15:24 -0700)]
ofp-parse: Use F_OUT_PORT when parsing.

We set this field flag for the cases when an out_port should be
parsed, but failed to make use of it.

Two test cases needed to be updated due to use of out_port in flow
add, while out_port is legal for flow deletes only.

Suggested-by: Ben Pfaff <blp@nicira.com>
Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoodp-util: Simplify parsing function for GCC.
Jarno Rajahalme [Tue, 9 Jun 2015 22:24:33 +0000 (15:24 -0700)]
odp-util: Simplify parsing function for GCC.

GCC 4.7.2 -O3 flagged potential use before initialization for the 'id'
and 'id_mask' being scanned in scan_vxlan_gbp().  For the 'id' this
was a real possiblity, but for the 'id_mask' it seems to be a false
positive in gcc analysis.  Simplify scan_vxlan_gbp() to fix this.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto: Fix memory leak in ofproto_rule_delete().
Jarno Rajahalme [Tue, 9 Jun 2015 22:24:33 +0000 (15:24 -0700)]
ofproto: Fix memory leak in ofproto_rule_delete().

Commit 401aa90e33be (ofproto: Fix memory leak in flow deletion.) fixed
the memory leak when a rule is deleted, but failed to do the same when
all rules in a bridge are deleted just before the bridge itself is
deleted.

This patch adds the necessary unref to ofproto_rule_delete().

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoflow: Add 'const' qualifiers in flow extraction.
Ben Pfaff [Mon, 8 Jun 2015 20:16:07 +0000 (13:16 -0700)]
flow: Add 'const' qualifiers in flow extraction.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Daniele Di Proietto <diproiettod@vmware.com>
8 years agoovsdb-monitor: add json cache
Andy Zhou [Mon, 16 Mar 2015 22:45:27 +0000 (15:45 -0700)]
ovsdb-monitor: add json cache

Although multiple jsonrpc monitors can share the same ovsdb monitor,
each change still needs to translated into json object from scratch.
This can be wasteful if multiple jsonrpc monitors are interested in the
same changes.

Json cache improves this by keeping an copy of json object generated
for transaction X to current transaction. When jsonrpc is interested
in a change, the cache is searched first, if an json object is found,
a copy of it is handed back, skipping the regeneration process.

Any commit to the monitor will empty the cache. This can be further
optimized to not throw away the cache if the updated tables and columns
are not being monitored.

Signed-off-by: Andy Zhou <azhou@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoovsdb-monitor: allow multiple jsonrpc monitors to share a single ovsdb
Andy Zhou [Mon, 16 Mar 2015 10:03:20 +0000 (03:03 -0700)]
ovsdb-monitor: allow multiple jsonrpc monitors to share a single ovsdb
monitor

Store ovsdb monitor in a global hmap. If a newly created ovsdb monitor
object monitors the same tables and columns as an existing one, the
existing monitor will be reused.

With this patch, jsonrpc monitor and ovsdb monitor now have N:1 mapping.
The goals are to:
1) Reduce the cost of maintaining duplicated monitors.
2) Allow for create Json cache for the same updates. Json cache will be
introduced in the following patch.

Signed-off-by: Andy Zhou <azhou@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoovsdb-monitor: refactor ovsdb_monitor_create()
Andy Zhou [Sun, 15 Mar 2015 23:31:41 +0000 (16:31 -0700)]
ovsdb-monitor: refactor ovsdb_monitor_create()

Add ovsdb_monitor_add_jsonrpc_monitor(). This change will allow
ovsdb_monitor to be reference counted.

Signed-off-by: Andy Zhou <azhou@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agotunneling: Fix a tunnel name display bug
Andy Zhou [Thu, 4 Jun 2015 20:45:55 +0000 (13:45 -0700)]
tunneling: Fix a tunnel name display bug

Currently, 'ovs-appctl tnl/ports/show' command won't display gre port
name correctly. Since netdev_vport_get_dpif_port() will not always
set the 'namebuf' it receives. Should use the name by its return
value instead. Found by inspection.

Also extend the test case to cover this command.

Signed-off-by: Andy Zhou <azhou@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoofp-util: Convert flow_metadata to match structure.
Jesse Gross [Sat, 16 May 2015 00:03:17 +0000 (17:03 -0700)]
ofp-util: Convert flow_metadata to match structure.

We have a special flow_metadata structure to represent the parts
of a packet that aren't carried in the payload itself. This is
used in the case where we need to send the packet as a Packet In
to an OpenFlow controller. This is a subset of the more general
struct flow.

In practice, almost all operations we do on this structure involve
converting it to or from a match or have code that is the same as
a match. Serialization to NXM and back is done as a match. There
is special flow_metadata formatting code that is almost identical
to match formatting.

The uses for struct flow_metadata aren't performance critical
when it comes to memory, so we can save quite a bit of code by
just using a match structure directly instead. In addition, as
metadata increases and becomes more complex (Geneve options require
some special handling beyond just additional fields), using the
match structure means we only have to do this work in one place.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoThis commit adds the windows installer to the OVS tree.
Alin Gabriel Serdean [Fri, 5 Jun 2015 22:06:30 +0000 (01:06 +0300)]
This commit adds the windows installer to the OVS tree.

Requirements are the following:
Visual Studio Community 2013
WiX Toolset 3.9
Microsoft_VC120_CRT_x86.msm

More detailed information on the requirements and build instructions
can be found under:
https://github.com/cloudbase/ovs-windows-installer/blob/master/README.rst

To run and make the installer issue the following:

./boot.sh
./configure CC=./build-aux/cccl LD="`which link`" \
LIBS="-lws2_32 -liphlpapi" --prefix="C:/openvswitch/usr" \
--localstatedir="C:/openvswitch/var" --sysconfdir="C:/openvswitch/etc" \
--with-pthread="C:/pthread" --with-vstudiotarget="Release"

make clean && make -j16 windows_installer

To uninstall one could use the following Powershell commandlets:
$app = Get-WmiObject -Class Win32_Product | Where-Object `
 { $_.Name -match "Open Vswitch" }

$app.Uninstall()

Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Co-authored-by: Alessandro Pilotti <apilotti@cloudbasesolutions.com>
Signed-off-by: Alessandro Pilotti <apilotti@cloudbasesolutions.com>
Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
8 years agotests: Fix unit test failure.
Alex Wang [Sun, 7 Jun 2015 20:31:23 +0000 (13:31 -0700)]
tests: Fix unit test failure.

This commit fixes unit test failure caused by commit f171fa8 (odp-util:
Make sure vlan tci mask has exact match for VLAN_CFI.).

Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoovs-appctl-bashcomp: bash_completion shouldn't modify user environment.
Zang MingJie [Sun, 7 Jun 2015 20:21:18 +0000 (13:21 -0700)]
ovs-appctl-bashcomp: bash_completion shouldn't modify user environment.

Signed-off-by: Zang MingJie <zealot0630@gmail.com>
Acked-by: Alex Wang <alexw@nicira.com>
8 years agoodp-util: Make sure vlan tci mask has exact match for VLAN_CFI.
Alex Wang [Sun, 7 Jun 2015 18:38:52 +0000 (11:38 -0700)]
odp-util: Make sure vlan tci mask has exact match for VLAN_CFI.

OVS datapath has check which prevents the installation of flow
that matches VLAN TCI but does not have exact match for VLAN_CFI
bit.  To follow this rule, ovs userspace must make sure the
flow key for datapath flow matching VLAN TCI has exact match for
VLAN_CFI bit.

Before this commit, this is not enforced, so OpenFlow flow like
"vlan_tci=0x000a/0x0fff,action=output:local" can generate datapath
flow like "vlan(vid=10/0xfff,pcp=0/0x0,cfi=1/0)".

With the OVS datapath check, the installation of such datapath
flow will be rejected with:
"|WARN|system@ovs-system: failed to put[create][modify] (Invalid argument)"

This commit makes ovs userspace always exact match the VLAN_CFI
bit if the flow matches VLAN TCI.

Reported-by: Ronald Lee <ronaldlee@vmware.com>
Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
8 years agoAdd support functions for 8021.ad push and pop vlan.
Thomas F. Herbert [Tue, 2 Jun 2015 17:55:28 +0000 (13:55 -0400)]
Add support functions for 8021.ad push and pop vlan.

Changes to allow the tpid to be specified and all vlan tpid checking to be
generalized.

Signed-off-by: Thomas F Herbert <thomasfherbert@gmail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto-dpif: Use xzalloc instead of xmalloc.
Sabyasachi Sengupta [Sat, 6 Jun 2015 05:14:37 +0000 (22:14 -0700)]
ofproto-dpif: Use xzalloc instead of xmalloc.

Use xzalloc instead of xmalloc for some key structure allocations in
ofproto-dpif (viz. ofproto_dpif, ofport_dpif and rule_dpif) so as to
prevent uninitialized values in these structures.

Signed-off-by: Sabyasachi Sengupta <sabyasachi.sengupta@alcatel-lucent.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto-dpif: Avoid creating OpenFlow ports for duplicate tunnels.
Ben Pfaff [Fri, 5 Jun 2015 15:13:28 +0000 (08:13 -0700)]
ofproto-dpif: Avoid creating OpenFlow ports for duplicate tunnels.

Until now, when two tunnels had an identical configuration, both of them
were assigned OpenFlow ports, but only one of those OpenFlow ports was
functional.  With this commit, only one of the two (or more) identically
configured tunnels will be assigned an OpenFlow port number.

Reported-by: Keith Holleman <hollemanietf@gmail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Co-authored-by: Andy Zhou <azhou@nicira.com>
Signed-off-by: Andy Zhou <azhou@nicira.com>
8 years agoappveyor: Add a newer ssl link.
Gurucharan Shetty [Fri, 5 Jun 2015 18:37:52 +0000 (11:37 -0700)]
appveyor: Add a newer ssl link.

The older version is no longer available for download.

Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Alin Serdean <aserdean@cloudbasesolutions.com>
8 years agoLink library updates for appveyor
Alin Serdean [Fri, 5 Jun 2015 18:39:37 +0000 (18:39 +0000)]
Link library updates for appveyor

Add the library iphlpapi to the appveyor.yml build script.

Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
8 years agoovs-vswitchd: Update documentation
Mijo Safradin [Wed, 27 May 2015 08:34:31 +0000 (10:34 +0200)]
ovs-vswitchd: Update documentation

Commit 7a6cf343a410d77e05ebd7bf5b5ade52803879ae raised the MAXFD
limit from 7500 to 65535.

Signed-off-by: Mijo Safradin <mijo@linux.vnet.ibm.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
8 years agodpif-netdev: Fix non-pmd thread queue id.
Daniele Di Proietto [Wed, 3 Jun 2015 14:55:16 +0000 (15:55 +0100)]
dpif-netdev: Fix non-pmd thread queue id.

Non pmd threads have a core_id == UINT32_MAX, while queue ids used by
netdevs range from 0 to the number of CPUs.  Therefore core ids cannot
be used directly to select a queue.

This commit introduces a simple mapping to fix the problem: pmd threads
continue using queues 0 to N (where N is the number of CPUs in the
system), while non pmd threads use queue N+1.

Fixes: d5c199ea7ff7 ("netdev-dpdk: Properly support non pmd threads.")

Reported-by: 차은호 <eunho.cha@atto-research.com
Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
Signed-off-by: Mark D. Gray <mark.d.gray@intel.com>
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Acked-by: Flavio Leitner <fbl@redhat.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
8 years agoUpdate my email address
YAMAMOTO Takashi [Mon, 1 Jun 2015 03:26:40 +0000 (12:26 +0900)]
Update my email address

Signed-off-by: YAMAMOTO Takashi <yamamoto@midokura.com>
Acked-by: Justin Pettit <jpettit@nicira.com>
8 years agolib/util.c: style fixes
Andy Zhou [Tue, 2 Jun 2015 02:07:13 +0000 (19:07 -0700)]
lib/util.c: style fixes

Covert tabs into spaces. Found by inspection.

Signed-off-by: Andy Zhou <azhou@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
8 years agometaflow: Convert hex parsing to use new utility functions.
Jesse Gross [Tue, 19 May 2015 00:17:41 +0000 (17:17 -0700)]
metaflow: Convert hex parsing to use new utility functions.

We now have functions that can do parsing and printing of long hex
strings, so we should use them for meta flow fields to ensure
consistent behavior.

Since these functions can handle infinitely long strings, we can
also increase the maximum field size for MFS_HEXADECIMAL types to
the limit allowed by NXM/OXM. This is useful for future large fields,
such as Geneve options.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Andy Zhou <azhou@nicira.com>
8 years agoofproto: Add support for reverting flow mods and bundle commit.
Jarno Rajahalme [Mon, 1 Jun 2015 22:47:58 +0000 (15:47 -0700)]
ofproto: Add support for reverting flow mods and bundle commit.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto: Split delete_flow*().
Jarno Rajahalme [Fri, 29 May 2015 18:28:39 +0000 (11:28 -0700)]
ofproto: Split delete_flow*().

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto: Split modify_flows().
Jarno Rajahalme [Fri, 29 May 2015 18:28:39 +0000 (11:28 -0700)]
ofproto: Split modify_flows().

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto: Split add_flow().
Jarno Rajahalme [Fri, 29 May 2015 18:28:39 +0000 (11:28 -0700)]
ofproto: Split add_flow().

Split add_flow() to add_flow_begin() which does all the error
checking, and add_flow_finish() which can not fail.

Since we still want to send an error response for an unknown
'buffer_id', send_buffered_packet() now send the error response
itself.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto: Refactor modify_flows__().
Jarno Rajahalme [Fri, 29 May 2015 18:28:39 +0000 (11:28 -0700)]
ofproto: Refactor modify_flows__().

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto: Use enum ofperr for 'error'.
Jarno Rajahalme [Mon, 1 Jun 2015 21:13:05 +0000 (14:13 -0700)]
ofproto: Use enum ofperr for 'error'.

Clean up error return types and related comments.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto: Factor out ofproto_rule_create().
Jarno Rajahalme [Fri, 29 May 2015 18:28:38 +0000 (11:28 -0700)]
ofproto: Factor out ofproto_rule_create().

Makes add_flow() easier to read and understand.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoofproto: Factor out ofproto_rule_insert__().
Jarno Rajahalme [Fri, 29 May 2015 18:28:38 +0000 (11:28 -0700)]
ofproto: Factor out ofproto_rule_insert__().

Pairs well with ofproto_rule_remove__().

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agobundles: Manage bundles in connmgr.
Jarno Rajahalme [Fri, 29 May 2015 18:28:38 +0000 (11:28 -0700)]
bundles: Manage bundles in connmgr.

This will make implementing bundle commit in ofproto.c easier.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agobundles: Validate bundled messages.
Jarno Rajahalme [Tue, 2 Jun 2015 01:07:39 +0000 (18:07 -0700)]
bundles: Validate bundled messages.

OpenFlow bundle messages should be decoded and validated at the time
they are added to the bundle.  This commit does this for flow mod and
port mod messages.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoclassifier: Support duplicate rules.
Jarno Rajahalme [Fri, 29 May 2015 18:28:38 +0000 (11:28 -0700)]
classifier: Support duplicate rules.

OpenFlow 1.4 bundles are easier to implement when it is possible to
mark a rule as 'to_be_removed' and then insert a new, identical rule
with the same priority.

All but one out of the identical rules must be marked as
'to_be_removed', and the one rule that is not 'to_be_removed' must
have been inserted last.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoclassifier: Add support for invisible flows.
Jarno Rajahalme [Fri, 29 May 2015 18:28:38 +0000 (11:28 -0700)]
classifier: Add support for invisible flows.

This makes it possible to tentatively add flows to the classifier
without the datapath seeing them.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
8 years agoofp-util: Fix xid in ofputil_encode_bundle_add().
Jarno Rajahalme [Fri, 29 May 2015 18:28:38 +0000 (11:28 -0700)]
ofp-util: Fix xid in ofputil_encode_bundle_add().

Bundle add must use the same xid as the embedded message.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>