+func (r *Registry) RouteCreate(subs *Subscription, c *Control) error {
+ subRouteAction := SubRouteInfo{subs.EpList, uint16(subs.ReqId.InstanceId)}
+ err := r.rtmgrClient.SubscriptionRequestCreate(subRouteAction)
+ if err != nil {
+ c.UpdateCounter(cRouteCreateFail)
+ }
+ return err
+}
+
+func (r *Registry) RouteCreateUpdate(subs *Subscription, c *Control) error {
+ subRouteAction := SubRouteInfo{subs.EpList, uint16(subs.ReqId.InstanceId)}
+ err := r.rtmgrClient.SubscriptionRequestUpdate(subRouteAction)
+ if err != nil {
+ c.UpdateCounter(cRouteCreateUpdateFail)
+ return err
+ }
+ c.UpdateCounter(cMergedSubscriptions)
+ return err
+}
+
+func (r *Registry) CheckActionTypes(subReqMsg *e2ap.E2APSubscriptionRequest) (uint64, error) {
+ var reportFound bool = false
+ var policyFound bool = false
+ var insertFound bool = false
+
+ for _, acts := range subReqMsg.ActionSetups {
+ if acts.ActionType == e2ap.E2AP_ActionTypeReport {
+ reportFound = true
+ }
+ if acts.ActionType == e2ap.E2AP_ActionTypePolicy {
+ policyFound = true
+ }
+ if acts.ActionType == e2ap.E2AP_ActionTypeInsert {
+ insertFound = true
+ }
+ }
+ if reportFound == true && policyFound == true || reportFound == true && insertFound == true || policyFound == true && insertFound == true {
+ return e2ap.E2AP_ActionTypeInvalid, fmt.Errorf("Different action types (Report, Policy or Insert) in same RICactions-ToBeSetup-List")
+ }
+ if reportFound == true {
+ return e2ap.E2AP_ActionTypeReport, nil
+ }
+ if policyFound == true {
+ return e2ap.E2AP_ActionTypePolicy, nil
+ }
+ if insertFound == true {
+ return e2ap.E2AP_ActionTypeInsert, nil
+ }
+ return e2ap.E2AP_ActionTypeInvalid, fmt.Errorf("Invalid action type in RICactions-ToBeSetup-List")
+}
+
+// TODO: Works with concurrent calls, but check if can be improved
+func (r *Registry) RemoveFromSubscription(subs *Subscription, trans *TransactionXapp, waitRouteClean time.Duration, c *Control) error {
+