+type E2NodeConfigList struct {
+ Text string `xml:",chardata"`
+ ProtocolIESingleContainer []struct {
+ Text string `xml:",chardata"`
+ ID string `xml:"id"`
+ Criticality struct {
+ Text string `xml:",chardata"`
+ Reject string `xml:"reject"`
+ } `xml:"criticality"`
+ Value struct {
+ Text string `xml:",chardata"`
+ E2nodeConfigAdditionItem E2NodeConfigAdditionItem `xml:"E2nodeComponentConfigAddition-Item"`
+ } `xml:"value"`
+ } `xml:"ProtocolIE-SingleContainer"`
+}
+
+type E2NodeComponentType struct {
+ Text string `xml:",chardata"`
+ NG *struct{} `xml:"ng"`
+ XN *struct{} `xml:"xn"`
+ E1 *struct{} `xml:"e1"`
+ F1 *struct{} `xml:"f1"`
+ W1 *struct{} `xml:"w1"`
+ S1 *struct{} `xml:"s1"`
+ X2 *struct{} `xml:"x2"`
+}
+
+type E2NodeConfigAdditionItem struct {
+ Text string `xml:",chardata"`
+ E2nodeComponentType E2NodeComponentType `xml:"e2nodeComponentInterfaceType"`
+ E2nodeComponentID E2NodeComponentId `xml:"e2nodeComponentID"`
+ E2nodeConfiguration E2NodeConfigValue `xml:"e2nodeComponentConfiguration"`
+}
+
+type E2NodeConfigValue struct {
+ Text string `xml:",chardata"`
+ E2NodeRequestPart []byte `xml:"e2nodeComponentRequestPart"`
+ E2NodeResponsePart []byte `xml:"e2nodeComponentResponsePart"`
+}
+
+type E2NodeComponentId struct {
+ Text string `xml:",chardata"`
+ E2NodeIFTypeNG E2NodeIFTypeNG
+ E2NodeIFTypeXN E2NodeIFTypeXN
+ E2NodeIFTypeE1 E2NodeIFTypeE1
+ E2NodeIFTypeF1 E2NodeIFTypeF1
+ E2NodeIFTypeW1 E2NodeIFTypeW1
+ E2NodeIFTypeS1 E2NodeIFTypeS1
+ E2NodeIFTypeX2 E2NodeIFTypeX2
+}
+
+type E2NodeIFTypeNG struct {
+ XMLName xml.Name `xml:"e2nodeComponentInterfaceTypeNG"`
+ Text string `xml:",chardata"`
+ AMFName string `xml:"amf-name"`
+}
+
+type E2NodeIFTypeXN struct {
+ XMLName xml.Name `xml:"e2nodeComponentInterfaceTypeXn"`
+ Text string `xml:",chardata"`
+ GlobalNgENBID struct {
+ Text string `xml:",chardata"`
+ GNB struct {
+ Text string `xml:",chardata"`
+ PLMNID string `xml:"plmn-id"`
+ GnbID struct {
+ Text string `xml:",chardata"`
+ GnbID string `xml:"gnb-ID"`
+ } `xml:"gnb-id"`
+ } `xml:"gNB"`
+ NGENB struct {
+ Text string `xml:",chardata"`
+ PLMNID string `xml:"plmn-id"`
+ GnbID struct {
+ Text string `xml:",chardata"`
+ ENBIDMacro string `xml:"enb-ID-macro"`
+ ENBIDShortMacro string `xml:"enb-ID-shortmacro"`
+ ENBIDLongMacro string `xml:"enb-ID-longmacro"`
+ } `xml:"gnb-id"`
+ } `xml:"ng-eNB"`
+ } `xml:"global-NG-RAN-Node-ID"`
+}
+
+type E2NodeIFTypeE1 struct {
+ XMLName xml.Name `xml:"e2nodeComponentInterfaceTypeE1"`
+ Text string `xml:",chardata"`
+ GNBCUCPID int64 `xml:"gNB-CU-CP-ID"`
+}
+
+type E2NodeIFTypeF1 struct {
+ XMLName xml.Name `xml:"e2nodeComponentInterfaceTypeF1"`
+ Text string `xml:",chardata"`
+ GNBDUID int64 `xml:"gNB-DU-ID"`
+}
+
+type E2NodeIFTypeW1 struct {
+ XMLName xml.Name `xml:"e2nodeComponentInterfaceTypeW1"`
+ Text string `xml:",chardata"`
+ NGENBDUID int64 `xml:"ng-eNB-DU-ID"`
+}
+
+type E2NodeIFTypeS1 struct {
+ XMLName xml.Name `xml:"e2nodeComponentInterfaceTypeS1"`
+ Text string `xml:",chardata"`
+ MMENAME string `xml:"mme-name"`
+}
+
+type E2NodeIFTypeX2 struct {
+ XMLName xml.Name `xml:"e2nodeComponentInterfaceTypeX2"`
+ Text string `xml:",chardata"`
+ GlobalENBID struct {
+ Text string `xml:",chardata"`
+ PLMNIdentity string `xml:"pLMN-Identity"`
+ ENBID struct {
+ Text string `xml:",chardata"`
+ MacroENBID string `xml:"macro-eNB-ID"`
+ HomeENBID string `xml:"home-eNB-ID"`
+ ShortMacroENBID string `xml:"short-Macro-eNB-ID"`
+ LongMacroENBID string `xml:"long-Macro-eNB-ID"`
+ } `xml:"eNB-ID"`
+ } `xml:"global-eNB-ID"`
+ GlobalEnGNBID struct {
+ Text string `xml:",chardata"`
+ PLMNIdentity string `xml:"pLMN-Identity"`
+ GNBID struct {
+ Text string `xml:",chardata"`
+ GNBID string `xml:"gNB-ID"`
+ } `xml:"gNB-ID"`
+ } `xml:"global-en-gNB-ID"`
+}
+
+func (m *E2SetupRequestMessage) ExtractRanFunctionsList() []*entities.RanFunction {
+ // TODO: verify e2SetupRequestIEs structure with Adi
+ e2SetupRequestIes := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs
+
+ var ranFuntionsList RANfunctionsList
+ var isPopulated bool
+
+ for _, v := range e2SetupRequestIes {
+ if v.ID == RanFunctionsAddedID {
+ ranFuntionsList = v.Value.RANfunctionsList
+ isPopulated = true
+ break