VOL-2293, VOL-2456 improve error handling
Change-Id: I4be5f12719a31b40363758cd47cc02968f180c75
diff --git a/adaptercore/olt_platform.go b/adaptercore/olt_platform.go
index efc0029..bca0584 100644
--- a/adaptercore/olt_platform.go
+++ b/adaptercore/olt_platform.go
@@ -18,8 +18,6 @@
package adaptercore
import (
- "errors"
-
"github.com/opencord/voltha-lib-go/v3/pkg/flows"
"github.com/opencord/voltha-lib-go/v3/pkg/log"
ofp "github.com/opencord/voltha-protos/v3/go/openflow_13"
@@ -107,6 +105,12 @@
ponIntfMarkerPos = 28
//Value of marker used to distinguish PON port type of OF port
ponIntfMarkerValue = 0x2
+ // Number of bits for NNI ID
+ bitsforNNIID = 20
+ // minNniIntPortNum is used to store start range of nni port number (1 << 20) 1048576
+ minNniIntPortNum = (1 << bitsforNNIID)
+ // maxNniPortNum is used to store the maximum range of nni port number ((1 << 21)-1) 2097151
+ maxNniPortNum = ((1 << (bitsforNNIID + 1)) - 1)
)
//MinUpstreamPortID value
@@ -164,8 +168,12 @@
}
//IntfIDFromNniPortNum returns Intf ID derived from portNum
-func IntfIDFromNniPortNum(portNum uint32) uint32 {
- return portNum & 0xFFFF
+func IntfIDFromNniPortNum(portNum uint32) (uint32, error) {
+ if portNum < minNniIntPortNum || portNum > maxNniPortNum {
+ log.Errorw("NNIPortNumber is not in valid range", log.Fields{"portNum": portNum})
+ return uint32(0), ErrInvalidPortRange
+ }
+ return (portNum & 0xFFFF), nil
}
//IntfIDToPortTypeName returns port type derived from the intfId
@@ -252,7 +260,8 @@
}
if uniPortNo == 0 {
- return 0, 0, 0, 0, 0, 0, errors.New("failed to extract Pon Interface, ONU Id and Uni Id from flow")
+ return 0, 0, 0, 0, 0, 0, NewErrNotFound("pon-interface", log.Fields{
+ "flow-direction": flowDirection}, nil)
}
ponIntf = IntfIDFromUniPortNum(uniPortNo)