MME2 changes - Propped commits from openmme/paging branch. Added scripts
for code gen
Change-Id: Ie55032217232214ac8544ca76ea34335205329e4
diff --git a/src/gtpV2Codec/msgClasses/createBearerRequestMsg.cpp b/src/gtpV2Codec/msgClasses/createBearerRequestMsg.cpp
new file mode 100644
index 0000000..3a849db
--- /dev/null
+++ b/src/gtpV2Codec/msgClasses/createBearerRequestMsg.cpp
@@ -0,0 +1,1296 @@
+/*
+ * Copyright 2019-present Infosys Limited
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/******************************************************************************
+ *
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/GtpV2StackCodeGen/tts/msgtemplate.cpp.tt>
+ ******************************************************************************/
+
+#include "createBearerRequestMsg.h"
+#include "../ieClasses/manual/gtpV2Ie.h"
+#include "../ieClasses/gtpV2IeFactory.h"
+#include "../ieClasses/ptiIe.h"
+#include "../ieClasses/ebiIe.h"
+#include "../ieClasses/pcoIe.h"
+#include "../ieClasses/bearerContextIe.h"
+#include "../ieClasses/bearerContextsInCreateBearerRequest.h"
+#include "../ieClasses/fqCsidIe.h"
+#include "../ieClasses/fqCsidIe.h"
+#include "../ieClasses/changeReportingActionIe.h"
+#include "../ieClasses/csgInformationReportingActionIe.h"
+#include "../ieClasses/henbInformationReportingIe.h"
+#include "../ieClasses/presenceReportingAreaActionIe.h"
+#include "../ieClasses/indicationIe.h"
+#include "../ieClasses/loadControlInformationIe.h"
+#include "../ieClasses/pgwsNodeLevelLoadControlInformationInCreateBearerRequest.h"
+#include "../ieClasses/loadControlInformationIe.h"
+#include "../ieClasses/pgwsApnLevelLoadControlInformationInCreateBearerRequest.h"
+#include "../ieClasses/loadControlInformationIe.h"
+#include "../ieClasses/sgwsNodeLevelLoadControlInformationInCreateBearerRequest.h"
+#include "../ieClasses/overloadControlInformationIe.h"
+#include "../ieClasses/pgwsOverloadControlInformationInCreateBearerRequest.h"
+#include "../ieClasses/overloadControlInformationIe.h"
+#include "../ieClasses/sgwsOverloadControlInformationInCreateBearerRequest.h"
+#include "../ieClasses/fContainerIe.h"
+
+CreateBearerRequestMsg::CreateBearerRequestMsg()
+{
+ msgType = CreateBearerRequestMsgType;
+ Uint16 mandIe;
+ mandIe = EbiIeType;
+ mandIe = (mandIe << 8) | 0; // linkedEpsBearerId
+ mandatoryIeSet.insert(mandIe); mandIe = BearerContextIeType;
+ mandIe = (mandIe << 8) | 0; // bearerContexts
+ mandatoryIeSet.insert(mandIe);
+}
+
+CreateBearerRequestMsg::~CreateBearerRequestMsg()
+{
+
+}
+
+bool CreateBearerRequestMsg::encodeCreateBearerRequestMsg(MsgBuffer &buffer,
+ CreateBearerRequestMsgData
+ const &data)
+{
+ bool rc = false;
+ GtpV2IeHeader header;
+ Uint16 startIndex = 0;
+ Uint16 endIndex = 0;
+ Uint16 length = 0;
+
+ if (data.procedureTransactionIdIePresent)
+ {
+
+ // Encode the Ie Header
+ header.ieType = PtiIeType;
+ header.instance = 0;
+ header.length = 0; // We will encode the IE first and then update the length
+ GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
+ startIndex = buffer.getCurrentIndex();
+ PtiIe pti=
+ dynamic_cast<
+ PtiIe&>(GtpV2IeFactory::getInstance().getIeObject(PtiIeType));
+ rc = pti.encodePtiIe(buffer, data.procedureTransactionId);
+ endIndex = buffer.getCurrentIndex();
+ length = endIndex - startIndex;
+
+ // encode the length value now
+ buffer.goToIndex(startIndex - 3);
+ buffer.writeUint16(length, false);
+ buffer.goToIndex(endIndex);
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to encode IE: procedureTransactionId\n");
+ return false;
+ }
+ }
+
+
+ // Encode the Ie Header
+ header.ieType = EbiIeType;
+ header.instance = 0;
+ header.length = 0; // We will encode the IE first and then update the length
+ GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
+ startIndex = buffer.getCurrentIndex();
+ EbiIe ebi=
+ dynamic_cast<
+ EbiIe&>(GtpV2IeFactory::getInstance().getIeObject(EbiIeType));
+ rc = ebi.encodeEbiIe(buffer, data.linkedEpsBearerId);
+ endIndex = buffer.getCurrentIndex();
+ length = endIndex - startIndex;
+
+ // encode the length value now
+ buffer.goToIndex(startIndex - 3);
+ buffer.writeUint16(length, false);
+ buffer.goToIndex(endIndex);
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to encode IE: linkedEpsBearerId\n");
+ return false;
+ }
+
+ if (data.protocolConfigurationOptionsIePresent)
+ {
+
+ // Encode the Ie Header
+ header.ieType = PcoIeType;
+ header.instance = 0;
+ header.length = 0; // We will encode the IE first and then update the length
+ GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
+ startIndex = buffer.getCurrentIndex();
+ PcoIe pco=
+ dynamic_cast<
+ PcoIe&>(GtpV2IeFactory::getInstance().getIeObject(PcoIeType));
+ rc = pco.encodePcoIe(buffer, data.protocolConfigurationOptions);
+ endIndex = buffer.getCurrentIndex();
+ length = endIndex - startIndex;
+
+ // encode the length value now
+ buffer.goToIndex(startIndex - 3);
+ buffer.writeUint16(length, false);
+ buffer.goToIndex(endIndex);
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to encode IE: protocolConfigurationOptions\n");
+ return false;
+ }
+ }
+
+ // First validate if the applicatoin provided more than the expected cardinality
+ if (data.bearerContextsCount > 11)
+ {
+ errorStream.add((char *)"Number of entries of bearerContexts exceeded\n");
+ errorStream.add((char *)"Expected count: 11 Received count: ");
+ errorStream.add((char *)"data.bearerContextsCount");
+ errorStream.endOfLine();
+ return false;
+ }
+ for (Uint8 i = 0; i < data.bearerContextsCount; i++)
+ {
+ // Encode the Ie Header
+ header.ieType = BearerContextIeType;
+ header.instance = 0;
+ header.length = 0; // We will encode the IE first and then update the length
+ GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
+ startIndex = buffer.getCurrentIndex();
+ BearerContextIe bearerContext=
+ dynamic_cast<
+ BearerContextIe&>(GtpV2IeFactory::getInstance().
+ getIeObject(BearerContextIeType));
+ BearerContextsInCreateBearerRequest groupedIeInstance = dynamic_cast<BearerContextsInCreateBearerRequest&>(bearerContext.getGroupedIe(msgType, 0));
+ rc = groupedIeInstance.encodeBearerContextsInCreateBearerRequest(buffer, data.bearerContexts[i]);
+ endIndex = buffer.getCurrentIndex();
+ length = endIndex - startIndex;
+
+ // encode the length value now
+ buffer.goToIndex(startIndex - 3);
+ buffer.writeUint16(length, false);
+ buffer.goToIndex(endIndex);
+ }
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to encode IE: bearerContexts\n");
+ return false;
+ }
+
+ if (data.pgwFqCsidIePresent)
+ {
+
+ // Encode the Ie Header
+ header.ieType = FqCsidIeType;
+ header.instance = 0;
+ header.length = 0; // We will encode the IE first and then update the length
+ GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
+ startIndex = buffer.getCurrentIndex();
+ FqCsidIe fqCsid=
+ dynamic_cast<
+ FqCsidIe&>(GtpV2IeFactory::getInstance().getIeObject(FqCsidIeType));
+ rc = fqCsid.encodeFqCsidIe(buffer, data.pgwFqCsid);
+ endIndex = buffer.getCurrentIndex();
+ length = endIndex - startIndex;
+
+ // encode the length value now
+ buffer.goToIndex(startIndex - 3);
+ buffer.writeUint16(length, false);
+ buffer.goToIndex(endIndex);
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to encode IE: pgwFqCsid\n");
+ return false;
+ }
+ }
+
+ if (data.sgwFqCsidIePresent)
+ {
+
+ // Encode the Ie Header
+ header.ieType = FqCsidIeType;
+ header.instance = 1;
+ header.length = 0; // We will encode the IE first and then update the length
+ GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
+ startIndex = buffer.getCurrentIndex();
+ FqCsidIe fqCsid=
+ dynamic_cast<
+ FqCsidIe&>(GtpV2IeFactory::getInstance().getIeObject(FqCsidIeType));
+ rc = fqCsid.encodeFqCsidIe(buffer, data.sgwFqCsid);
+ endIndex = buffer.getCurrentIndex();
+ length = endIndex - startIndex;
+
+ // encode the length value now
+ buffer.goToIndex(startIndex - 3);
+ buffer.writeUint16(length, false);
+ buffer.goToIndex(endIndex);
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to encode IE: sgwFqCsid\n");
+ return false;
+ }
+ }
+
+ if (data.changeReportingActionIePresent)
+ {
+
+ // Encode the Ie Header
+ header.ieType = ChangeReportingActionIeType;
+ header.instance = 0;
+ header.length = 0; // We will encode the IE first and then update the length
+ GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
+ startIndex = buffer.getCurrentIndex();
+ ChangeReportingActionIe changeReportingAction=
+ dynamic_cast<
+ ChangeReportingActionIe&>(GtpV2IeFactory::getInstance().getIeObject(ChangeReportingActionIeType));
+ rc = changeReportingAction.encodeChangeReportingActionIe(buffer, data.changeReportingAction);
+ endIndex = buffer.getCurrentIndex();
+ length = endIndex - startIndex;
+
+ // encode the length value now
+ buffer.goToIndex(startIndex - 3);
+ buffer.writeUint16(length, false);
+ buffer.goToIndex(endIndex);
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to encode IE: changeReportingAction\n");
+ return false;
+ }
+ }
+
+ if (data.csgInformationReportingActionIePresent)
+ {
+
+ // Encode the Ie Header
+ header.ieType = CsgInformationReportingActionIeType;
+ header.instance = 0;
+ header.length = 0; // We will encode the IE first and then update the length
+ GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
+ startIndex = buffer.getCurrentIndex();
+ CsgInformationReportingActionIe csgInformationReportingAction=
+ dynamic_cast<
+ CsgInformationReportingActionIe&>(GtpV2IeFactory::getInstance().getIeObject(CsgInformationReportingActionIeType));
+ rc = csgInformationReportingAction.encodeCsgInformationReportingActionIe(buffer, data.csgInformationReportingAction);
+ endIndex = buffer.getCurrentIndex();
+ length = endIndex - startIndex;
+
+ // encode the length value now
+ buffer.goToIndex(startIndex - 3);
+ buffer.writeUint16(length, false);
+ buffer.goToIndex(endIndex);
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to encode IE: csgInformationReportingAction\n");
+ return false;
+ }
+ }
+
+ if (data.hNbInformationReportingIePresent)
+ {
+
+ // Encode the Ie Header
+ header.ieType = HenbInformationReportingIeType;
+ header.instance = 0;
+ header.length = 0; // We will encode the IE first and then update the length
+ GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
+ startIndex = buffer.getCurrentIndex();
+ HenbInformationReportingIe henbInformationReporting=
+ dynamic_cast<
+ HenbInformationReportingIe&>(GtpV2IeFactory::getInstance().getIeObject(HenbInformationReportingIeType));
+ rc = henbInformationReporting.encodeHenbInformationReportingIe(buffer, data.hNbInformationReporting);
+ endIndex = buffer.getCurrentIndex();
+ length = endIndex - startIndex;
+
+ // encode the length value now
+ buffer.goToIndex(startIndex - 3);
+ buffer.writeUint16(length, false);
+ buffer.goToIndex(endIndex);
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to encode IE: hNbInformationReporting\n");
+ return false;
+ }
+ }
+
+ if (data.presenceReportingAreaActionIePresent)
+ {
+
+ // Encode the Ie Header
+ header.ieType = PresenceReportingAreaActionIeType;
+ header.instance = 0;
+ header.length = 0; // We will encode the IE first and then update the length
+ GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
+ startIndex = buffer.getCurrentIndex();
+ PresenceReportingAreaActionIe presenceReportingAreaAction=
+ dynamic_cast<
+ PresenceReportingAreaActionIe&>(GtpV2IeFactory::getInstance().getIeObject(PresenceReportingAreaActionIeType));
+ rc = presenceReportingAreaAction.encodePresenceReportingAreaActionIe(buffer, data.presenceReportingAreaAction);
+ endIndex = buffer.getCurrentIndex();
+ length = endIndex - startIndex;
+
+ // encode the length value now
+ buffer.goToIndex(startIndex - 3);
+ buffer.writeUint16(length, false);
+ buffer.goToIndex(endIndex);
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to encode IE: presenceReportingAreaAction\n");
+ return false;
+ }
+ }
+
+ if (data.indicationFlagsIePresent)
+ {
+
+ // Encode the Ie Header
+ header.ieType = IndicationIeType;
+ header.instance = 0;
+ header.length = 0; // We will encode the IE first and then update the length
+ GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
+ startIndex = buffer.getCurrentIndex();
+ IndicationIe indication=
+ dynamic_cast<
+ IndicationIe&>(GtpV2IeFactory::getInstance().getIeObject(IndicationIeType));
+ rc = indication.encodeIndicationIe(buffer, data.indicationFlags);
+ endIndex = buffer.getCurrentIndex();
+ length = endIndex - startIndex;
+
+ // encode the length value now
+ buffer.goToIndex(startIndex - 3);
+ buffer.writeUint16(length, false);
+ buffer.goToIndex(endIndex);
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to encode IE: indicationFlags\n");
+ return false;
+ }
+ }
+
+ if (data.pgwsNodeLevelLoadControlInformationIePresent)
+ {
+
+ // Encode the Ie Header
+ header.ieType = LoadControlInformationIeType;
+ header.instance = 0;
+ header.length = 0; // We will encode the IE first and then update the length
+ GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
+ startIndex = buffer.getCurrentIndex();
+ LoadControlInformationIe loadControlInformation=
+ dynamic_cast<
+ LoadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(LoadControlInformationIeType));
+ PgwsNodeLevelLoadControlInformationInCreateBearerRequest groupedIeInstance =
+ dynamic_cast<
+ PgwsNodeLevelLoadControlInformationInCreateBearerRequest&>(loadControlInformation.getGroupedIe(msgType, 0));
+ rc = groupedIeInstance.encodePgwsNodeLevelLoadControlInformationInCreateBearerRequest(buffer, data.pgwsNodeLevelLoadControlInformation);
+ endIndex = buffer.getCurrentIndex();
+ length = endIndex - startIndex;
+
+ // encode the length value now
+ buffer.goToIndex(startIndex - 3);
+ buffer.writeUint16(length, false);
+ buffer.goToIndex(endIndex);
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to encode IE: pgwsNodeLevelLoadControlInformation\n");
+ return false;
+ }
+ }
+
+ if (data.pgwsApnLevelLoadControlInformationIePresent)
+ {
+
+ // Encode the Ie Header
+ header.ieType = LoadControlInformationIeType;
+ header.instance = 1;
+ header.length = 0; // We will encode the IE first and then update the length
+ GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
+ startIndex = buffer.getCurrentIndex();
+ LoadControlInformationIe loadControlInformation=
+ dynamic_cast<
+ LoadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(LoadControlInformationIeType));
+ PgwsApnLevelLoadControlInformationInCreateBearerRequest groupedIeInstance =
+ dynamic_cast<
+ PgwsApnLevelLoadControlInformationInCreateBearerRequest&>(loadControlInformation.getGroupedIe(msgType, 1));
+ rc = groupedIeInstance.encodePgwsApnLevelLoadControlInformationInCreateBearerRequest(buffer, data.pgwsApnLevelLoadControlInformation);
+ endIndex = buffer.getCurrentIndex();
+ length = endIndex - startIndex;
+
+ // encode the length value now
+ buffer.goToIndex(startIndex - 3);
+ buffer.writeUint16(length, false);
+ buffer.goToIndex(endIndex);
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to encode IE: pgwsApnLevelLoadControlInformation\n");
+ return false;
+ }
+ }
+
+ if (data.sgwsNodeLevelLoadControlInformationIePresent)
+ {
+
+ // Encode the Ie Header
+ header.ieType = LoadControlInformationIeType;
+ header.instance = 2;
+ header.length = 0; // We will encode the IE first and then update the length
+ GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
+ startIndex = buffer.getCurrentIndex();
+ LoadControlInformationIe loadControlInformation=
+ dynamic_cast<
+ LoadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(LoadControlInformationIeType));
+ SgwsNodeLevelLoadControlInformationInCreateBearerRequest groupedIeInstance =
+ dynamic_cast<
+ SgwsNodeLevelLoadControlInformationInCreateBearerRequest&>(loadControlInformation.getGroupedIe(msgType, 2));
+ rc = groupedIeInstance.encodeSgwsNodeLevelLoadControlInformationInCreateBearerRequest(buffer, data.sgwsNodeLevelLoadControlInformation);
+ endIndex = buffer.getCurrentIndex();
+ length = endIndex - startIndex;
+
+ // encode the length value now
+ buffer.goToIndex(startIndex - 3);
+ buffer.writeUint16(length, false);
+ buffer.goToIndex(endIndex);
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to encode IE: sgwsNodeLevelLoadControlInformation\n");
+ return false;
+ }
+ }
+
+ if (data.pgwsOverloadControlInformationIePresent)
+ {
+
+ // Encode the Ie Header
+ header.ieType = OverloadControlInformationIeType;
+ header.instance = 0;
+ header.length = 0; // We will encode the IE first and then update the length
+ GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
+ startIndex = buffer.getCurrentIndex();
+ OverloadControlInformationIe overloadControlInformation=
+ dynamic_cast<
+ OverloadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(OverloadControlInformationIeType));
+ PgwsOverloadControlInformationInCreateBearerRequest groupedIeInstance =
+ dynamic_cast<
+ PgwsOverloadControlInformationInCreateBearerRequest&>(overloadControlInformation.getGroupedIe(msgType, 0));
+ rc = groupedIeInstance.encodePgwsOverloadControlInformationInCreateBearerRequest(buffer, data.pgwsOverloadControlInformation);
+ endIndex = buffer.getCurrentIndex();
+ length = endIndex - startIndex;
+
+ // encode the length value now
+ buffer.goToIndex(startIndex - 3);
+ buffer.writeUint16(length, false);
+ buffer.goToIndex(endIndex);
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to encode IE: pgwsOverloadControlInformation\n");
+ return false;
+ }
+ }
+
+ if (data.sgwsOverloadControlInformationIePresent)
+ {
+
+ // Encode the Ie Header
+ header.ieType = OverloadControlInformationIeType;
+ header.instance = 1;
+ header.length = 0; // We will encode the IE first and then update the length
+ GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
+ startIndex = buffer.getCurrentIndex();
+ OverloadControlInformationIe overloadControlInformation=
+ dynamic_cast<
+ OverloadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(OverloadControlInformationIeType));
+ SgwsOverloadControlInformationInCreateBearerRequest groupedIeInstance =
+ dynamic_cast<
+ SgwsOverloadControlInformationInCreateBearerRequest&>(overloadControlInformation.getGroupedIe(msgType, 1));
+ rc = groupedIeInstance.encodeSgwsOverloadControlInformationInCreateBearerRequest(buffer, data.sgwsOverloadControlInformation);
+ endIndex = buffer.getCurrentIndex();
+ length = endIndex - startIndex;
+
+ // encode the length value now
+ buffer.goToIndex(startIndex - 3);
+ buffer.writeUint16(length, false);
+ buffer.goToIndex(endIndex);
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to encode IE: sgwsOverloadControlInformation\n");
+ return false;
+ }
+ }
+
+ if (data.nbifomContainerIePresent)
+ {
+
+ // Encode the Ie Header
+ header.ieType = FContainerIeType;
+ header.instance = 0;
+ header.length = 0; // We will encode the IE first and then update the length
+ GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
+ startIndex = buffer.getCurrentIndex();
+ FContainerIe fContainer=
+ dynamic_cast<
+ FContainerIe&>(GtpV2IeFactory::getInstance().getIeObject(FContainerIeType));
+ rc = fContainer.encodeFContainerIe(buffer, data.nbifomContainer);
+ endIndex = buffer.getCurrentIndex();
+ length = endIndex - startIndex;
+
+ // encode the length value now
+ buffer.goToIndex(startIndex - 3);
+ buffer.writeUint16(length, false);
+ buffer.goToIndex(endIndex);
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to encode IE: nbifomContainer\n");
+ return false;
+ }
+ }
+ return rc;
+
+}
+
+bool CreateBearerRequestMsg::decodeCreateBearerRequestMsg(MsgBuffer &buffer,
+ CreateBearerRequestMsgData
+ &data, Uint16 length)
+{
+
+ bool rc = false;
+ GtpV2IeHeader ieHeader;
+
+ set<Uint16> mandatoryIeLocalList = mandatoryIeSet;
+ while (buffer.lengthLeft() > IE_HEADER_SIZE)
+ {
+ GtpV2Ie::decodeGtpV2IeHeader(buffer, ieHeader);
+ if (ieHeader.length > buffer.lengthLeft())
+ {
+ // We do not have enough bytes left in the message for this IE
+ errorStream.add((char *)"IE Length exceeds beyond message boundary\n");
+ errorStream.add((char *)" Offending IE Type: ");
+ errorStream.add(ieHeader.ieType);
+ errorStream.add((char *)"\n Ie Length in Header: ");
+ errorStream.add(ieHeader.length);
+ errorStream.add((char *)"\n Bytes left in message: ");
+ errorStream.add(buffer.lengthLeft());
+ errorStream.endOfLine();
+ return false;
+ }
+
+ switch (ieHeader.ieType){
+
+ case PtiIeType:
+ {
+ PtiIe ieObject =
+ dynamic_cast<
+ PtiIe&>(GtpV2IeFactory::getInstance().getIeObject(PtiIeType));
+
+ if(ieHeader.instance == 0)
+ {
+ rc = ieObject.decodePtiIe(buffer, data.procedureTransactionId, ieHeader.length);
+
+ data.procedureTransactionIdIePresent = true;
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to decode IE: procedureTransactionId\n");
+ return false;
+ }
+ }
+
+ else
+ {
+ // Unknown IE instance print error
+ errorStream.add((char *)"Unknown IE Type: ");
+ errorStream.add(ieHeader.ieType);
+ errorStream.endOfLine();
+ buffer.skipBytes(ieHeader.length);
+ }
+ break;
+ }
+
+ case EbiIeType:
+ {
+ EbiIe ieObject =
+ dynamic_cast<
+ EbiIe&>(GtpV2IeFactory::getInstance().getIeObject(EbiIeType));
+
+ if(ieHeader.instance == 0)
+ {
+ rc = ieObject.decodeEbiIe(buffer, data.linkedEpsBearerId, ieHeader.length);
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to decode IE: linkedEpsBearerId\n");
+ return false;
+ }
+ }
+
+ else
+ {
+ // Unknown IE instance print error
+ errorStream.add((char *)"Unknown IE Type: ");
+ errorStream.add(ieHeader.ieType);
+ errorStream.endOfLine();
+ buffer.skipBytes(ieHeader.length);
+ }
+ break;
+ }
+
+ case PcoIeType:
+ {
+ PcoIe ieObject =
+ dynamic_cast<
+ PcoIe&>(GtpV2IeFactory::getInstance().getIeObject(PcoIeType));
+
+ if(ieHeader.instance == 0)
+ {
+ rc = ieObject.decodePcoIe(buffer, data.protocolConfigurationOptions, ieHeader.length);
+
+ data.protocolConfigurationOptionsIePresent = true;
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to decode IE: protocolConfigurationOptions\n");
+ return false;
+ }
+ }
+
+ else
+ {
+ // Unknown IE instance print error
+ errorStream.add((char *)"Unknown IE Type: ");
+ errorStream.add(ieHeader.ieType);
+ errorStream.endOfLine();
+ buffer.skipBytes(ieHeader.length);
+ }
+ break;
+ }
+
+ case BearerContextIeType:
+ {
+ BearerContextIe ieObject =
+ dynamic_cast<
+ BearerContextIe&>(GtpV2IeFactory::getInstance().getIeObject(BearerContextIeType));
+
+ if(ieHeader.instance == 0)
+ {
+ // First check if we have enough space left to decode and store this instance
+ if (data.bearerContextsCount == 11)
+ {
+ errorStream.add((char *)"More than 11 instances of bearerContexts received\n");
+ return false;
+ }
+ BearerContextsInCreateBearerRequest groupedIeInstance =
+ dynamic_cast<
+ BearerContextsInCreateBearerRequest&>(ieObject.getGroupedIe(msgType, 0));
+ rc = groupedIeInstance.decodeBearerContextsInCreateBearerRequest(buffer,
+ data.bearerContexts[data.bearerContextsCount], ieHeader.length);
+ data.bearerContextsCount++; // TODO Count validation
+
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to decode IE: bearerContexts\n");
+ return false;
+ }
+ }
+
+ else
+ {
+ // Unknown IE instance print error
+ errorStream.add((char *)"Unknown IE Type: ");
+ errorStream.add(ieHeader.ieType);
+ errorStream.endOfLine();
+ buffer.skipBytes(ieHeader.length);
+ }
+ break;
+ }
+
+ case FqCsidIeType:
+ {
+ FqCsidIe ieObject =
+ dynamic_cast<
+ FqCsidIe&>(GtpV2IeFactory::getInstance().getIeObject(FqCsidIeType));
+
+ if(ieHeader.instance == 0)
+ {
+ rc = ieObject.decodeFqCsidIe(buffer, data.pgwFqCsid, ieHeader.length);
+
+ data.pgwFqCsidIePresent = true;
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to decode IE: pgwFqCsid\n");
+ return false;
+ }
+ }
+ else if(ieHeader.instance == 1)
+ {
+ rc = ieObject.decodeFqCsidIe(buffer, data.sgwFqCsid, ieHeader.length);
+
+ data.sgwFqCsidIePresent = true;
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to decode IE: sgwFqCsid\n");
+ return false;
+ }
+ }
+
+ else
+ {
+ // Unknown IE instance print error
+ errorStream.add((char *)"Unknown IE Type: ");
+ errorStream.add(ieHeader.ieType);
+ errorStream.endOfLine();
+ buffer.skipBytes(ieHeader.length);
+ }
+ break;
+ }
+
+ case ChangeReportingActionIeType:
+ {
+ ChangeReportingActionIe ieObject =
+ dynamic_cast<
+ ChangeReportingActionIe&>(GtpV2IeFactory::getInstance().getIeObject(ChangeReportingActionIeType));
+
+ if(ieHeader.instance == 0)
+ {
+ rc = ieObject.decodeChangeReportingActionIe(buffer, data.changeReportingAction, ieHeader.length);
+
+ data.changeReportingActionIePresent = true;
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to decode IE: changeReportingAction\n");
+ return false;
+ }
+ }
+
+ else
+ {
+ // Unknown IE instance print error
+ errorStream.add((char *)"Unknown IE Type: ");
+ errorStream.add(ieHeader.ieType);
+ errorStream.endOfLine();
+ buffer.skipBytes(ieHeader.length);
+ }
+ break;
+ }
+
+ case CsgInformationReportingActionIeType:
+ {
+ CsgInformationReportingActionIe ieObject =
+ dynamic_cast<
+ CsgInformationReportingActionIe&>(GtpV2IeFactory::getInstance().getIeObject(CsgInformationReportingActionIeType));
+
+ if(ieHeader.instance == 0)
+ {
+ rc = ieObject.decodeCsgInformationReportingActionIe(buffer, data.csgInformationReportingAction, ieHeader.length);
+
+ data.csgInformationReportingActionIePresent = true;
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to decode IE: csgInformationReportingAction\n");
+ return false;
+ }
+ }
+
+ else
+ {
+ // Unknown IE instance print error
+ errorStream.add((char *)"Unknown IE Type: ");
+ errorStream.add(ieHeader.ieType);
+ errorStream.endOfLine();
+ buffer.skipBytes(ieHeader.length);
+ }
+ break;
+ }
+
+ case HenbInformationReportingIeType:
+ {
+ HenbInformationReportingIe ieObject =
+ dynamic_cast<
+ HenbInformationReportingIe&>(GtpV2IeFactory::getInstance().getIeObject(HenbInformationReportingIeType));
+
+ if(ieHeader.instance == 0)
+ {
+ rc = ieObject.decodeHenbInformationReportingIe(buffer, data.hNbInformationReporting, ieHeader.length);
+
+ data.hNbInformationReportingIePresent = true;
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to decode IE: hNbInformationReporting\n");
+ return false;
+ }
+ }
+
+ else
+ {
+ // Unknown IE instance print error
+ errorStream.add((char *)"Unknown IE Type: ");
+ errorStream.add(ieHeader.ieType);
+ errorStream.endOfLine();
+ buffer.skipBytes(ieHeader.length);
+ }
+ break;
+ }
+
+ case PresenceReportingAreaActionIeType:
+ {
+ PresenceReportingAreaActionIe ieObject =
+ dynamic_cast<
+ PresenceReportingAreaActionIe&>(GtpV2IeFactory::getInstance().getIeObject(PresenceReportingAreaActionIeType));
+
+ if(ieHeader.instance == 0)
+ {
+ rc = ieObject.decodePresenceReportingAreaActionIe(buffer, data.presenceReportingAreaAction, ieHeader.length);
+
+ data.presenceReportingAreaActionIePresent = true;
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to decode IE: presenceReportingAreaAction\n");
+ return false;
+ }
+ }
+
+ else
+ {
+ // Unknown IE instance print error
+ errorStream.add((char *)"Unknown IE Type: ");
+ errorStream.add(ieHeader.ieType);
+ errorStream.endOfLine();
+ buffer.skipBytes(ieHeader.length);
+ }
+ break;
+ }
+
+ case IndicationIeType:
+ {
+ IndicationIe ieObject =
+ dynamic_cast<
+ IndicationIe&>(GtpV2IeFactory::getInstance().getIeObject(IndicationIeType));
+
+ if(ieHeader.instance == 0)
+ {
+ rc = ieObject.decodeIndicationIe(buffer, data.indicationFlags, ieHeader.length);
+
+ data.indicationFlagsIePresent = true;
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to decode IE: indicationFlags\n");
+ return false;
+ }
+ }
+
+ else
+ {
+ // Unknown IE instance print error
+ errorStream.add((char *)"Unknown IE Type: ");
+ errorStream.add(ieHeader.ieType);
+ errorStream.endOfLine();
+ buffer.skipBytes(ieHeader.length);
+ }
+ break;
+ }
+
+ case LoadControlInformationIeType:
+ {
+ LoadControlInformationIe ieObject =
+ dynamic_cast<
+ LoadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(LoadControlInformationIeType));
+
+ if(ieHeader.instance == 0)
+ {
+ PgwsNodeLevelLoadControlInformationInCreateBearerRequest groupedIeInstance =
+ dynamic_cast<
+ PgwsNodeLevelLoadControlInformationInCreateBearerRequest&>(ieObject.getGroupedIe(msgType, 0));
+ rc = groupedIeInstance.decodePgwsNodeLevelLoadControlInformationInCreateBearerRequest(buffer, data.pgwsNodeLevelLoadControlInformation, ieHeader.length);
+
+ data.pgwsNodeLevelLoadControlInformationIePresent = true;
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to decode IE: pgwsNodeLevelLoadControlInformation\n");
+ return false;
+ }
+ }
+ else if(ieHeader.instance == 1)
+ {
+ PgwsApnLevelLoadControlInformationInCreateBearerRequest groupedIeInstance =
+ dynamic_cast<
+ PgwsApnLevelLoadControlInformationInCreateBearerRequest&>(ieObject.getGroupedIe(msgType, 1));
+ rc = groupedIeInstance.decodePgwsApnLevelLoadControlInformationInCreateBearerRequest(buffer, data.pgwsApnLevelLoadControlInformation, ieHeader.length);
+
+ data.pgwsApnLevelLoadControlInformationIePresent = true;
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to decode IE: pgwsApnLevelLoadControlInformation\n");
+ return false;
+ }
+ }
+ else if(ieHeader.instance == 2)
+ {
+ SgwsNodeLevelLoadControlInformationInCreateBearerRequest groupedIeInstance =
+ dynamic_cast<
+ SgwsNodeLevelLoadControlInformationInCreateBearerRequest&>(ieObject.getGroupedIe(msgType, 2));
+ rc = groupedIeInstance.decodeSgwsNodeLevelLoadControlInformationInCreateBearerRequest(buffer, data.sgwsNodeLevelLoadControlInformation, ieHeader.length);
+
+ data.sgwsNodeLevelLoadControlInformationIePresent = true;
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to decode IE: sgwsNodeLevelLoadControlInformation\n");
+ return false;
+ }
+ }
+
+ else
+ {
+ // Unknown IE instance print error
+ errorStream.add((char *)"Unknown IE Type: ");
+ errorStream.add(ieHeader.ieType);
+ errorStream.endOfLine();
+ buffer.skipBytes(ieHeader.length);
+ }
+ break;
+ }
+
+ case OverloadControlInformationIeType:
+ {
+ OverloadControlInformationIe ieObject =
+ dynamic_cast<
+ OverloadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(OverloadControlInformationIeType));
+
+ if(ieHeader.instance == 0)
+ {
+ PgwsOverloadControlInformationInCreateBearerRequest groupedIeInstance =
+ dynamic_cast<
+ PgwsOverloadControlInformationInCreateBearerRequest&>(ieObject.getGroupedIe(msgType, 0));
+ rc = groupedIeInstance.decodePgwsOverloadControlInformationInCreateBearerRequest(buffer, data.pgwsOverloadControlInformation, ieHeader.length);
+
+ data.pgwsOverloadControlInformationIePresent = true;
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to decode IE: pgwsOverloadControlInformation\n");
+ return false;
+ }
+ }
+ else if(ieHeader.instance == 1)
+ {
+ SgwsOverloadControlInformationInCreateBearerRequest groupedIeInstance =
+ dynamic_cast<
+ SgwsOverloadControlInformationInCreateBearerRequest&>(ieObject.getGroupedIe(msgType, 1));
+ rc = groupedIeInstance.decodeSgwsOverloadControlInformationInCreateBearerRequest(buffer, data.sgwsOverloadControlInformation, ieHeader.length);
+
+ data.sgwsOverloadControlInformationIePresent = true;
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to decode IE: sgwsOverloadControlInformation\n");
+ return false;
+ }
+ }
+
+ else
+ {
+ // Unknown IE instance print error
+ errorStream.add((char *)"Unknown IE Type: ");
+ errorStream.add(ieHeader.ieType);
+ errorStream.endOfLine();
+ buffer.skipBytes(ieHeader.length);
+ }
+ break;
+ }
+
+ case FContainerIeType:
+ {
+ FContainerIe ieObject =
+ dynamic_cast<
+ FContainerIe&>(GtpV2IeFactory::getInstance().getIeObject(FContainerIeType));
+
+ if(ieHeader.instance == 0)
+ {
+ rc = ieObject.decodeFContainerIe(buffer, data.nbifomContainer, ieHeader.length);
+
+ data.nbifomContainerIePresent = true;
+ if (!(rc))
+ {
+ errorStream.add((char *)"Failed to decode IE: nbifomContainer\n");
+ return false;
+ }
+ }
+
+ else
+ {
+ // Unknown IE instance print error
+ errorStream.add((char *)"Unknown IE Type: ");
+ errorStream.add(ieHeader.ieType);
+ errorStream.endOfLine();
+ buffer.skipBytes(ieHeader.length);
+ }
+ break;
+ }
+
+ default:
+ {
+ // Unknown IE print error
+ errorStream.add((char *)"Unknown IE Type: ");
+ errorStream.add(ieHeader.ieType);
+ errorStream.endOfLine();
+ buffer.skipBytes(ieHeader.length);
+ }
+ }
+ }
+ return rc; // TODO validations
+}
+
+void CreateBearerRequestMsg::
+displayCreateBearerRequestMsgData_v(CreateBearerRequestMsgData const &data, Debug &stream)
+{
+ stream.incrIndent();
+ stream.add((char *)"CreateBearerRequestMsg:");
+ stream.endOfLine();
+ stream.incrIndent();
+
+
+ if (data.procedureTransactionIdIePresent)
+ {
+
+
+ stream.add((char *)"IE - procedureTransactionId:");
+ stream.endOfLine();
+ PtiIe pti=
+ dynamic_cast<
+ PtiIe&>(GtpV2IeFactory::getInstance().getIeObject(PtiIeType));
+ pti.displayPtiIe_v(data.procedureTransactionId, stream);
+
+ }
+ stream.add((char *)"IE - linkedEpsBearerId:");
+ stream.endOfLine();
+ EbiIe ebi=
+ dynamic_cast<
+ EbiIe&>(GtpV2IeFactory::getInstance().getIeObject(EbiIeType));
+ ebi.displayEbiIe_v(data.linkedEpsBearerId, stream);
+
+ if (data.protocolConfigurationOptionsIePresent)
+ {
+
+
+ stream.add((char *)"IE - protocolConfigurationOptions:");
+ stream.endOfLine();
+ PcoIe pco=
+ dynamic_cast<
+ PcoIe&>(GtpV2IeFactory::getInstance().getIeObject(PcoIeType));
+ pco.displayPcoIe_v(data.protocolConfigurationOptions, stream);
+
+ }
+
+ Uint8 displayCount;
+
+ displayCount = data.bearerContextsCount;
+ if (displayCount > 11)
+ {
+ stream.add((char *)"Invalid data more than 11 instances");
+ stream.endOfLine();
+ stream.add((char *)"Displaying only 11");
+ stream.endOfLine();
+ displayCount = 11;
+ }
+ for (Uint8 i = 0; i < displayCount; i++)
+ {
+ stream.add((char *)"IE - bearerContexts:");
+ stream.endOfLine();
+ BearerContextIe bearerContext=
+ dynamic_cast<
+ BearerContextIe&>(GtpV2IeFactory::getInstance().getIeObject(BearerContextIeType));
+ BearerContextsInCreateBearerRequest groupedIeInstance =
+ dynamic_cast<
+ BearerContextsInCreateBearerRequest&>(bearerContext.getGroupedIe(msgType, 0));
+ groupedIeInstance.displayBearerContextsInCreateBearerRequestData_v(data.bearerContexts[i], stream);
+
+ }
+ if (data.pgwFqCsidIePresent)
+ {
+
+
+ stream.add((char *)"IE - pgwFqCsid:");
+ stream.endOfLine();
+ FqCsidIe fqCsid=
+ dynamic_cast<
+ FqCsidIe&>(GtpV2IeFactory::getInstance().getIeObject(FqCsidIeType));
+ fqCsid.displayFqCsidIe_v(data.pgwFqCsid, stream);
+
+ }
+ if (data.sgwFqCsidIePresent)
+ {
+
+
+ stream.add((char *)"IE - sgwFqCsid:");
+ stream.endOfLine();
+ FqCsidIe fqCsid=
+ dynamic_cast<
+ FqCsidIe&>(GtpV2IeFactory::getInstance().getIeObject(FqCsidIeType));
+ fqCsid.displayFqCsidIe_v(data.sgwFqCsid, stream);
+
+ }
+ if (data.changeReportingActionIePresent)
+ {
+
+
+ stream.add((char *)"IE - changeReportingAction:");
+ stream.endOfLine();
+ ChangeReportingActionIe changeReportingAction=
+ dynamic_cast<
+ ChangeReportingActionIe&>(GtpV2IeFactory::getInstance().getIeObject(ChangeReportingActionIeType));
+ changeReportingAction.displayChangeReportingActionIe_v(data.changeReportingAction, stream);
+
+ }
+ if (data.csgInformationReportingActionIePresent)
+ {
+
+
+ stream.add((char *)"IE - csgInformationReportingAction:");
+ stream.endOfLine();
+ CsgInformationReportingActionIe csgInformationReportingAction=
+ dynamic_cast<
+ CsgInformationReportingActionIe&>(GtpV2IeFactory::getInstance().getIeObject(CsgInformationReportingActionIeType));
+ csgInformationReportingAction.displayCsgInformationReportingActionIe_v(data.csgInformationReportingAction, stream);
+
+ }
+ if (data.hNbInformationReportingIePresent)
+ {
+
+
+ stream.add((char *)"IE - hNbInformationReporting:");
+ stream.endOfLine();
+ HenbInformationReportingIe henbInformationReporting=
+ dynamic_cast<
+ HenbInformationReportingIe&>(GtpV2IeFactory::getInstance().getIeObject(HenbInformationReportingIeType));
+ henbInformationReporting.displayHenbInformationReportingIe_v(data.hNbInformationReporting, stream);
+
+ }
+ if (data.presenceReportingAreaActionIePresent)
+ {
+
+
+ stream.add((char *)"IE - presenceReportingAreaAction:");
+ stream.endOfLine();
+ PresenceReportingAreaActionIe presenceReportingAreaAction=
+ dynamic_cast<
+ PresenceReportingAreaActionIe&>(GtpV2IeFactory::getInstance().getIeObject(PresenceReportingAreaActionIeType));
+ presenceReportingAreaAction.displayPresenceReportingAreaActionIe_v(data.presenceReportingAreaAction, stream);
+
+ }
+ if (data.indicationFlagsIePresent)
+ {
+
+
+ stream.add((char *)"IE - indicationFlags:");
+ stream.endOfLine();
+ IndicationIe indication=
+ dynamic_cast<
+ IndicationIe&>(GtpV2IeFactory::getInstance().getIeObject(IndicationIeType));
+ indication.displayIndicationIe_v(data.indicationFlags, stream);
+
+ }
+ if (data.pgwsNodeLevelLoadControlInformationIePresent)
+ {
+
+
+ stream.add((char *)"IE - pgwsNodeLevelLoadControlInformation:");
+ stream.endOfLine();
+ LoadControlInformationIe loadControlInformation=
+ dynamic_cast<
+ LoadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(LoadControlInformationIeType));
+ PgwsNodeLevelLoadControlInformationInCreateBearerRequest groupedIeInstance =
+ dynamic_cast<
+ PgwsNodeLevelLoadControlInformationInCreateBearerRequest&>(loadControlInformation.getGroupedIe(msgType, 0));
+ groupedIeInstance.displayPgwsNodeLevelLoadControlInformationInCreateBearerRequestData_v(data.pgwsNodeLevelLoadControlInformation, stream);
+
+ }
+ if (data.pgwsApnLevelLoadControlInformationIePresent)
+ {
+
+
+ stream.add((char *)"IE - pgwsApnLevelLoadControlInformation:");
+ stream.endOfLine();
+ LoadControlInformationIe loadControlInformation=
+ dynamic_cast<
+ LoadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(LoadControlInformationIeType));
+ PgwsApnLevelLoadControlInformationInCreateBearerRequest groupedIeInstance =
+ dynamic_cast<
+ PgwsApnLevelLoadControlInformationInCreateBearerRequest&>(loadControlInformation.getGroupedIe(msgType, 1));
+ groupedIeInstance.displayPgwsApnLevelLoadControlInformationInCreateBearerRequestData_v(data.pgwsApnLevelLoadControlInformation, stream);
+
+ }
+ if (data.sgwsNodeLevelLoadControlInformationIePresent)
+ {
+
+
+ stream.add((char *)"IE - sgwsNodeLevelLoadControlInformation:");
+ stream.endOfLine();
+ LoadControlInformationIe loadControlInformation=
+ dynamic_cast<
+ LoadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(LoadControlInformationIeType));
+ SgwsNodeLevelLoadControlInformationInCreateBearerRequest groupedIeInstance =
+ dynamic_cast<
+ SgwsNodeLevelLoadControlInformationInCreateBearerRequest&>(loadControlInformation.getGroupedIe(msgType, 2));
+ groupedIeInstance.displaySgwsNodeLevelLoadControlInformationInCreateBearerRequestData_v(data.sgwsNodeLevelLoadControlInformation, stream);
+
+ }
+ if (data.pgwsOverloadControlInformationIePresent)
+ {
+
+
+ stream.add((char *)"IE - pgwsOverloadControlInformation:");
+ stream.endOfLine();
+ OverloadControlInformationIe overloadControlInformation=
+ dynamic_cast<
+ OverloadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(OverloadControlInformationIeType));
+ PgwsOverloadControlInformationInCreateBearerRequest groupedIeInstance =
+ dynamic_cast<
+ PgwsOverloadControlInformationInCreateBearerRequest&>(overloadControlInformation.getGroupedIe(msgType, 0));
+ groupedIeInstance.displayPgwsOverloadControlInformationInCreateBearerRequestData_v(data.pgwsOverloadControlInformation, stream);
+
+ }
+ if (data.sgwsOverloadControlInformationIePresent)
+ {
+
+
+ stream.add((char *)"IE - sgwsOverloadControlInformation:");
+ stream.endOfLine();
+ OverloadControlInformationIe overloadControlInformation=
+ dynamic_cast<
+ OverloadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(OverloadControlInformationIeType));
+ SgwsOverloadControlInformationInCreateBearerRequest groupedIeInstance =
+ dynamic_cast<
+ SgwsOverloadControlInformationInCreateBearerRequest&>(overloadControlInformation.getGroupedIe(msgType, 1));
+ groupedIeInstance.displaySgwsOverloadControlInformationInCreateBearerRequestData_v(data.sgwsOverloadControlInformation, stream);
+
+ }
+ if (data.nbifomContainerIePresent)
+ {
+
+
+ stream.add((char *)"IE - nbifomContainer:");
+ stream.endOfLine();
+ FContainerIe fContainer=
+ dynamic_cast<
+ FContainerIe&>(GtpV2IeFactory::getInstance().getIeObject(FContainerIeType));
+ fContainer.displayFContainerIe_v(data.nbifomContainer, stream);
+
+ }
+
+ stream.decrIndent();
+ stream.decrIndent();
+}
+
+