[VOL-3891] Avoid runtime error due to null instruction, adding also logs for further debugging
Change-Id: Ibec27f73a7b4dc50422864761609ca4404e4ef9b
diff --git a/internal/pkg/openflow/group.go b/internal/pkg/openflow/group.go
index 0b316bd..42f1671 100644
--- a/internal/pkg/openflow/group.go
+++ b/internal/pkg/openflow/group.go
@@ -18,6 +18,7 @@
import (
"context"
+ "fmt"
"github.com/opencord/goloxi"
ofp "github.com/opencord/goloxi/of13"
"github.com/opencord/voltha-lib-go/v4/pkg/log"
@@ -123,11 +124,14 @@
return outActions
}
-func volthaBucketsToOpenflow(ctx context.Context, buckets []*openflow_13.OfpBucket) []*ofp.Bucket {
+func volthaBucketsToOpenflow(ctx context.Context, buckets []*openflow_13.OfpBucket) ([]*ofp.Bucket, error) {
outBuckets := make([]*ofp.Bucket, len(buckets))
for i, bucket := range buckets {
- actions := volthaActionsToOpenflow(ctx, bucket.Actions)
+ actions, err := volthaActionsToOpenflow(ctx, bucket.Actions)
+ if err != nil {
+ return nil, err
+ }
b := &ofp.Bucket{
Weight: uint16(bucket.Weight),
WatchPort: ofp.Port(bucket.WatchPort),
@@ -137,15 +141,21 @@
outBuckets[i] = b
}
- return outBuckets
+ return outBuckets, nil
}
-func volthaActionsToOpenflow(ctx context.Context, actions []*openflow_13.OfpAction) []goloxi.IAction {
+func volthaActionsToOpenflow(ctx context.Context, actions []*openflow_13.OfpAction) ([]goloxi.IAction, error) {
outActions := make([]goloxi.IAction, len(actions))
for i, action := range actions {
- outActions[i] = parseAction(ctx, action)
+ outAction, err := parseAction(ctx, action)
+ if err == nil {
+ outActions[i] = outAction
+ } else {
+ return nil, fmt.Errorf("can't-parse-action %v", err)
+ }
+
}
- return outActions
+ return outActions, nil
}