[VOL-3745] Chaos Monkey: BBSIM-ONU does not respond to OMCI requests

Change-Id: I9d52a05657be448839f0a180126736ec9a33eaaf
diff --git a/internal/bbsim/devices/onu.go b/internal/bbsim/devices/onu.go
index 466f383..e2ed180 100644
--- a/internal/bbsim/devices/onu.go
+++ b/internal/bbsim/devices/onu.go
@@ -20,18 +20,20 @@
 	"context"
 	"encoding/hex"
 	"fmt"
+	"sync"
+
 	pb "github.com/opencord/bbsim/api/bbsim"
 	"github.com/opencord/bbsim/internal/bbsim/alarmsim"
-	"sync"
+
+	"net"
+	"strconv"
+	"time"
 
 	"github.com/opencord/bbsim/internal/bbsim/packetHandlers"
 	"github.com/opencord/bbsim/internal/bbsim/responders/dhcp"
 	"github.com/opencord/bbsim/internal/bbsim/responders/eapol"
 	bbsim "github.com/opencord/bbsim/internal/bbsim/types"
 	me "github.com/opencord/omci-lib-go/generated"
-	"net"
-	"strconv"
-	"time"
 
 	"github.com/google/gopacket/layers"
 	"github.com/jpillora/backoff"
@@ -49,6 +51,10 @@
 })
 
 const (
+	maxOmciMsgCounter = 10
+)
+
+const (
 	// ONU transitions
 	OnuTxInitialize            = "initialize"
 	OnuTxDiscover              = "discover"
@@ -118,6 +124,8 @@
 	ImageSoftwareReceivedSections int
 	ActiveImageEntityId           uint16
 	CommittedImageEntityId        uint16
+	OmciResponseRate              uint8
+	OmciMsgCounter                uint8
 
 	// OMCI params (Used in BBR)
 	tid       uint16
@@ -153,6 +161,8 @@
 		ImageSoftwareReceivedSections: 0,
 		ActiveImageEntityId:           0, // when we start the SoftwareImage with ID 0 is active and committed
 		CommittedImageEntityId:        0,
+		OmciResponseRate:              olt.OmciResponseRate,
+		OmciMsgCounter:                0,
 	}
 	o.SerialNumber = NewSN(olt.ID, pon.ID, id)
 	// NOTE this state machine is used to track the operational
@@ -732,6 +742,19 @@
 		"SerialNumber": o.Sn(),
 	}).Trace("omci-message-decoded")
 
+	if o.OmciMsgCounter < maxOmciMsgCounter {
+		o.OmciMsgCounter++
+	} else {
+		o.OmciMsgCounter = 1
+	}
+	if o.OmciMsgCounter > o.OmciResponseRate {
+		onuLogger.WithFields(log.Fields{
+			"OmciMsgCounter":   o.OmciMsgCounter,
+			"OmciResponseRate": o.OmciResponseRate,
+			"omciMsgType":      msg.OmciMsg.MessageType,
+		}).Debug("skip-omci-msg-response")
+		return
+	}
 	var responsePkt []byte
 	var errResp error
 	switch msg.OmciMsg.MessageType {