rocker: Rename "FLOW" world to "OF-DPA"

Since the current flow implementation is based on OF-DPA, it makes sense to use
a specific name rather than the generic "flow" name.  That leaves room for
other flow-like worlds in the namespace.  Also, in subsequent patches, some of
the lower-level flow tables and functions will be shared by l2l3 world and
of-dpa world, so prepare for that move now by moving of-dpa-specific parts to
OF-DPA names.

No functional changes here; just renaming.

Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
rocker: split of_dpa and generic flow-processing code

No functional changes.  Split of-dpa-specifc code into new of_dpa.[hc].  What
remains in flow.[ch] is a generic flow-processing system, oe engine.  Which
flow tables are defined and the flow pipeline is outside the generic code.
OF-DPA, for example, prescribes a flow procssing pipeline using OF flow tables,
but the basic alogrithm for matching a pkt against a flow table, or performing
group actions can be pushed to the generic code and shared by other models,
such as traditional L2/L3 model.

It looks like a lot of change, but really is just a partionaing of existing
code into generic and specific modules.

Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
rocker: add helper func to return a random cookie

Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
rocker: fix get/set macaddr

Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
rocker: fix return type for flow table size func

Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
rocker: change lport to in_lport in flow context to be clear it's the ingress lport

Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
rocker: pass in flow context to table egress func and s/lport/out_lport/

Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
rocker: flesh out l2l3 flow table support and install default flows so rx/tx still work

Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
rocker: optimization: add width to key to match only values with same width as key

Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
rocker: user rocker->name for naming nic instances

If <name> parameter is specified on -device rocker cmd line, use <name> for
naming nic instances.  E.g.:

    -device rocker,name=foo,...

Will give:

    (qemu) info network
    foo.0: index=0,type=nic,model=sw1,macaddr=52:54:00:12:35:01
     \ sw1.1: index=0,type=tap,ifname=sw1.1,script=no,downscript=no
    foo.1: index=0,type=nic,model=sw1,macaddr=52:54:00:12:35:02
     \ sw1.2: index=0,type=tap,ifname=sw1.2,script=no,downscript=no

If no <name> is given, "rocker" is used:

    (qemu) info network
    rocker.0: index=0,type=nic,model=sw1,macaddr=52:54:00:12:35:01
     \ sw1.1: index=0,type=tap,ifname=sw1.1,script=no,downscript=no
    rocker.1: index=0,type=nic,model=sw1,macaddr=52:54:00:12:35:02
     \ sw1.2: index=0,type=tap,ifname=sw1.2,script=no,downscript=no

The advantage to using <name> is when multiple rocker devices are instantiated,
the namespace is clean.

Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>