X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=pkg%2Frpe%2Frmr.go;h=df7bb3f4db1181acbc7a934bd432d400f5bd1c2f;hb=2bff80d0fa41b3e2b89b9fb32431558a9cb35170;hp=17c977b42d66cd7b7332b20af0dd88763d370e60;hpb=505e2497ce651c1127ffbcefe396b3f8c0d0f9dd;p=ric-plt%2Frtmgr.git diff --git a/pkg/rpe/rmr.go b/pkg/rpe/rmr.go index 17c977b..df7bb3f 100644 --- a/pkg/rpe/rmr.go +++ b/pkg/rpe/rmr.go @@ -35,7 +35,7 @@ import ( "routing-manager/pkg/models" "routing-manager/pkg/rtmgr" "strconv" - //"strings" + "strings" ) type Rmr struct { @@ -79,10 +79,11 @@ func (r *Rmr) generateRMRPolicies(eps rtmgr.Endpoints, rcs *rtmgr.RicComponents, group += ";" + member } } - rawrte += group if rte.RouteType == "%meid" { - rawrte += group + rte.RouteType + rawrte += "%" + "meid" + } else { + rawrte += group } rawrt = append(rawrt, rawrte+"\n") @@ -94,22 +95,34 @@ func (r *Rmr) generateRMRPolicies(eps rtmgr.Endpoints, rcs *rtmgr.RicComponents, rawrt = append(rawrt, key+"newrt|end\n") count := 0 - //meidrt := key + "meid_map|start\n" - //meidrt := []string{key + "meid_map|start\n"} rawrt = append(rawrt, key+"meid_map|start\n") + keys := make(map[string]RouteIndex) for _, value := range rcs.MeidMap { - //meidrt += key + value + "\n" - rawrt = append(rawrt, key+value+"\n") - count++ + if _, v := keys[key+value+"\n"]; !v { + rawrt = append(rawrt, key+value+"\n") + appendedindex := uint16(len(rawrt) - 1) + keys[key+value+"\n"] = RouteIndex{true, appendedindex} + count++ + } + if strings.Contains(value, "mme_ar") { + tmpstr := strings.Split(value, "|") + + //MEID entry for mme_ar must always contain 3 strings speartred by | i.e "mme_ar||" + MEID := strings.TrimSuffix(tmpstr[2], "\n") + + mapindex := "mme_del|" + MEID + "\n" + i := keys[mapindex].index + if keys[mapindex].flag { + copy(rawrt[i:], rawrt[i+1:]) + rawrt[len(rawrt)-1] = "" + rawrt = rawrt[:len(rawrt)-1] + delete(keys, mapindex) + count-- + } + } } rawrt = append(rawrt, key+"meid_map|end|"+strconv.Itoa(count)+"\n") - //meidrt += key+"meid_map|end|" + strconv.Itoa(count) +"\n" - - /*for _, value := range meidrt { - rawrt = append(meidrt, value) - }*/ - //rawrt = append(rawrt, meidrt) xapp.Logger.Debug("rmr.GeneratePolicies returns: %v", rawrt) xapp.Logger.Debug("rmr.GeneratePolicies returns: %v", rcs) return &rawrt @@ -143,10 +156,11 @@ func (r *Rmr) generatePartialRMRPolicies(eps rtmgr.Endpoints, xappSubData *model group += ";" + member } } - rawrte += group if rte.RouteType == "%meid" { - rawrte += group + rte.RouteType + rawrte += "%" + "meid" + } else { + rawrte += group } rawrt = append(rawrt, rawrte+"\n") @@ -168,6 +182,6 @@ func (r *RmrPush) GenerateRouteTable(eps rtmgr.Endpoints) *rtmgr.RouteTable { } func (r *RmrPush) GeneratePartialPolicies(eps rtmgr.Endpoints, xappSubData *models.XappSubscriptionData, updatetype rtmgr.RMRUpdateType) *[]string { - xapp.Logger.Debug("Invoked rmr.GeneratePartialRMR, args: %v: ", eps) + xapp.Logger.Debug("Invoked rmr.GeneratePartialPolicies, args: %v: ", eps) return r.generatePartialRMRPolicies(eps, xappSubData, "", updatetype) }