openvswitch: Add recirc and hash action.
authorAndy Zhou <azhou@nicira.com>
Tue, 16 Sep 2014 02:37:25 +0000 (19:37 -0700)
committerPravin B Shelar <pshelar@nicira.com>
Tue, 16 Sep 2014 06:28:14 +0000 (23:28 -0700)
commit971427f353f3c42c8dcef62e7124440df68eb809
tree7eed9ed50fe70cfc82ce33e12a13147ad0de580c
parent32ae87ff795781b7ceffc44b7c694c1bb206a266
openvswitch: Add recirc and hash action.

Recirc action allows a packet to reenter openvswitch processing.
currently openvswitch lookup flow for packet received and execute
set of actions on that packet, with help of recirc action we can
process/modify the packet and recirculate it back in openvswitch
for another pass.

OVS hash action calculates 5-tupple hash and set hash in flow-key
hash. This can be used along with recirculation for distributing
packets among different ports for bond devices.
For example:
OVS bonding can use following actions:
Match on: bond flow; Action: hash, recirc(id)
Match on: recirc-id == id and hash lower bits == a;
          Action: output port_bond_a

Signed-off-by: Andy Zhou <azhou@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
include/uapi/linux/openvswitch.h
net/openvswitch/actions.c
net/openvswitch/datapath.c
net/openvswitch/datapath.h
net/openvswitch/flow.c
net/openvswitch/flow.h
net/openvswitch/flow_netlink.c