CPqD/RouteFlow — pull request #21 by joestringer (2013-02-01 03:36:53+00:00)
Title: Add RouteMod support

__Introduces RouteMod structure:__
- Consists of Mod (ADD/DELETE), ID (for VM or DP), and TLVs for
Matches,Actions,Options
- Match,Action correspond roughly to OpenFlow match,actions, but
with a focus on routes rather than flows. Matching IPv4 destination
implies a match on ethertype IP. Action to push/pop MPLS implies
copying the TTL (although this is stubbed at the moment).
- Option roughly corresponds to the fixed fields in OpenFlow FlowMods.
- There is a concept of "Optional" TLVs. The most significant bit of
the type field indicates that the field is optional.
- If TLV is optional and RFProxy doesn't recognise it, the TLV will
be ignored, but the OFP FlowMod will still be constructed and sent to
the datapath (log to debug).
- If TLV is not optional, and RFProxy doesn't recognise it, the
RouteMod will be dropped (log to error). eg, IPv6/MPLS on OF1.0.
- Support added in POX,NOX,rfserver (If RFServer receives a
RouteMod, it forwards RouteMod to RFProxy; if RFServer receives
RFRouteInfo it forwards RFFlowMod)

RFClient can be compiled with support for RouteMod with the -DROUTEMOD_ENABLED flag. This will completely replace the RouteInfo,FlowMod structures with RouteMod.