[VOL-3914] Not forwarding OMCI messages if the ONU is disabled
Change-Id: Ic826368642e510e9dc39766569ed5682e5910b5d
diff --git a/internal/bbsim/devices/olt.go b/internal/bbsim/devices/olt.go
index 87b9da4..b2480e7 100644
--- a/internal/bbsim/devices/olt.go
+++ b/internal/bbsim/devices/olt.go
@@ -22,6 +22,7 @@
"fmt"
"github.com/opencord/bbsim/internal/bbsim/responders/dhcp"
"github.com/opencord/bbsim/internal/bbsim/types"
+ omcilib "github.com/opencord/bbsim/internal/common/omci"
"github.com/opencord/voltha-protos/v4/go/ext/config"
"net"
"strconv"
@@ -1335,15 +1336,37 @@
"OnuId": onu.ID,
"OnuSn": onu.Sn(),
}).Tracef("Received OmciMsgOut")
- msg := types.Message{
- Type: types.OMCI,
- Data: types.OmciMessage{
- OnuSN: onu.SerialNumber,
- OnuID: onu.ID,
- OmciMsg: omci_msg,
- },
+ omciPkt, omciMsg, err := omcilib.ParseOpenOltOmciPacket(omci_msg.Pkt)
+ if err != nil {
+ log.WithFields(log.Fields{
+ "IntfId": onu.PonPortID,
+ "SerialNumber": onu.Sn(),
+ "omciPacket": omcilib.HexDecode(omci_msg.Pkt),
+ "err": err.Error(),
+ }).Error("cannot-parse-OMCI-packet")
+ return nil, fmt.Errorf("olt-received-malformed-omci-packet")
}
- onu.Channel <- msg
+ if onu.InternalState.Current() == OnuStateDisabled {
+ // if the ONU is disabled just drop the message
+ log.WithFields(log.Fields{
+ "IntfId": onu.PonPortID,
+ "SerialNumber": onu.Sn(),
+ "omciBytes": hex.EncodeToString(omciPkt.Data()),
+ "omciPkt": omciPkt,
+ "omciMsgType": omciMsg.MessageType,
+ }).Warn("dropping-omci-message")
+ } else {
+ msg := types.Message{
+ Type: types.OMCI,
+ Data: types.OmciMessage{
+ OnuSN: onu.SerialNumber,
+ OnuID: onu.ID,
+ OmciMsg: omciMsg,
+ OmciPkt: omciPkt,
+ },
+ }
+ onu.Channel <- msg
+ }
return new(openolt.Empty), nil
}