SEBA-910 Implementation of Create/Remove TrafficSchedulers
fix formating issue and bump verison to 0.0.16-dev
Updated Makefile fix proto dependency
print in table format
resolve merge conflict with igmp file
bump to 0.0.18-dev
remove overriding onu port no
rebase and update
Change-Id: Ie0dce516a7044cd4ed1de7bafcdcd292e5daf689
diff --git a/internal/bbsim/responders/igmp/igmp.go b/internal/bbsim/responders/igmp/igmp.go
index a57810e..75f2759 100644
--- a/internal/bbsim/responders/igmp/igmp.go
+++ b/internal/bbsim/responders/igmp/igmp.go
@@ -15,14 +15,15 @@
 
 import (
 	"encoding/binary"
+	"net"
+	"time"
+
 	"github.com/google/gopacket"
 	"github.com/google/gopacket/layers"
 	bbsim "github.com/opencord/bbsim/internal/bbsim/types"
 	omci "github.com/opencord/omci-sim"
 	"github.com/opencord/voltha-protos/v2/go/openolt"
 	log "github.com/sirupsen/logrus"
-	"net"
-	"time"
 )
 
 func SendIGMPLeaveGroupV2(ponPortId uint32, onuId uint32, serialNumber string, portNo uint32, macAddress net.HardwareAddr, stream bbsim.Stream) error {
@@ -128,86 +129,86 @@
 }
 
 func SendIGMPMembershipReportV3(ponPortId uint32, onuId uint32, serialNumber string, portNo uint32, macAddress net.HardwareAddr, stream bbsim.Stream) error {
-       log.WithFields(log.Fields{
-               "OnuId": onuId,
-               "SerialNumber": serialNumber,
-               "PortNo": portNo,
-    }).Debugf("Entered SendIGMPMembershipReportV3")
-    igmp := createIGMPV3MembershipReportPacket()
-       pkt, err := serializeIgmpPacket(ponPortId, onuId, macAddress, igmp)
+	log.WithFields(log.Fields{
+		"OnuId":        onuId,
+		"SerialNumber": serialNumber,
+		"PortNo":       portNo,
+	}).Debugf("Entered SendIGMPMembershipReportV3")
+	igmp := createIGMPV3MembershipReportPacket()
+	pkt, err := serializeIgmpPacket(ponPortId, onuId, macAddress, igmp)
 
-       if err != nil {
-               log.WithFields(log.Fields{
-                        "OnuId":  onuId,
-                        "IntfId": ponPortId,
-                        "SerialNumber": serialNumber,
-                }).Errorf("Seriliazation of igmp packet failed :  %s", err)
-                return err
-       }
+	if err != nil {
+		log.WithFields(log.Fields{
+			"OnuId":        onuId,
+			"IntfId":       ponPortId,
+			"SerialNumber": serialNumber,
+		}).Errorf("Seriliazation of igmp packet failed :  %s", err)
+		return err
+	}
 
-       gemid, err := omci.GetGemPortId(ponPortId, onuId)
-       if err != nil {
-               log.WithFields(log.Fields{
-                       "OnuId":  onuId,
-                       "IntfId": ponPortId,
-                        "SerialNumber": serialNumber,
-               }).Errorf("Can't retrieve GemPortId for IGMP: %s", err)
-               return err
-       }
+	gemid, err := omci.GetGemPortId(ponPortId, onuId)
+	if err != nil {
+		log.WithFields(log.Fields{
+			"OnuId":        onuId,
+			"IntfId":       ponPortId,
+			"SerialNumber": serialNumber,
+		}).Errorf("Can't retrieve GemPortId for IGMP: %s", err)
+		return err
+	}
 
-       data := &openolt.Indication_PktInd{
-               PktInd: &openolt.PacketIndication{
-                       IntfType:  "pon",
-                       IntfId:    ponPortId,
-                       GemportId: uint32(gemid),
-                       Pkt:       pkt,
-                       PortNo:    portNo,
-               },
-       }
-        //Sending IGMP packets
-        if err := stream.Send(&openolt.Indication{Data: data}); err != nil {
-                log.Errorf("Fail to send IGMP PktInd indication for ONU: %s, IntfId: %s, SerialNumber: %s,  error: %v", onuId, ponPortId, serialNumber, err)
-                return err
-        }
-        return nil
+	data := &openolt.Indication_PktInd{
+		PktInd: &openolt.PacketIndication{
+			IntfType:  "pon",
+			IntfId:    ponPortId,
+			GemportId: uint32(gemid),
+			Pkt:       pkt,
+			PortNo:    portNo,
+		},
+	}
+	//Sending IGMP packets
+	if err := stream.Send(&openolt.Indication{Data: data}); err != nil {
+		log.Errorf("Fail to send IGMP PktInd indication for ONU: %s, IntfId: %s, SerialNumber: %s,  error: %v", onuId, ponPortId, serialNumber, err)
+		return err
+	}
+	return nil
 }
 
 func createIGMPV3MembershipReportPacket() IGMP {
 
-       groupRecord1:= IGMPv3GroupRecord{
-           Type:             IGMPv3GroupRecordType(IGMPIsIn),
-           AuxDataLen:       0, // this should always be 0 as per IGMPv3 spec.
-           NumberOfSources:  3,
-           MulticastAddress: net.IPv4(224, 0, 0, 22),
-           SourceAddresses:  []net.IP{net.IPv4(15, 14, 20, 24), net.IPv4(15, 14, 20, 26), net.IPv4(15, 14, 20, 25)},
-           AuxData:          0, // NOT USED
-       }
+	groupRecord1 := IGMPv3GroupRecord{
+		Type:             IGMPv3GroupRecordType(IGMPIsIn),
+		AuxDataLen:       0, // this should always be 0 as per IGMPv3 spec.
+		NumberOfSources:  3,
+		MulticastAddress: net.IPv4(224, 0, 0, 22),
+		SourceAddresses:  []net.IP{net.IPv4(15, 14, 20, 24), net.IPv4(15, 14, 20, 26), net.IPv4(15, 14, 20, 25)},
+		AuxData:          0, // NOT USED
+	}
 
-       groupRecord2:= IGMPv3GroupRecord{
-           Type:             IGMPv3GroupRecordType(IGMPIsIn),
-           AuxDataLen:       0, // this should always be 0 as per IGMPv3 spec.
-           NumberOfSources:  2,
-           MulticastAddress: net.IPv4(224, 0, 0, 25),
-           SourceAddresses:  []net.IP{net.IPv4(15, 14, 20, 30), net.IPv4(15, 14, 20, 31)},
-           AuxData:          0, // NOT USED
-       }
+	groupRecord2 := IGMPv3GroupRecord{
+		Type:             IGMPv3GroupRecordType(IGMPIsIn),
+		AuxDataLen:       0, // this should always be 0 as per IGMPv3 spec.
+		NumberOfSources:  2,
+		MulticastAddress: net.IPv4(224, 0, 0, 25),
+		SourceAddresses:  []net.IP{net.IPv4(15, 14, 20, 30), net.IPv4(15, 14, 20, 31)},
+		AuxData:          0, // NOT USED
+	}
 
-       igmpDefault := IGMP{
-               Type:                    0x22, //IGMPV3 Membership Report
-               MaxResponseTime:         time.Duration(1),
-               Checksum:                0,
-               GroupAddress:            net.IPv4(224, 0, 0, 22),
-               SupressRouterProcessing: false,
-               RobustnessValue:         0,
-               IntervalTime:            time.Duration(1),
-               SourceAddresses:         []net.IP{net.IPv4(224, 0, 0, 24)},
-               NumberOfGroupRecords:    2,
-               NumberOfSources:         1,
-               GroupRecords:            []IGMPv3GroupRecord{groupRecord1, groupRecord2},
-               Version:                 3,
-       }
+	igmpDefault := IGMP{
+		Type:                    0x22, //IGMPV3 Membership Report
+		MaxResponseTime:         time.Duration(1),
+		Checksum:                0,
+		GroupAddress:            net.IPv4(224, 0, 0, 22),
+		SupressRouterProcessing: false,
+		RobustnessValue:         0,
+		IntervalTime:            time.Duration(1),
+		SourceAddresses:         []net.IP{net.IPv4(224, 0, 0, 24)},
+		NumberOfGroupRecords:    2,
+		NumberOfSources:         1,
+		GroupRecords:            []IGMPv3GroupRecord{groupRecord1, groupRecord2},
+		Version:                 3,
+	}
 
-       return igmpDefault
+	return igmpDefault
 }
 
 //func serializeIgmpPacket(intfId uint32, onuId uint32, srcMac net.HardwareAddr, igmp *layers.IGMP) ([]byte, error) {
