--- /dev/null
+//
+// Copyright 2022 Samsung Electronics Co.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This source code is part of the near-RT RIC (RAN Intelligent Controller)
+// platform project (RICP).
+
+package models
+
+import (
+ "encoding/xml"
+)
+
+type E2nodeConfigurationUpdateMessage struct {
+ XMLName xml.Name `xml:"E2nodeConfigurationUpdateMessage"`
+ Text string `xml:",chardata"`
+ E2APPDU struct {
+ Text string `xml:",chardata"`
+ InitiatingMessage struct {
+ Text string `xml:",chardata"`
+ ProcedureCode string `xml:"procedureCode"`
+ Criticality struct {
+ Text string `xml:",chardata"`
+ Reject string `xml:"reject"`
+ } `xml:"criticality"`
+ Value struct {
+ Text string `xml:",chardata"`
+ E2nodeConfigurationUpdate E2nodeConfigurationUpdate `xml:"E2nodeConfigurationUpdate"`
+ } `xml:"value"`
+ } `xml:"initiatingMessage"`
+ } `xml:"E2AP-PDU"`
+}
+
+type E2nodeConfigurationUpdate struct {
+ Text string `xml:",chardata"`
+ ProtocolIEs struct {
+ Text string `xml:",chardata"`
+ E2nodeConfigurationUpdateIEs []E2nodeConfigurationUpdateIE `xml:"E2nodeConfigurationUpdate-IEs"`
+ } `xml:"protocolIEs"`
+}
+
+type E2nodeConfigurationUpdateIE 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"`
+ E2nodeComponentConfigAdditionList E2nodeComponentConfigAdditionList `xml:"E2nodeComponentConfigAddition-List"`
+ E2nodeComponentConfigUpdateList E2nodeComponentConfigUpdateList `xml:"E2nodeComponentConfigUpdate-List"`
+ E2nodeComponentConfigRemovalList E2nodeComponentConfigRemovalList `xml:"E2nodeComponentConfigRemoval-List"`
+ } `xml:"value"`
+}
+
+type E2nodeComponentConfigAdditionList 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"`
+ E2nodeComponentConfigAdditionItem struct {
+ Text string `xml:",chardata"`
+ E2nodeComponentInterfaceType E2nodeComponentInterfaceType `xml:"e2nodeComponentInterfaceType"`
+ E2nodeComponentID E2nodeComponentID `xml:"e2nodeComponentID"`
+ E2nodeComponentConfiguration E2nodeComponentConfiguration `xml:"e2nodeComponentConfiguration"`
+ } `xml:"E2nodeComponentConfigAddition-Item"`
+ } `xml:"value"`
+ } `xml:"ProtocolIE-SingleContainer"`
+}
+
+type E2nodeComponentConfigUpdateList 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"`
+ E2nodeComponentConfigUpdateItem struct {
+ Text string `xml:",chardata"`
+ E2nodeComponentInterfaceType E2nodeComponentInterfaceType `xml:"e2nodeComponentInterfaceType"`
+ E2nodeComponentID E2nodeComponentID `xml:"e2nodeComponentID"`
+ E2nodeComponentConfiguration E2nodeComponentConfiguration `xml:"e2nodeComponentConfiguration"`
+ } `xml:"E2nodeComponentConfigUpdate-Item"`
+ } `xml:"value"`
+ } `xml:"ProtocolIE-SingleContainer"`
+}
+
+type E2nodeComponentConfigRemovalList 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"`
+ E2nodeComponentConfigRemovalItem struct {
+ Text string `xml:",chardata"`
+ E2nodeComponentInterfaceType E2nodeComponentInterfaceType `xml:"e2nodeComponentInterfaceType"`
+ E2nodeComponentID E2nodeComponentID `xml:"e2nodeComponentID"`
+ } `xml:"E2nodeComponentConfigRemoval-Item"`
+ } `xml:"value"`
+ } `xml:"ProtocolIE-SingleContainer"`
+}
+
+type E2nodeComponentInterfaceType 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 E2nodeComponentID struct {
+ Text string `xml:",chardata"`
+ E2nodeComponentInterfaceTypeNG struct {
+ Text string `xml:",chardata"`
+ AmfName string `xml:"amf-name"`
+ } `xml:"e2nodeComponentInterfaceTypeNG"`
+ E2nodeComponentInterfaceTypeXn struct {
+ Text string `xml:",chardata"`
+ GlobalNGRANNodeID string `xml:"global-NG-RAN-Node-ID"`
+ } `xml:"e2nodeComponentInterfaceTypeXn"`
+ E2nodeComponentInterfaceTypeE1 struct {
+ Text string `xml:",chardata"`
+ GNBCUCPID string `xml:"gNB-CU-CP-ID"`
+ } `xml:"e2nodeComponentInterfaceTypeE1"`
+ E2nodeComponentInterfaceTypeF1 struct {
+ Text string `xml:",chardata"`
+ GNBDUID string `xml:"gNB-DU-ID"`
+ } `xml:"e2nodeComponentInterfaceTypeF1"`
+ E2nodeComponentInterfaceTypeW1 struct {
+ Text string `xml:",chardata"`
+ NgENBDUID string `xml:"ng-eNB-DU-ID"`
+ } `xml:"e2nodeComponentInterfaceTypeW1"`
+ E2nodeComponentInterfaceTypeS1 struct {
+ Text string `xml:",chardata"`
+ MmeName string `xml:"mme-name"`
+ } `xml:"e2nodeComponentInterfaceTypeS1"`
+ E2nodeComponentInterfaceTypeX2 struct {
+ Text string `xml:",chardata"`
+ GlobalENBID string `xml:"global-eNB-ID"`
+ GlobalEnGNBID string `xml:"global-en-gNB-ID"`
+ } `xml:"e2nodeComponentInterfaceTypeX2"`
+}
+
+type E2nodeComponentConfiguration struct {
+ Text string `xml:",chardata"`
+ E2nodeComponentRequestPart string `xml:"e2nodeComponentRequestPart"`
+ E2nodeComponentResponsePart string `xml:"e2nodeComponentResponsePart"`
+}
--- /dev/null
+//
+// Copyright 2022 Samsung Electronics Co.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This source code is part of the near-RT RIC (RAN Intelligent Controller)
+// platform project (RICP).
+
+package models_test
+
+import (
+ "e2mgr/models"
+ "e2mgr/utils"
+ "encoding/xml"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+const (
+ e2NodeConfigurationUpdateOnlyAdditionXmlPath = "../tests/resources/configurationUpdate/e2NodeConfigurationUpdateOnlyAddition.xml"
+ e2NodeConfigurationUpdateXmlPath = "../tests/resources/configurationUpdate/e2NodeConfigurationUpdate.xml"
+)
+
+func getTestE2NodeConfigurationUpdateMessage(t *testing.T, reqXmlPath string) *models.E2nodeConfigurationUpdateMessage {
+ xmlConfUpdate := utils.ReadXmlFile(t, reqXmlPath)
+ confUpdateMsg := &models.E2nodeConfigurationUpdateMessage{}
+ err := xml.Unmarshal(utils.NormalizeXml(xmlConfUpdate), &confUpdateMsg.E2APPDU)
+ assert.Nil(t, err)
+ return confUpdateMsg
+}
+
+func TestParseE2NodeConfigurationUpdateSuccessAdditionOnly(t *testing.T) {
+ configurationUpdate := getTestE2NodeConfigurationUpdateMessage(t, e2NodeConfigurationUpdateOnlyAdditionXmlPath)
+ assert.NotEqual(t, nil, configurationUpdate, "xml is not parsed correctly")
+ assert.Equal(t, "6", configurationUpdate.E2APPDU.InitiatingMessage.ProcedureCode)
+ assert.Equal(t, 1, len(configurationUpdate.E2APPDU.InitiatingMessage.Value.E2nodeConfigurationUpdate.ProtocolIEs.E2nodeConfigurationUpdateIEs))
+ assert.Equal(t, 1, len(configurationUpdate.E2APPDU.InitiatingMessage.Value.E2nodeConfigurationUpdate.ProtocolIEs.E2nodeConfigurationUpdateIEs[0].Value.E2nodeComponentConfigAdditionList.ProtocolIESingleContainer))
+ assert.Equal(t, false, configurationUpdate.E2APPDU.InitiatingMessage.Value.E2nodeConfigurationUpdate.ProtocolIEs.E2nodeConfigurationUpdateIEs[0].Value.E2nodeComponentConfigAdditionList.ProtocolIESingleContainer[0].Value.E2nodeComponentConfigAdditionItem.E2nodeComponentInterfaceType.Ng == nil)
+ assert.Equal(t, true, configurationUpdate.E2APPDU.InitiatingMessage.Value.E2nodeConfigurationUpdate.ProtocolIEs.E2nodeConfigurationUpdateIEs[0].Value.E2nodeComponentConfigAdditionList.ProtocolIESingleContainer[0].Value.E2nodeComponentConfigAdditionItem.E2nodeComponentInterfaceType.E1 == nil)
+ assert.Equal(t, true, configurationUpdate.E2APPDU.InitiatingMessage.Value.E2nodeConfigurationUpdate.ProtocolIEs.E2nodeConfigurationUpdateIEs[0].Value.E2nodeComponentConfigAdditionList.ProtocolIESingleContainer[0].Value.E2nodeComponentConfigAdditionItem.E2nodeComponentInterfaceType.E1 == nil)
+}
+
+func TestParseE2NodeConfigurationUpdateSuccess(t *testing.T) {
+ configurationUpdate := getTestE2NodeConfigurationUpdateMessage(t, e2NodeConfigurationUpdateXmlPath)
+ assert.NotEqual(t, nil, configurationUpdate, "xml is not parsed correctly")
+ assert.Equal(t, "6", configurationUpdate.E2APPDU.InitiatingMessage.ProcedureCode)
+ assert.Equal(t, 3, len(configurationUpdate.E2APPDU.InitiatingMessage.Value.E2nodeConfigurationUpdate.ProtocolIEs.E2nodeConfigurationUpdateIEs))
+
+ assert.Equal(t, 7, len(configurationUpdate.E2APPDU.InitiatingMessage.Value.E2nodeConfigurationUpdate.ProtocolIEs.E2nodeConfigurationUpdateIEs[0].Value.E2nodeComponentConfigAdditionList.ProtocolIESingleContainer))
+ assert.Equal(t, false, configurationUpdate.E2APPDU.InitiatingMessage.Value.E2nodeConfigurationUpdate.ProtocolIEs.E2nodeConfigurationUpdateIEs[0].Value.E2nodeComponentConfigAdditionList.ProtocolIESingleContainer[0].Value.E2nodeComponentConfigAdditionItem.E2nodeComponentInterfaceType.Ng == nil)
+ assert.Equal(t, true, configurationUpdate.E2APPDU.InitiatingMessage.Value.E2nodeConfigurationUpdate.ProtocolIEs.E2nodeConfigurationUpdateIEs[0].Value.E2nodeComponentConfigAdditionList.ProtocolIESingleContainer[0].Value.E2nodeComponentConfigAdditionItem.E2nodeComponentInterfaceType.E1 == nil)
+ assert.Equal(t, true, configurationUpdate.E2APPDU.InitiatingMessage.Value.E2nodeConfigurationUpdate.ProtocolIEs.E2nodeConfigurationUpdateIEs[0].Value.E2nodeComponentConfigAdditionList.ProtocolIESingleContainer[0].Value.E2nodeComponentConfigAdditionItem.E2nodeComponentInterfaceType.E1 == nil)
+
+ updateIE := configurationUpdate.E2APPDU.InitiatingMessage.Value.E2nodeConfigurationUpdate.ProtocolIEs.E2nodeConfigurationUpdateIEs[1]
+ assert.Equal(t, 7, len(updateIE.Value.E2nodeComponentConfigUpdateList.ProtocolIESingleContainer))
+ assert.Equal(t, false, updateIE.Value.E2nodeComponentConfigUpdateList.ProtocolIESingleContainer[0].Value.E2nodeComponentConfigUpdateItem.E2nodeComponentInterfaceType.Ng == nil)
+ assert.Equal(t, true, updateIE.Value.E2nodeComponentConfigUpdateList.ProtocolIESingleContainer[0].Value.E2nodeComponentConfigUpdateItem.E2nodeComponentInterfaceType.E1 == nil)
+ assert.Equal(t, true, updateIE.Value.E2nodeComponentConfigUpdateList.ProtocolIESingleContainer[0].Value.E2nodeComponentConfigUpdateItem.E2nodeComponentInterfaceType.E1 == nil)
+
+ removalIE := configurationUpdate.E2APPDU.InitiatingMessage.Value.E2nodeConfigurationUpdate.ProtocolIEs.E2nodeConfigurationUpdateIEs[2]
+ assert.Equal(t, 7, len(removalIE.Value.E2nodeComponentConfigRemovalList.ProtocolIESingleContainer))
+ assert.Equal(t, false, removalIE.Value.E2nodeComponentConfigRemovalList.ProtocolIESingleContainer[0].Value.E2nodeComponentConfigRemovalItem.E2nodeComponentInterfaceType.Ng == nil)
+ assert.Equal(t, true, removalIE.Value.E2nodeComponentConfigRemovalList.ProtocolIESingleContainer[0].Value.E2nodeComponentConfigRemovalItem.E2nodeComponentInterfaceType.E1 == nil)
+ assert.Equal(t, true, removalIE.Value.E2nodeComponentConfigRemovalList.ProtocolIESingleContainer[0].Value.E2nodeComponentConfigRemovalItem.E2nodeComponentInterfaceType.E1 == nil)
+}
--- /dev/null
+<E2AP-PDU>
+ <initiatingMessage>
+ <procedureCode>6</procedureCode>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeConfigurationUpdate>
+ <protocolIEs>
+ <E2nodeConfigurationUpdate-IEs>
+ <id>50</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigAddition-List>
+ <ProtocolIE-SingleContainer>
+ <id>51</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigAddition-Item>
+ <e2nodeComponentInterfaceType><ng/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeNG>
+ <amf-name>nginterf</amf-name>
+ </e2nodeComponentInterfaceTypeNG>
+ </e2nodeComponentID>
+ <e2nodeComponentConfiguration>
+ <e2nodeComponentRequestPart>72 65 71 70 61 72 74</e2nodeComponentRequestPart>
+ <e2nodeComponentResponsePart>72 65 73 70 61 72 74</e2nodeComponentResponsePart>
+ </e2nodeComponentConfiguration>
+ </E2nodeComponentConfigAddition-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>51</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigAddition-Item>
+ <e2nodeComponentInterfaceType><xn/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeXn>
+ <global-NG-RAN-Node-ID>
+ <gNB>
+ <plmn-id>
+ 67 6E 62 3A 31 32 33 34 35 36 37 38 39 73 64 66
+ 67 31 31 31
+ </plmn-id>
+ <gnb-id>
+ <gnb-ID>
+ 0011000100110010001100110011010000110101001100010011001000110011
+ 0011010000110101001100010011001000110011001101000011001000110010
+ 00110010001100100011001000110010
+ </gnb-ID>
+ </gnb-id>
+ </gNB>
+ </global-NG-RAN-Node-ID>
+ </e2nodeComponentInterfaceTypeXn>
+ </e2nodeComponentID>
+ <e2nodeComponentConfiguration>
+ <e2nodeComponentRequestPart>72 65 71 70 61 72 74</e2nodeComponentRequestPart>
+ <e2nodeComponentResponsePart>72 65 73 70 61 72 74</e2nodeComponentResponsePart>
+ </e2nodeComponentConfiguration>
+ </E2nodeComponentConfigAddition-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>51</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigAddition-Item>
+ <e2nodeComponentInterfaceType><e1/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeE1>
+ <gNB-CU-CP-ID>100</gNB-CU-CP-ID>
+ </e2nodeComponentInterfaceTypeE1>
+ </e2nodeComponentID>
+ <e2nodeComponentConfiguration>
+ <e2nodeComponentRequestPart>72 65 71 70 61 72 74</e2nodeComponentRequestPart>
+ <e2nodeComponentResponsePart>72 65 73 70 61 72 74</e2nodeComponentResponsePart>
+ </e2nodeComponentConfiguration>
+ </E2nodeComponentConfigAddition-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>51</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigAddition-Item>
+ <e2nodeComponentInterfaceType><f1/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeF1>
+ <gNB-DU-ID>100</gNB-DU-ID>
+ </e2nodeComponentInterfaceTypeF1>
+ </e2nodeComponentID>
+ <e2nodeComponentConfiguration>
+ <e2nodeComponentRequestPart>72 65 71 70 61 72 74</e2nodeComponentRequestPart>
+ <e2nodeComponentResponsePart>72 65 73 70 61 72 74</e2nodeComponentResponsePart>
+ </e2nodeComponentConfiguration>
+ </E2nodeComponentConfigAddition-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>51</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigAddition-Item>
+ <e2nodeComponentInterfaceType><w1/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeW1>
+ <ng-eNB-DU-ID>121</ng-eNB-DU-ID>
+ </e2nodeComponentInterfaceTypeW1>
+ </e2nodeComponentID>
+ <e2nodeComponentConfiguration>
+ <e2nodeComponentRequestPart>72 65 71 70 61 72 74</e2nodeComponentRequestPart>
+ <e2nodeComponentResponsePart>72 65 73 70 61 72 74</e2nodeComponentResponsePart>
+ </e2nodeComponentConfiguration>
+ </E2nodeComponentConfigAddition-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>51</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigAddition-Item>
+ <e2nodeComponentInterfaceType><s1/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeS1>
+ <mme-name>s1interf</mme-name>
+ </e2nodeComponentInterfaceTypeS1>
+ </e2nodeComponentID>
+ <e2nodeComponentConfiguration>
+ <e2nodeComponentRequestPart>72 65 71 70 61 72 74</e2nodeComponentRequestPart>
+ <e2nodeComponentResponsePart>72 65 73 70 61 72 74</e2nodeComponentResponsePart>
+ </e2nodeComponentConfiguration>
+ </E2nodeComponentConfigAddition-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>51</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigAddition-Item>
+ <e2nodeComponentInterfaceType><x2/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeX2>
+ <global-eNB-ID>x2interf</global-eNB-ID>
+ <global-en-gNB-ID>x2interf</global-en-gNB-ID>
+ </e2nodeComponentInterfaceTypeX2>
+ </e2nodeComponentID>
+ <e2nodeComponentConfiguration>
+ <e2nodeComponentRequestPart>72 65 71 70 61 72 74</e2nodeComponentRequestPart>
+ <e2nodeComponentResponsePart>72 65 73 70 61 72 74</e2nodeComponentResponsePart>
+ </e2nodeComponentConfiguration>
+ </E2nodeComponentConfigAddition-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ </E2nodeComponentConfigAddition-List>
+ </value>
+ </E2nodeConfigurationUpdate-IEs>
+ <E2nodeConfigurationUpdate-IEs>
+ <id>33</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigUpdate-List>
+ <ProtocolIE-SingleContainer>
+ <id>34</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigUpdate-Item>
+ <e2nodeComponentInterfaceType><ng/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeNG>
+ <amf-name>nginterf</amf-name>
+ </e2nodeComponentInterfaceTypeNG>
+ </e2nodeComponentID>
+ <e2nodeComponentConfiguration>
+ <e2nodeComponentRequestPart>72 65 71 70 61 72 74</e2nodeComponentRequestPart>
+ <e2nodeComponentResponsePart>72 65 73 70 61 72 74</e2nodeComponentResponsePart>
+ </e2nodeComponentConfiguration>
+ </E2nodeComponentConfigUpdate-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>34</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigUpdate-Item>
+ <e2nodeComponentInterfaceType><xn/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeXn>
+ <global-NG-RAN-Node-ID>xninterf</global-NG-RAN-Node-ID>
+ </e2nodeComponentInterfaceTypeXn>
+ </e2nodeComponentID>
+ <e2nodeComponentConfiguration>
+ <e2nodeComponentRequestPart>72 65 71 70 61 72 74</e2nodeComponentRequestPart>
+ <e2nodeComponentResponsePart>72 65 73 70 61 72 74</e2nodeComponentResponsePart>
+ </e2nodeComponentConfiguration>
+ </E2nodeComponentConfigUpdate-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>34</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigUpdate-Item>
+ <e2nodeComponentInterfaceType><e1/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeE1>
+ <gNB-CU-CP-ID>e1interf</gNB-CU-CP-ID>
+ </e2nodeComponentInterfaceTypeE1>
+ </e2nodeComponentID>
+ <e2nodeComponentConfiguration>
+ <e2nodeComponentRequestPart>72 65 71 70 61 72 74</e2nodeComponentRequestPart>
+ <e2nodeComponentResponsePart>72 65 73 70 61 72 74</e2nodeComponentResponsePart>
+ </e2nodeComponentConfiguration>
+ </E2nodeComponentConfigUpdate-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>34</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigUpdate-Item>
+ <e2nodeComponentInterfaceType><f1/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeF1>
+ <gNB-DU-ID>f1interf</gNB-DU-ID>
+ </e2nodeComponentInterfaceTypeF1>
+ </e2nodeComponentID>
+ <e2nodeComponentConfiguration>
+ <e2nodeComponentRequestPart>72 65 71 70 61 72 74</e2nodeComponentRequestPart>
+ <e2nodeComponentResponsePart>72 65 73 70 61 72 74</e2nodeComponentResponsePart>
+ </e2nodeComponentConfiguration>
+ </E2nodeComponentConfigUpdate-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>34</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigUpdate-Item>
+ <e2nodeComponentInterfaceType><w1/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeW1>
+ <ng-eNB-DU-ID>w1interf</ng-eNB-DU-ID>
+ </e2nodeComponentInterfaceTypeW1>
+ </e2nodeComponentID>
+ <e2nodeComponentConfiguration>
+ <e2nodeComponentRequestPart>72 65 71 70 61 72 74</e2nodeComponentRequestPart>
+ <e2nodeComponentResponsePart>72 65 73 70 61 72 74</e2nodeComponentResponsePart>
+ </e2nodeComponentConfiguration>
+ </E2nodeComponentConfigUpdate-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>34</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigUpdate-Item>
+ <e2nodeComponentInterfaceType><s1/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeS1>
+ <mme-name>s1interf</mme-name>
+ </e2nodeComponentInterfaceTypeS1>
+ </e2nodeComponentID>
+ <e2nodeComponentConfiguration>
+ <e2nodeComponentRequestPart>72 65 71 70 61 72 74</e2nodeComponentRequestPart>
+ <e2nodeComponentResponsePart>72 65 73 70 61 72 74</e2nodeComponentResponsePart>
+ </e2nodeComponentConfiguration>
+ </E2nodeComponentConfigUpdate-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>34</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigUpdate-Item>
+ <e2nodeComponentInterfaceType><x2/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeX2>
+ <global-eNB-ID>x2interf</global-eNB-ID>
+ <global-en-gNB-ID>x2interf</global-en-gNB-ID>
+ </e2nodeComponentInterfaceTypeX2>
+ </e2nodeComponentID>
+ <e2nodeComponentConfiguration>
+ <e2nodeComponentRequestPart>72 65 71 70 61 72 74</e2nodeComponentRequestPart>
+ <e2nodeComponentResponsePart>72 65 73 70 61 72 74</e2nodeComponentResponsePart>
+ </e2nodeComponentConfiguration>
+ </E2nodeComponentConfigUpdate-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ </E2nodeComponentConfigUpdate-List>
+ </value>
+ </E2nodeConfigurationUpdate-IEs>
+ <E2nodeConfigurationUpdate-IEs>
+ <id>54</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigRemoval-List>
+ <ProtocolIE-SingleContainer>
+ <id>55</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigRemoval-Item>
+ <e2nodeComponentInterfaceType><ng/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeNG>
+ <amf-name>nginterf</amf-name>
+ </e2nodeComponentInterfaceTypeNG>
+ </e2nodeComponentID>
+ </E2nodeComponentConfigRemoval-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>55</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigRemoval-Item>
+ <e2nodeComponentInterfaceType><xn/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeXn>
+ <global-NG-RAN-Node-ID>xninterf</global-NG-RAN-Node-ID>
+ </e2nodeComponentInterfaceTypeXn>
+ </e2nodeComponentID>
+ </E2nodeComponentConfigRemoval-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>55</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigRemoval-Item>
+ <e2nodeComponentInterfaceType><e1/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeE1>
+ <gNB-CU-CP-ID>e1interf</gNB-CU-CP-ID>
+ </e2nodeComponentInterfaceTypeE1>
+ </e2nodeComponentID>
+ </E2nodeComponentConfigRemoval-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>55</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigRemoval-Item>
+ <e2nodeComponentInterfaceType><f1/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeF1>
+ <gNB-DU-ID>f1interf</gNB-DU-ID>
+ </e2nodeComponentInterfaceTypeF1>
+ </e2nodeComponentID>
+ </E2nodeComponentConfigRemoval-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>55</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigRemoval-Item>
+ <e2nodeComponentInterfaceType><w1/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeW1>
+ <ng-eNB-DU-ID>w1interf</ng-eNB-DU-ID>
+ </e2nodeComponentInterfaceTypeW1>
+ </e2nodeComponentID>
+ </E2nodeComponentConfigRemoval-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>55</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigRemoval-Item>
+ <e2nodeComponentInterfaceType><s1/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeS1>
+ <mme-name>s1interf</mme-name>
+ </e2nodeComponentInterfaceTypeS1>
+ </e2nodeComponentID>
+ </E2nodeComponentConfigRemoval-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ <ProtocolIE-SingleContainer>
+ <id>55</id>
+ <criticality><reject/></criticality>
+ <value>
+ <E2nodeComponentConfigRemoval-Item>
+ <e2nodeComponentInterfaceType><x2/></e2nodeComponentInterfaceType>
+ <e2nodeComponentID>
+ <e2nodeComponentInterfaceTypeX2>
+ <global-eNB-ID>x2interf</global-eNB-ID>
+ <global-en-gNB-ID>x2interf</global-en-gNB-ID>
+ </e2nodeComponentInterfaceTypeX2>
+ </e2nodeComponentID>
+ </E2nodeComponentConfigRemoval-Item>
+ </value>
+ </ProtocolIE-SingleContainer>
+ </E2nodeComponentConfigRemoval-List>
+ </value>
+ </E2nodeConfigurationUpdate-IEs>
+ </protocolIEs>
+ </E2nodeConfigurationUpdate>
+ </value>
+ </initiatingMessage>
+</E2AP-PDU>
\ No newline at end of file