lib: add DPI functions

These functions are intended to be called from the packet processing code
in order to return the proper application ID of the sent packet.
Can be disabled at configure time with --with-nodpi

Signed-off-by: Franck Baudin <franck.baudin@qosmos.com>
third-party: add a DPI dumy plugin (stub)

This dynamic libraries permit to test the DPI lib and its call within the
packet processing code.

Signed-off-by: Franck Baudin <franck.baudin@qosmos.com>
vswitchd: add DPI plugin

The DPI plugin arguments are the last command line arguments, starting with
a '--' separator. The only mandatory DPI parameter is the DPI dynamic name,
other arguments are DPI engine implementation specific.

When DPI plugin is proberly initialized, the global variable dpi_enable is set.
This permit to test dpi_enable prior to call dpi_* funtions, saving a function
call.

Signed-off-by: Franck Baudin <franck.baudin@qosmos.com>
ofproto: backports from recent versions, to be skipped in future merges/updates

These backports are required to implement DPI support.

handle_miss_upcalls
===================

From 10e576406c7444ef198cc2d4b6c4adfe242c085c:
-static void handle_miss_upcalls(struct udpif *, struct list *upcalls);
+static void handle_upcalls(struct udpif *, struct list *upcalls);

And later on, from e79a6c833e0d72370951d6f8841098103cbb0b2d:
-static void handle_upcalls(struct udpif *, struct list *upcalls);
+static void handle_upcalls(struct handler *handler, struct list *upcalls);

struct flow_miss
================

From 73e141f977163d93e60c30a177a99c44ecf72fe2:
@@ -208,6 +208,8 @@ struct flow_miss {
     struct odputil_keybuf mask_buf;

     struct xlate_out xout;
+
+    bool put;
 };

Signed-off-by: Franck Baudin <franck.baudin@qosmos.com>
ofproto-dpif: add DPI processing in MISS_UPCALL processing

The DPI processing consist in filing flow.reg[0]..flow.reg[dpi_nregs - 1]
prior to evaluate openflow rules for all new flows and to prevent the flow
offloading the the datapath until the flow is properly classified by the DPI engine.

Hooking this processing in the threads handling the upcalls is the proper place
from a functionnal perspective and also permit to have a scalable hooking point,
as the number of threads is configurable via OVSDB.

Signed-off-by: Franck Baudin <franck.baudin@qosmos.com>
docs: add DPI plugin and dummy-plugin documentation.

Provides design information, usage, and a test plan for non regression.

Signed-off-by: Franck Baudin <franck.baudin@qosmos.com>
docs: Add --txqflags to vhost documentation

Changes in the dpdk.org testpmd code require the
parameter --txqflags to be added to the testpmd command
line.

Change-Id: I2dc26867c2681a5c6adf61e19766cc17b82d6f48
Signed-off-by: Mark D. Gray <mark.d.gray@intel.com>
Reviewed-by: Kevin Traynor <kevin.traynor@intel.com>
For OVDK_ACTION_DROP, break to avoid falling into OVDK_ACTION_VSWITCHD processing. And minor clean up for struct ovdk_datapath.

Signed-off-by: Jipan Yang <jipan.yang@gmail.com>
NEWS.md: Added DPI support

Change-Id: Ic3f47ff8d20a3ea854b166524c52037955662d76
Signed-off-by: Mark D. Gray <mark.d.gray@intel.com>
Reviewed-by: Kevin Traynor <kevin.traynor@intel.com>
Fix file permissions

Change-Id: I3940c13d60dd706351057be67a9073176908d863
Signed-off-by: Stephen Finucane <stephen.finucane@intel.com>
Reviewed-by: Kevin Traynor <kevin.traynor@intel.com>
Reviewed-by: Mark B. Kavanagh <mark.b.kavanagh@intel.com>