[VOL-4005] Add support for matches on MPLS fields

Change-Id: If74dbb747b22cb0ea66e65f4b256d76f6894695c
diff --git a/internal/pkg/openflow/flowMod.go b/internal/pkg/openflow/flowMod.go
index c0cbde1..4f8ab63 100644
--- a/internal/pkg/openflow/flowMod.go
+++ b/internal/pkg/openflow/flowMod.go
@@ -129,6 +129,10 @@
 			field.Value = &voltha.OfpOxmOfbField_EthDst{
 				EthDst: val.(net.HardwareAddr),
 			}
+		case voltha.OxmOfbFieldTypes_OFPXMT_OFB_ETH_SRC:
+			field.Value = &voltha.OfpOxmOfbField_EthSrc{
+				EthSrc: val.(net.HardwareAddr),
+			}
 		case voltha.OxmOfbFieldTypes_OFPXMT_OFB_UDP_SRC:
 			field.Value = &voltha.OfpOxmOfbField_UdpSrc{
 				UdpSrc: uint32(val.(uint16)),
@@ -145,6 +149,18 @@
 			field.Value = &voltha.OfpOxmOfbField_VlanPcp{
 				VlanPcp: uint32(val.(uint8)),
 			}
+		case voltha.OxmOfbFieldTypes_OFPXMT_OFB_MPLS_LABEL:
+			field.Value = &voltha.OfpOxmOfbField_MplsLabel{
+				MplsLabel: val.(uint32),
+			}
+		case voltha.OxmOfbFieldTypes_OFPXMT_OFB_MPLS_BOS:
+			field.Value = &voltha.OfpOxmOfbField_MplsBos{
+				MplsBos: uint32(val.(uint8)),
+			}
+		case voltha.OxmOfbFieldTypes_OFPXMT_OFB_MPLS_TC:
+			field.Value = &voltha.OfpOxmOfbField_MplsTc{
+				MplsTc: val.(uint32),
+			}
 		case 200: // voltha-protos doesn't actually have a type for vlan_mask
 			field = voltha.OfpOxmOfbField{Type: voltha.OxmOfbFieldTypes(oxmMap["vlan_vid"])}
 			field.HasMask = true