interim commit go fmt stuff

Change-Id: I617a7d771b50c2b7999eabbbebbabef4e68d8713
diff --git a/grpc/packetIn.go b/grpc/packetIn.go
index 938dabe..8200a37 100644
--- a/grpc/packetIn.go
+++ b/grpc/packetIn.go
@@ -18,10 +18,12 @@
 
 import (
 	"context"
+	"github.com/donNewtonAlpha/goloxi"
+	ofp "github.com/donNewtonAlpha/goloxi/of13"
 	"github.com/golang/protobuf/ptypes/empty"
 	"github.com/opencord/ofagent-go/openflow"
+	"github.com/opencord/voltha-protos/go/openflow_13"
 	pb "github.com/opencord/voltha-protos/go/voltha"
-	ofp "github.com/skydive-project/goloxi/of13"
 	"google.golang.org/grpc"
 	"log"
 )
@@ -39,33 +41,89 @@
 		if err != nil {
 			log.Fatalf("error on stream.Rec %v", err)
 		}
+		deviceID := packet.GetId()
 		ofPacketIn := ofp.NewPacketIn()
 		ofPacketIn.SetVersion(uint8(4))
 		ofPacketIn.SetXid(openflow.GetXid())
 		ofPacketIn.SetBufferId(packetIn.GetBufferId())
 		ofPacketIn.SetCookie(packetIn.GetCookie())
 		ofPacketIn.SetData(packetIn.GetData())
-		var outMatch ofp.Match
+		match := ofp.NewMatchV3()
 		inMatch := packetIn.GetMatch()
-		outMatch.SetType(uint16(inMatch.GetType()))
-		/*
-			TODO not sure if anything further is needed
-			fields := inMatch.GetOxmFields()
-			var outFields []ofp.Oxm
-			for i:=0;i< len(fields);i++{
-				field := fields[i]
-				outField := ofp.Oxm{}
-				outField.SetTypeLen(field.OxmClass.)
-				outField.SetTypeLen(field)
-			}
-			outMatch.SetOxmList(inMatch.GetOxmFields())
-		*/
+		match.SetType(uint16(inMatch.GetType()))
+		oxFields := inMatch.GetOxmFields()
+		var fields []goloxi.IOxm
+		var size uint16
+		size = 4
+		for i := 0; i < len(oxFields); i++ {
+			oxmField := oxFields[i]
+			field := oxmField.GetField()
+			ofbField := field.(*openflow_13.OfpOxmField_OfbField).OfbField
+			size += 4 //header for oxm
+			switch ofbField.Type {
+			case pb.OxmOfbFieldTypes_OFPXMT_OFB_IN_PORT:
+				ofpInPort := ofp.NewOxmInPort()
+				val := ofbField.GetValue().(*openflow_13.OfpOxmOfbField_Port)
+				ofpInPort.Value = ofp.Port(val.Port)
+				size += 4
+				fields = append(fields, ofpInPort)
+			case pb.OxmOfbFieldTypes_OFPXMT_OFB_ETH_TYPE:
+				ofpEthType := ofp.NewOxmEthType()
+				val := ofbField.GetValue().(*openflow_13.OfpOxmOfbField_EthType)
+				ofpEthType.Value = ofp.EthernetType(val.EthType)
+				size += 2
+				fields = append(fields, ofpEthType)
+			case pb.OxmOfbFieldTypes_OFPXMT_OFB_IN_PHY_PORT:
+				ofpInPhyPort := ofp.NewOxmInPhyPort()
+				val := ofbField.GetValue().(*openflow_13.OfpOxmOfbField_PhysicalPort)
+				ofpInPhyPort.Value = ofp.Port(val.PhysicalPort)
+				size += 4
+				fields = append(fields, ofpInPhyPort)
+			case pb.OxmOfbFieldTypes_OFPXMT_OFB_IP_PROTO:
+				ofpIpProto := ofp.NewOxmIpProto()
+				val := ofbField.GetValue().(*openflow_13.OfpOxmOfbField_IpProto)
+				ofpIpProto.Value = ofp.IpPrototype(val.IpProto)
+				size += 1
+				fields = append(fields, ofpIpProto)
+			case pb.OxmOfbFieldTypes_OFPXMT_OFB_UDP_SRC:
+				ofpUdpSrc := ofp.NewOxmUdpSrc()
+				val := ofbField.GetValue().(*openflow_13.OfpOxmOfbField_UdpSrc)
+				ofpUdpSrc.Value = uint16(val.UdpSrc)
+				size += 2
+				fields = append(fields, ofpUdpSrc)
+			case pb.OxmOfbFieldTypes_OFPXMT_OFB_UDP_DST:
+				ofpUdpDst := ofp.NewOxmUdpDst()
+				val := ofbField.GetValue().(*openflow_13.OfpOxmOfbField_UdpDst)
+				ofpUdpDst.Value = uint16(val.UdpDst)
+				size += 2
+				fields = append(fields, ofpUdpDst)
+			case pb.OxmOfbFieldTypes_OFPXMT_OFB_VLAN_VID:
+				ofpVlanVid := ofp.NewOxmVlanVid()
+				val := ofbField.GetValue()
+				if val != nil {
+					vlanId := val.(*openflow_13.OfpOxmOfbField_VlanVid)
+					ofpVlanVid.Value = uint16(vlanId.VlanVid) + 0x1000
+					size += 2
+				} else {
+					ofpVlanVid.Value = uint16(0)
+				}
 
-		ofPacketIn.SetMatch(outMatch)
+				fields = append(fields, ofpVlanVid)
+			default:
+				log.Printf("handleFlowStatsRequest   Unhandled OxmField %v", ofbField.Type)
+			}
+		}
+		match.SetLength(size)
+
+		match.SetOxmList(fields)
+
+		ofPacketIn.SetMatch(*match)
 		ofPacketIn.SetReason(uint8(packetIn.GetReason()))
 		ofPacketIn.SetTableId(uint8(packetIn.GetTableId()))
 		ofPacketIn.SetTotalLen(uint16(len(ofPacketIn.GetData())))
-		//ofPacketIn.
+		openFlowClient := GetClient(deviceID)
+		openFlowClient.SendMessage(ofPacketIn)
+
 	}
 
 }