Output reg support for nicira experimenter fields 25/72225/11
authorJaime Caamaño Ruiz <jcaamano@suse.com>
Wed, 23 May 2018 16:00:27 +0000 (18:00 +0200)
committerJaime Caamaño Ruiz <jcaamano@suse.com>
Thu, 12 Jul 2018 13:24:20 +0000 (15:24 +0200)
commitad9a833f98d631d2c2a63db4a553855269604383
tree7e2463457d0c7e5380e622360f8812d08f605ade
parentfcf2a6d506c660b2949f33eb8e922309b7bc7023
Output reg support for nicira experimenter fields

Implement NXAST_OUTPUT_REG2 which supports experimenter fields vs the
existing NXAST_OUTPUT_REG that does not. The openflowplugin API will
still expose a single output reg action, but this will be converted to
openflowjava output reg2 action if the source choice is a experimenter
field or to the existing output reg action otherwise.

From [1], this is the structure of the output reg2 action:

struct nx_action_output_reg2 {
    ovs_be16 type;            // OFPAT_EXPERIMENTER = 0xFFFF
    ovs_be16 len;             // 24.
    ovs_be32 vendor;          // NX_VENDOR_ID = 0x00002320
    ovs_be16 subtype;         // NXAST_OUTPUT_REG2 = 32

    ovs_be16 ofs_nbits;       // (ofs << 6) | (n_bits - 1).
    ovs_be16 max_len;         // Max length to send to controller.
    /* Followed by:
     * - 'src', as an OXM/NXM header (either 4 or 8 bytes).
     * - Enough 0-bytes to pad the action out to 24 bytes. */
};

[1] https://github.com/openvswitch/ovs/blob/master/lib/ofp-actions.c

Change-Id: I6865ea6b8b3191895f2c548e7acf6707d94402e0
JIRA: OPNFLWPLUG-1017
Signed-off-by: Jaime Caamaño Ruiz <jcaamano@suse.com>
13 files changed:
extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/NiciraExtensionsRegistrator.java
extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/codec/action/NiciraActionCodecs.java
extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/codec/action/OutputReg2Codec.java [new file with mode: 0644]
extension/openflowjava-extension-nicira/src/main/yang/nicira-action.yang
extension/openflowjava-extension-nicira/src/test/java/org/opendaylight/openflowjava/nx/NiciraExtensionsRegistratorTest.java
extension/openflowjava-extension-nicira/src/test/java/org/opendaylight/openflowjava/nx/codec/action/OutputReg2CodecTest.java [new file with mode: 0644]
extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/NiciraExtensionProvider.java
extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/action/FieldChoiceResolver.java
extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/action/OutputReg2Convertor.java [new file with mode: 0644]
extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/action/OutputRegConvertor.java
extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/action/OutputRegConvertorProxy.java [new file with mode: 0644]
extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/action/RegLoadConvertorProxy.java
extension/openflowplugin-extension-nicira/src/test/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/action/OutputReg2ConvertorTest.java [new file with mode: 0644]