interim commit go fmt stuff
Change-Id: I617a7d771b50c2b7999eabbbebbabef4e68d8713
diff --git a/openflow/meter.go b/openflow/meter.go
new file mode 100644
index 0000000..43d690e
--- /dev/null
+++ b/openflow/meter.go
@@ -0,0 +1,88 @@
+/*
+ Copyright 2017 the original author or authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ 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 License for the specific language governing permissions and
+ limitations under the License.
+*/
+package openflow
+
+import (
+ "encoding/json"
+ ofp "github.com/donNewtonAlpha/goloxi/of13"
+ "github.com/opencord/voltha-protos/go/openflow_13"
+ "golang.org/x/net/context"
+ "log"
+)
+
+func handleMeterModRequest(request *ofp.MeterMod, client *Client) {
+ jsonRequest, _ := json.Marshal(request)
+ log.Printf("handleMeterModRequest called with %s", jsonRequest)
+
+ var meterModUpdate openflow_13.MeterModUpdate
+ meterModUpdate.Id = client.DeviceId
+ var meterMod openflow_13.OfpMeterMod
+ meterMod.MeterId = request.MeterId
+ meterMod.Flags = uint32(request.Flags)
+ command := openflow_13.OfpMeterModCommand(request.Command)
+ meterMod.Command = command
+ var bands []*openflow_13.OfpMeterBandHeader
+ ofpBands := request.GetMeters()
+ for i := 0; i < len(ofpBands); i++ {
+ ofpBand := ofpBands[i]
+
+ bandType := ofpBand.GetType()
+ var band openflow_13.OfpMeterBandHeader
+ switch bandType {
+ case ofp.OFPMBTDrop:
+ ofpDrop := ofpBand.(ofp.IMeterBandDrop)
+ band.BurstSize = ofpDrop.GetBurstSize()
+ band.Type = openflow_13.OfpMeterBandType_OFPMBT_DROP
+ band.Rate = ofpDrop.GetRate()
+ var meterBandHeaderDrop openflow_13.OfpMeterBandHeader_Drop
+ var drop openflow_13.OfpMeterBandDrop
+ meterBandHeaderDrop.Drop = &drop
+ band.Data = &meterBandHeaderDrop
+ case ofp.OFPMBTDSCPRemark:
+ ofpDscpRemark := ofpBand.(ofp.IMeterBandDscpRemark)
+ var dscpRemark openflow_13.OfpMeterBandDscpRemark
+ band.Type = openflow_13.OfpMeterBandType_OFPMBT_DSCP_REMARK
+ band.BurstSize = ofpDscpRemark.GetBurstSize()
+ band.Rate = ofpDscpRemark.GetRate()
+ dscpRemark.PrecLevel = uint32(ofpDscpRemark.GetPrecLevel())
+ var meterBandHeaderDscp openflow_13.OfpMeterBandHeader_DscpRemark
+ meterBandHeaderDscp.DscpRemark = &dscpRemark
+ band.Data = &meterBandHeaderDscp
+ case ofp.OFPMBTExperimenter:
+ ofpExperimenter := ofpBand.(ofp.IMeterBandExperimenter)
+ var experimenter openflow_13.OfpMeterBandExperimenter
+ experimenter.Experimenter = ofpExperimenter.GetExperimenter()
+ band.Type = openflow_13.OfpMeterBandType_OFPMBT_EXPERIMENTER
+ band.BurstSize = ofpExperimenter.GetBurstSize()
+ band.Rate = ofpExperimenter.GetRate()
+ var meterBandHeaderExperimenter openflow_13.OfpMeterBandHeader_Experimenter
+ meterBandHeaderExperimenter.Experimenter = &experimenter
+ band.Data = &meterBandHeaderExperimenter
+ }
+ bands = append(bands, &band)
+ }
+ meterMod.Bands = bands
+ meterModUpdate.MeterMod = &meterMod
+ grpcClient := *getGrpcClient()
+ meterModJS, _ := json.Marshal(meterModUpdate)
+ log.Printf("METER MOD UPDATE %s", meterModJS)
+ empty, err := grpcClient.UpdateLogicalDeviceMeterTable(context.Background(), &meterModUpdate)
+ if err != nil {
+ log.Printf("ERROR DOING METER MOD ADD %v", err)
+ }
+ emptyJs, _ := json.Marshal(empty)
+ log.Printf("METER MOD RESPONSE %s", emptyJs)
+}