datapath: Add support for Linux 3.11

Kernel 3.11 has support for extended GRE API required for
OVS datapath,  But vxlan still needs out of tree tunneling
compatibility.  Therefore to simplify, all tunneling modules
are forced to use compat tunneling.

CC: James Page <james.page@ubuntu.com>
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
FAQ: Add Q&A about bridge compatibility.

Signed-off-by: Ben Pfaff <blp@nicira.com>
FAQ: Fix misspelling.

Signed-off-by: Ben Pfaff <blp@nicira.com>
configure: check for uuid python module

After introducing commit a5ae88ff8a276e86c842ac102145432662bf711a
"ovsdb-doc: generate vswitch.[pic|gv] files only if dot tool is
available" Open vSwitch did not build anymore on hosts that did not
have uuid python module installed (for example, we still support
XenServer that still uses old python 2.4 and hence does not have uuid).

After this commit ./configure will check whether uuid module is present
and, if it isn't, then it will add python/compat to the PYTHONPATH.

Acked-By: Ben Pfaff <blp@nicira.com>
Signed-Off-By: Ansis Atteka <aatteka@nicira.com>
Issue: 20476
ovs-vtep: Don't flood to multiple 'uknown-dsts'.

This commit changes VTEP simulator's flooding logic as follows:

1. Traffic coming from a VTEP physical port will only be flooded
to all the physical ports in the same VTEP that belongs to that logical
switch and to ONLY one of the devices that have been marked as 'unknown-dst'

2. Traffic coming from any device that has 'unknown-dst' marked, will only be
flooded by VTEP to its physical ports that belong to that logical switch.

Bug #20144.
Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Justin Pettit <jpettit@nicira.com>
ofproto: Send only one OFPT_FLOW_REMOVED message when a flow expires.

Commit 15aaf59932a3 (ofproto: Add global locking around flow table
changes.) introduced doubled messages for expirations.

Reported-by: John Hurley <john.hurley@netronome.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Justin Pettit <jpettit@nicira.com>
ofp-actions: Distinguish OF1.1/1.2 push_mpls from OF1.3+.

In OpenFlow 1.1 and 1.2, the push_mpls action pushes the MPLS label after
any existing VLAN tag.  In OpenFlow 1.3, it pushes the label before any
existing VLAN tag.  Until now, the action parser didn't distinguish these
cases.  This commit adds support.  Nothing yet actually changes the
behavior of push_mpls.

enum ofpact_mpls_position contributed by Ben Pfaff.

Signed-off-by: Joe Stringer <joe@wand.net.nz>
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
odp-execute: Fix possible segfault.

In current code, the odp_execute_actions() function does not check
the value of "userspace" function pointer before invoking it.  This
patch adds a check for it.

Signed-off-by: Alex Wang <alexw@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
ofproto: Fix coding style.

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

Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
datapath: collect mega flow mask stats

Collect mega flow mask stats. ovs-dpctl show command can be used to
display them.

Signed-off-by: Andy Zhou <azhou@nicira.com>
Signed-off-by: Jesse Gross <jesse@nicira.com>
dpif-linux: collect and display mega flow mask stats

Signed-off-by: Andy Zhou <azhou@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
Signed-off-by: Jesse Gross <jesse@nicira.com>
Update AUTHORS

Signed-off-by: Joe Stringer <joestringer@nicira.com>
Signed-off-by: Ethan Jackson <ethan@nicira.com>
datapath: Add backport for __always_unused.

Reported-by: Ben Pfaff <bpfaff@vmware.com>
Signed-off-by: Jesse Gross <jesse@nicira.com>
ofproto, ofp-util: Begin disentangling packet-in wire format and handling.

struct ofputil_packet_in mixes data included in OpenFlow packet_in messages
with data that used internally by ofproto and connmgr to queue and route
packet_ins.  This commit begins disentangling these purposes by adding a
new struct ofproto_packet_in that wraps struct ofputil_packet_in.  Adding
this new level of indirection causes a lot of code churn, so this commit
mainly takes care of that to make the remaining changes easier to read.

This commit does move the list node used for queuing packet_ins into the
new wrapper structure.

Signed-off-by: Ben Pfaff <blp@nicira.com>
connmgr: Move controller_id from ofputil_packet_in to ofproto_packet_in.

controller_id isn't part of the OpenFlow message, so it shouldn't be in
ofputil_packet_in.

Signed-off-by: Ben Pfaff <blp@nicira.com>
connmgr: Move send_len from ofputil_packet_in to ofproto_packet_in.

send_len is not directly part of the OpenFlow packet_in message, at least
given that it is partially redundant with packet_len.  send_len is, rather,
a request to the connmgr that expresses how many bytes the action requested
be sent to the controller, but the connmgr cannot always honor it.

Signed-off-by: Ben Pfaff <blp@nicira.com>
ofp-util: Improve comments on struct ofputil_packet_in.

Signed-off-by: Ben Pfaff <blp@nicira.com>
ofp-util: Use correct cookie value in "packet_in"s when no flow involved.

OpenFlow 1.3 uses all-1-bits in a packet_in to indicate that the packet_in
was not generated by a flow, but Open vSwitch incorrectly used 0.  This
fixes the problem.

For consistency, this commit also changes NXT_PACKET_IN to use all-1-bits
for this case, event though NXT_PACKET_IN was previously defined to use
zero.  This doesn't appear to make a difference for the NVP controller; if
it causes a problem for some other controller then I will revert that part
of the change.

Found by inspection.

Signed-off-by: Ben Pfaff <blp@nicira.com>
fail-open: Add function to identify fail-open's flows.

This seems slightly cleaner than embedding this logic directing into
ofproto-dpif, since it is an interface that theoretically could be useful
to other ofproto providers.

Signed-off-by: Ben Pfaff <blp@nicira.com>