[CORD-544] Adds VPWS extensions in Loxi

Changes:
- Adds VPWS actions in Loxi;
- Adds VPWS OXMs in Loxi;
- Improves .gitignore;

Change-Id: I266702148bbed99cc8c91e2cb00b0b556018814e
diff --git a/openflow_input/ofdpa b/openflow_input/ofdpa
index 47aa11e..c11aa89 100644
--- a/openflow_input/ofdpa
+++ b/openflow_input/ofdpa
@@ -1,7 +1,14 @@
 #version 4
 
-struct of_oxm_ofdpa_mpls_type : of_oxm {
-    uint32_t type_len == 0xFFFF2E06;
-    uint32_t experimenter_id == 0x1018;
-    uint16_t value;
+// Here we define the general structures for the OFDPA extensions
+
+// This structure represents an ofdpa experimental action
+// See ofdpa_actions for further specifications
+struct of_action_ofdpa : of_action_experimenter {
+    uint16_t type == 65535;
+    uint16_t len;
+    uint32_t experimenter == 0x1018;
+    uint16_t exp_type == ?;
+    pad(6);
 };
+
diff --git a/openflow_input/ofdpa_actions b/openflow_input/ofdpa_actions
new file mode 100644
index 0000000..c24cc92
--- /dev/null
+++ b/openflow_input/ofdpa_actions
@@ -0,0 +1,42 @@
+#version 4
+
+// Here we define the experimental actions supported by OFDPA pipeline
+
+// Push l2 header action. This action push an other ethernet
+// header on top of the previous one.
+struct of_action_ofdpa_push_l2_header : of_action_ofdpa {
+    uint16_t type == 65535;
+    uint16_t len;
+    uint32_t experimenter == 0x1018;
+    uint16_t exp_type == 1;
+    pad(6);
+};
+
+// Pop l2 header action. This action pop the outer ethernet
+// header.
+struct of_action_ofdpa_pop_l2_header : of_action_ofdpa {
+    uint16_t type == 65535;
+    uint16_t len;
+    uint32_t experimenter == 0x1018;
+    uint16_t exp_type == 2;
+    pad(6);
+};
+
+// Push MPLS-TP PW Control Word. The Control Word is initialized to zero.
+struct of_action_ofdpa_push_cw : of_action_ofdpa {
+    uint16_t type == 65535;
+    uint16_t len;
+    uint32_t experimenter == 0x1018;
+    uint16_t exp_type == 3;
+    pad(6);
+};
+
+// Pop MPLS-TP PW Control Word or Associated Channel Header.
+// Used in MPLS bottom of stack label match actions.
+struct of_action_ofdpa_pop_cw : of_action_ofdpa {
+    uint16_t type == 65535;
+    uint16_t len;
+    uint32_t experimenter == 0x1018;
+    uint16_t exp_type == 4;
+    pad(6);
+};
\ No newline at end of file
diff --git a/openflow_input/ofdpa_match_fields b/openflow_input/ofdpa_match_fields
new file mode 100644
index 0000000..5ebd19b
--- /dev/null
+++ b/openflow_input/ofdpa_match_fields
@@ -0,0 +1,40 @@
+#version 4
+
+// Here we define the experimental match fields supported by OFDPA pipeline
+
+// This struct defines QoS
+struct of_oxm_ofdpa_qos_index : of_oxm {
+    uint32_t type_len == 0xFFFF0A05;
+    uint32_t experimenter_id == 0x1018;
+    uint8_t value;
+};
+
+// This struct defines MPLS_TYPE
+struct of_oxm_ofdpa_mpls_type : of_oxm {
+    uint32_t type_len == 0xFFFF2E06;
+    uint32_t experimenter_id == 0x1018;
+    uint16_t value;
+};
+
+// This struct defines MPLS_L2_PORT
+struct of_oxm_ofdpa_mpls_l2_port : of_oxm {
+    uint32_t type_len == 0xFFFF1008;
+    uint32_t experimenter_id == 0x1018;
+    uint32_t value;
+};
+
+// This struct defines the masked version of MPLS_L2_PORT
+struct of_oxm_ofdpa_mpls_l2_port_masked : of_oxm {
+    uint32_t type_len == 0xFFFF110C;
+    uint32_t experimenter_id == 0x1018;
+    uint32_t value;
+    uint32_t value_mask;
+};
+
+// This struct defines the OVID
+struct of_oxm_ofdpa_ovid : of_oxm {
+    uint32_t type_len == 0xFFFF1406;
+    uint32_t experimenter_id == 0x1018;
+    uint16_t value;
+};
+