+ xapp.Logger.Debug("received XApp subscription data")
+ addSubscription(&rtmgr.Subs, data)
+ xapp.Logger.Debug("Endpoints: %v", rtmgr.Eps)
+ return sendRoutesToAll()
+}
+
+func subscriptionExists(data *models.XappSubscriptionData) bool {
+ present := false
+ sub := rtmgr.Subscription{SubID: *data.SubscriptionID, Fqdn: *data.Address, Port: *data.Port}
+ for _, elem := range rtmgr.Subs {
+ if elem == sub {
+ present = true
+ break
+ }
+ }
+ return present
+}
+
+func deleteXappSubscriptionHandleImpl(data *models.XappSubscriptionData) error {
+ xapp.Logger.Debug("Invoked deleteXappSubscriptionHandleImpl")
+ err := validateXappSubscriptionData(data)
+ if err != nil {
+ xapp.Logger.Error(err.Error())
+ return err
+ }
+
+ if !subscriptionExists(data) {
+ xapp.Logger.Warn("subscription not found: %d", *data.SubscriptionID)
+ err := fmt.Errorf("subscription not found: %d", *data.SubscriptionID)
+ return err
+ }
+
+ xapp.Logger.Debug("received XApp subscription delete data")
+ delSubscription(&rtmgr.Subs, data)
+ return sendRoutesToAll()
+
+}
+
+func updateXappSubscriptionHandleImpl(data *models.XappList, subid uint16) error {
+ xapp.Logger.Debug("Invoked updateXappSubscriptionHandleImpl")
+
+ var fqdnlist []rtmgr.FqDn
+ for _, item := range *data {
+ fqdnlist = append(fqdnlist, rtmgr.FqDn(*item))
+ }
+ xapplist := rtmgr.XappList{SubscriptionID: subid, FqdnList: fqdnlist}
+ var subdata models.XappSubscriptionData
+ var id int32
+ id = int32(subid)
+ subdata.SubscriptionID = &id
+ for _, items := range fqdnlist {
+ subdata.Address = items.Address
+ subdata.Port = items.Port
+ err := validateXappSubscriptionData(&subdata)
+ if err != nil {
+ xapp.Logger.Error(err.Error())
+ return err
+ }
+ }
+ xapp.Logger.Debug("received XApp subscription Merge data")
+ updateSubscription(&xapplist)
+ return sendRoutesToAll()
+}
+
+func createNewE2tHandleHandlerImpl(data *models.E2tData) error {
+ xapp.Logger.Debug("Invoked createNewE2tHandleHandlerImpl")
+ err := validateE2tData(data)
+ if err != nil {
+ xapp.Logger.Error(err.Error())
+ return err
+ }
+ //e2taddchan <- data
+ e2data, meiddata, _ := recvNewE2Tdata(data)
+ xapp.Logger.Debug("received create New E2T data")
+ m.Lock()
+ sdlEngine.WriteNewE2TInstance(xapp.Config.GetString("rtfile"), e2data, meiddata)
+ m.Unlock()
+ return sendRoutesToAll()
+
+}
+
+func validateE2TAddressRANListData(assRanE2tData models.RanE2tMap) error {
+
+ xapp.Logger.Debug("Invoked.validateE2TAddressRANListData : %v", assRanE2tData)
+
+ for _, element := range assRanE2tData {
+ if *element.E2TAddress == "" {
+ return fmt.Errorf("E2T Instance - E2TAddress is empty!!!")
+ }
+
+ e2taddress_key := *element.E2TAddress
+ if !checkValidaE2TAddress(e2taddress_key) {
+ return fmt.Errorf("E2TAddress doesn't exist!!!, E2TAddress: %v", e2taddress_key)
+ }
+
+ }