@@ -290,96 +291,96 @@
 	SourceAddresses         []net.IP
 	NumberOfGroupRecords    uint16
 	NumberOfSources         uint16
-        GroupRecords            []IGMPv3GroupRecord
+	GroupRecords            []IGMPv3GroupRecord
 	Version                 uint8 // IGMP protocol version
 }
 
 // IGMPv3GroupRecord stores individual group records for a V3 Membership Report message.
 type IGMPv3GroupRecord struct {
-       Type             IGMPv3GroupRecordType
-       AuxDataLen       uint8 // this should always be 0 as per IGMPv3 spec.
-       NumberOfSources  uint16
-       MulticastAddress net.IP
-       SourceAddresses  []net.IP
-       AuxData          uint32 // NOT USED
+	Type             IGMPv3GroupRecordType
+	AuxDataLen       uint8 // this should always be 0 as per IGMPv3 spec.
+	NumberOfSources  uint16
+	MulticastAddress net.IP
+	SourceAddresses  []net.IP
+	AuxData          uint32 // NOT USED
 }
 
 type IGMPv3GroupRecordType uint8
 
 const (
-       IGMPIsIn  IGMPv3GroupRecordType = 0x01 // Type MODE_IS_INCLUDE, source addresses x
-       IGMPIsEx  IGMPv3GroupRecordType = 0x02 // Type MODE_IS_EXCLUDE, source addresses x
-       IGMPToIn  IGMPv3GroupRecordType = 0x03 // Type CHANGE_TO_INCLUDE_MODE, source addresses x
-       IGMPToEx  IGMPv3GroupRecordType = 0x04 // Type CHANGE_TO_EXCLUDE_MODE, source addresses x
-       IGMPAllow IGMPv3GroupRecordType = 0x05 // Type ALLOW_NEW_SOURCES, source addresses x
-       IGMPBlock IGMPv3GroupRecordType = 0x06 // Type BLOCK_OLD_SOURCES, source addresses x
+	IGMPIsIn  IGMPv3GroupRecordType = 0x01 // Type MODE_IS_INCLUDE, source addresses x
+	IGMPIsEx  IGMPv3GroupRecordType = 0x02 // Type MODE_IS_EXCLUDE, source addresses x
+	IGMPToIn  IGMPv3GroupRecordType = 0x03 // Type CHANGE_TO_INCLUDE_MODE, source addresses x
+	IGMPToEx  IGMPv3GroupRecordType = 0x04 // Type CHANGE_TO_EXCLUDE_MODE, source addresses x
+	IGMPAllow IGMPv3GroupRecordType = 0x05 // Type ALLOW_NEW_SOURCES, source addresses x
+	IGMPBlock IGMPv3GroupRecordType = 0x06 // Type BLOCK_OLD_SOURCES, source addresses x
 )
 
 func (i IGMPv3GroupRecordType) String() string {
-       switch i {
-       case IGMPIsIn:
-               return "MODE_IS_INCLUDE"
-       case IGMPIsEx:
-               return "MODE_IS_EXCLUDE"
-       case IGMPToIn:
-               return "CHANGE_TO_INCLUDE_MODE"
-       case IGMPToEx:
-               return "CHANGE_TO_EXCLUDE_MODE"
-       case IGMPAllow:
-               return "ALLOW_NEW_SOURCES"
-       case IGMPBlock:
-               return "BLOCK_OLD_SOURCES"
-       default:
-               return ""
-       }
+	switch i {
+	case IGMPIsIn:
+		return "MODE_IS_INCLUDE"
+	case IGMPIsEx:
+		return "MODE_IS_EXCLUDE"
+	case IGMPToIn:
+		return "CHANGE_TO_INCLUDE_MODE"
+	case IGMPToEx:
+		return "CHANGE_TO_EXCLUDE_MODE"
+	case IGMPAllow:
+		return "ALLOW_NEW_SOURCES"
+	case IGMPBlock:
+		return "BLOCK_OLD_SOURCES"
+	default:
+		return ""
+	}
 }
 
 // SerializeTo writes the serialized form of this layer into the
 // SerializationBuffer, implementing gopacket.SerializableLayer.
 // See the docs for gopacket.SerializableLayer for more info.
 func (igmp IGMP) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
