[ONOS-3291] Match fields added in LOXI for NSH extension

Change-Id: I3a51c914afb9ee3c836de2800ae9cb87d9a1470a
diff --git a/java_gen/java_type.py b/java_gen/java_type.py
index 6b47fc3..9bce653 100644
--- a/java_gen/java_type.py
+++ b/java_gen/java_type.py
@@ -807,6 +807,24 @@
 
         'of_oxm_reg7' : { 'value' : u32obj },
         'of_oxm_reg7_masked' : { 'value' : u32obj, 'value_mask' : u32obj },
+
+        'of_oxm_nsh_spi' : { 'value' : u32obj },
+        'of_oxm_nsh_spi_masked' : { 'value' : u32obj, 'value_mask' : u32obj },
+
+        'of_oxm_nsh_si' : { 'value' : u8obj },
+        'of_oxm_nsh_si_masked' : { 'value' : u8obj, 'value_mask' : u8obj },
+
+        'of_oxm_nsh_ch1' : { 'value' : u32obj },
+        'of_oxm_nsh_ch1_masked' : { 'value' : u32obj, 'value_mask' : u32obj },
+
+        'of_oxm_nsh_ch2' : { 'value' : u32obj },
+        'of_oxm_nsh_ch2_masked' : { 'value' : u32obj, 'value_mask' : u32obj },
+
+        'of_oxm_nsh_ch3' : { 'value' : u32obj },
+        'of_oxm_nsh_ch3_masked' : { 'value' : u32obj, 'value_mask' : u32obj },
+
+        'of_oxm_nsh_ch4' : { 'value' : u32obj },
+        'of_oxm_nsh_ch4_masked' : { 'value' : u32obj, 'value_mask' : u32obj },
 }
 
 
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchField.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchField.java
index c911132..45887a2 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchField.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchField.java
@@ -328,6 +328,24 @@
     public final static MatchField<U32> REG7 =
             new MatchField<U32>("reg7", MatchFields.REG7);
 
+    public final static MatchField<U32> NSH_SPI =
+            new MatchField<U32>("set_nsp", MatchFields.NSH_SPI);
+
+    public final static MatchField<U8> NSH_SI =
+            new MatchField<U8>("set_nsi", MatchFields.NSH_SI);
+
+    public final static MatchField<U32> NSH_CH1 =
+            new MatchField<U32>("set_nshc1", MatchFields.NSH_CH1);
+
+    public final static MatchField<U32> NSH_CH2 =
+            new MatchField<U32>("set_nshc2", MatchFields.NSH_CH2);
+
+    public final static MatchField<U32> NSH_CH3 =
+            new MatchField<U32>("set_nshc3", MatchFields.NSH_CH3);
+
+    public final static MatchField<U32> NSH_CH4 =
+            new MatchField<U32>("set_nshc4", MatchFields.NSH_CH4);
+
     public String getName() {
         return name;
     }
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchFields.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchFields.java
index be36713..ed8a230 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchFields.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchFields.java
@@ -85,4 +85,10 @@
     REG5,
     REG6,
     REG7,
+    NSH_SPI,
+    NSH_SI,
+    NSH_CH1,
+    NSH_CH2,
+    NSH_CH3,
+    NSH_CH4,
 }
diff --git a/openflow_input/oxm_nicira_nsh b/openflow_input/oxm_nicira_nsh
new file mode 100644
index 0000000..eb32b4d
--- /dev/null
+++ b/openflow_input/oxm_nicira_nsh
@@ -0,0 +1,103 @@
+// Copyright 2013, Big Switch Networks, Inc.
+//
+// LoxiGen is licensed under the Eclipse Public License, version 1.0 (EPL), with
+// the following special exception:
+//
+// LOXI Exception
+//
+// As a special exception to the terms of the EPL, you may distribute libraries
+// generated by LoxiGen (LoxiGen Libraries) under the terms of your choice, provided
+// that copyright and licensing notices generated by LoxiGen are not altered or removd
+// from the LoxiGen Libraries and the notice provided below is (i) included in
+// the LoxiGen Libraries, if distributed in source code form and (ii) included in any
+// documentation for the LoxiGen Libraries, if distributed in binary form.
+//
+// Notice: "Copyright 2013, Big Switch Networks, Inc. This library was generated by t"
+//
+// You may not use this file except in compliance with the EPL or LOXI Exception. Youn
+// a copy of the EPL at:
+//
+// http://www.eclipse.org/legal/epl-v10.html
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// EPL for the specific language governing permissions and limitations
+// under the EPL.
+
+#version 3
+#version 4
+#version 5
+
+// Nicira extension for nsh_spi (37)
+struct of_oxm_nsh_spi : of_oxm {
+    uint32_t type_len == 0x00014a04;
+    uint32_t value;
+};
+
+struct of_oxm_nsh_spi_masked : of_oxm {
+    uint32_t type_len == 0x00014b08;
+    uint32_t value;
+    uint32_t value_mask;
+};
+
+// Nicira extension for nsh_si (38)
+struct of_oxm_nsh_si : of_oxm {
+    uint32_t type_len == 0x00014c04;
+    uint8_t value;
+};
+
+struct of_oxm_nsh_si_masked : of_oxm {
+    uint32_t type_len == 0x00014d08;
+    uint8_t value;
+    uint8_t value_mask;
+};
+
+// Nicira extension for nsh_ch1 (39)
+struct of_oxm_nsh_ch1 : of_oxm {
+    uint32_t type_len == 0x00014e04;
+    uint32_t value;
+};
+
+struct of_oxm_nsh_ch1_masked : of_oxm {
+    uint32_t type_len == 0x00014f08;
+    uint32_t value;
+    uint32_t value_mask;
+};
+
+// Nicira extension for nsh_ch2 (40)
+struct of_oxm_nsh_ch2 : of_oxm {
+    uint32_t type_len == 0x00015004;
+    uint32_t value;
+};
+
+struct of_oxm_nsh_ch2_masked : of_oxm {
+    uint32_t type_len == 0x00015108;
+    uint32_t value;
+    uint32_t value_mask;
+};
+
+
+// Nicira extension for nsh_ch3 (41)
+struct of_oxm_nsh_ch3 : of_oxm {
+    uint32_t type_len == 0x00015204;
+    uint32_t value;
+};
+
+struct of_oxm_nsh_ch3_masked : of_oxm {
+    uint32_t type_len == 0x00015308;
+    uint32_t value;
+    uint32_t value_mask;
+};
+
+// Nicira extension for nsh_ch4 (42)
+struct of_oxm_nsh_ch4 : of_oxm {
+    uint32_t type_len == 0x00015404;
+    uint32_t value;
+};
+
+struct of_oxm_nsh_ch4_masked : of_oxm {
+    uint32_t type_len == 0x00015508;
+    uint32_t value;
+    uint32_t value_mask;
+};