-        log.Debugf("Serializing IGMP Packet")
+	log.Debugf("Serializing IGMP Packet")
 	data, err := b.PrependBytes(8915)
-        if err != nil {
-                return err
-        }
-        if igmp.Version == 2 {
-                data[0] = byte(igmp.Type)
-                data[1] = byte(igmp.MaxResponseTime)
-                data[2] = 0
-                data[3] = 0
-                copy(data[4:8], igmp.GroupAddress.To4())
-                if opts.ComputeChecksums {
-                        igmp.Checksum = tcpipChecksum(data, 0)
-                        binary.BigEndian.PutUint16(data[2:4], igmp.Checksum)
-                }
-        } else if igmp.Version ==3{
+	if err != nil {
+		return err
+	}
+	if igmp.Version == 2 {
+		data[0] = byte(igmp.Type)
+		data[1] = byte(igmp.MaxResponseTime)
+		data[2] = 0
+		data[3] = 0
+		copy(data[4:8], igmp.GroupAddress.To4())
+		if opts.ComputeChecksums {
+			igmp.Checksum = tcpipChecksum(data, 0)
+			binary.BigEndian.PutUint16(data[2:4], igmp.Checksum)
+		}
+	} else if igmp.Version == 3 {
 
-                data[0] = byte(igmp.Type)
-                data[1] = 0
-                data[2] = 0
-                data[3] = 0
-                data[4] = 0
-                data[5] = 0
-                binary.BigEndian.PutUint16(data[6:8], igmp.NumberOfGroupRecords)
-                j := 8
-                for i := uint16(0); i < igmp.NumberOfGroupRecords; i++ {
-                        data[j] = byte(igmp.GroupRecords[i].Type)
-                        data[j+1] = byte(0)
-                        binary.BigEndian.PutUint16(data[j+2:j+4], igmp.GroupRecords[i].NumberOfSources)
-                        copy(data[j+4:j+8], igmp.GroupRecords[i].MulticastAddress.To4())
-                        j=j+8
-                        for m := uint16(0); m < igmp.GroupRecords[i].NumberOfSources; m++ {
-                                copy(data[j:(j+4)], igmp.GroupRecords[i].SourceAddresses[m].To4())
-                                j=j+4
-                        }
-                }
-                if opts.ComputeChecksums {
-                        igmp.Checksum = tcpipChecksum(data, 0)
-                        binary.BigEndian.PutUint16(data[2:4], igmp.Checksum)
-                }
-        }
-        return nil
+		data[0] = byte(igmp.Type)
+		data[1] = 0
+		data[2] = 0
+		data[3] = 0
+		data[4] = 0
+		data[5] = 0
+		binary.BigEndian.PutUint16(data[6:8], igmp.NumberOfGroupRecords)
+		j := 8
+		for i := uint16(0); i < igmp.NumberOfGroupRecords; i++ {
+			data[j] = byte(igmp.GroupRecords[i].Type)
+			data[j+1] = byte(0)
+			binary.BigEndian.PutUint16(data[j+2:j+4], igmp.GroupRecords[i].NumberOfSources)
+			copy(data[j+4:j+8], igmp.GroupRecords[i].MulticastAddress.To4())
+			j = j + 8
+			for m := uint16(0); m < igmp.GroupRecords[i].NumberOfSources; m++ {
+				copy(data[j:(j+4)], igmp.GroupRecords[i].SourceAddresses[m].To4())
+				j = j + 4
+			}
+		}
+		if opts.ComputeChecksums {
+			igmp.Checksum = tcpipChecksum(data, 0)
+			binary.BigEndian.PutUint16(data[2:4], igmp.Checksum)
+		}
+	}
+	return nil
 }
 
 // Calculate the TCP/IP checksum defined in rfc1071.  The passed-in csum is any