blob: 7d545acce0a5dc34d42dca19cf023ceb022a3a92 [file] [log] [blame]
anjana_sreekumar@infosys.com991c2062020-01-08 11:42:57 +05301/*
2 * Copyright 2019-present Infosys Limited  
3 *   
4 * SPDX-License-Identifier: Apache-2.0    
5 */
6
7/******************************************************************************
8 *
9 * This is an auto generated file.
10 * Please do not edit this file.
11 * All edits to be made through template source file
12 * <TOP-DIR/scripts/GtpV2StackCodeGen/tts/grpieinsttemplate.cpp.tt>
13 ******************************************************************************/
14
15#include "bearerContextsToBeRemovedInModifyBearerRequest.h"
16#include "manual/gtpV2Ie.h"
17#include "gtpV2IeFactory.h"
18#include "ebiIe.h"
19
20BearerContextsToBeRemovedInModifyBearerRequest::
21BearerContextsToBeRemovedInModifyBearerRequest()
22{
23 Uint16 mandIe;
24 mandIe = EbiIeType;
25 mandIe = (mandIe << 8) | 0; // epsBearerId
26 mandatoryIeSet.insert(mandIe);
27
28}
29
30BearerContextsToBeRemovedInModifyBearerRequest::
31~BearerContextsToBeRemovedInModifyBearerRequest()
32{
33
34}
35bool BearerContextsToBeRemovedInModifyBearerRequest::
36encodeBearerContextsToBeRemovedInModifyBearerRequest(MsgBuffer &buffer,
37 BearerContextsToBeRemovedInModifyBearerRequestData
38 const &data)
39{
40 bool rc = false;
41 GtpV2IeHeader header;
42 Uint16 startIndex = 0;
43 Uint16 endIndex = 0;
44 Uint16 length = 0;
45
46
47
48 // Encode the Ie Header
49 header.ieType = EbiIeType;
50 header.instance = 0;
51 header.length = 0; // We will encode the IE first and then update the length
52 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
53 startIndex = buffer.getCurrentIndex();
54 EbiIe ebi=
55 dynamic_cast<
56 EbiIe&>(GtpV2IeFactory::getInstance().getIeObject(EbiIeType));
57 rc = ebi.encodeEbiIe(buffer, data.epsBearerId);
58 endIndex = buffer.getCurrentIndex();
59 length = endIndex - startIndex;
60
61 // encode the length value now
62 buffer.goToIndex(startIndex - 3);
63 buffer.writeUint16(length, false);
64 buffer.goToIndex(endIndex);
65 if (!(rc))
66 {
67 errorStream.add((char *)"Failed to encode IE: epsBearerId\n");
68 return false;
69 }
70 return rc;
71}
72
73bool BearerContextsToBeRemovedInModifyBearerRequest::
74decodeBearerContextsToBeRemovedInModifyBearerRequest(MsgBuffer &buffer,
75 BearerContextsToBeRemovedInModifyBearerRequestData
76 &data, Uint16 length)
77{
78
79 bool rc = false;
80 GtpV2IeHeader ieHeader;
81 set<Uint16> mandatoryIeLocalList = mandatoryIeSet;
82 while (buffer.lengthLeft() > IE_HEADER_SIZE)
83 {
84 GtpV2Ie::decodeGtpV2IeHeader(buffer, ieHeader);
85 if (ieHeader.length > buffer.lengthLeft())
86 {
87 // We do not have enough bytes left in the message for this IE
88 errorStream.add((char *)"IE Length exceeds beyond message boundary\n");
89 errorStream.add((char *)" Offending IE Type: ");
90 errorStream.add(ieHeader.ieType);
91 errorStream.add((char *)"\n Ie Length in Header: ");
92 errorStream.add(ieHeader.length);
93 errorStream.add((char *)"\n Bytes left in message: ");
94 errorStream.add(buffer.lengthLeft());
95 errorStream.endOfLine();
96 return false;
97 }
98
99 switch (ieHeader.ieType){
100 case EbiIeType:
101 {
102 EbiIe ieObject =
103 dynamic_cast<
104 EbiIe&>(GtpV2IeFactory::getInstance().
105 getIeObject(EbiIeType));
106
107
108 if(ieHeader.instance == 0)
109 {
110
111 rc = ieObject.decodeEbiIe(buffer, data.epsBearerId, ieHeader.length);
112
113 if (!(rc))
114 {
115 errorStream.add((char *)"Failed to decode IE: epsBearerId\n");
116 return false;
117 }
118 Uint16 mandIe = EbiIeType;
119 mandIe = (mandIe << 8) | 0;
120 mandatoryIeLocalList.erase(mandIe);
121 }
122 else
123 {
124 // Unknown IE instance print error TODO
125 errorStream.add((char *)"Unknown IE Type: ");
126 errorStream.add(ieHeader.ieType);
127 errorStream.endOfLine();
128 buffer.skipBytes(ieHeader.length);
129 }
130 break;
131 }
132 default:
133 {
134 // Unknown IE print error
135 errorStream.add((char *)"Unknown IE Type: ");
136 errorStream.add(ieHeader.ieType);
137 errorStream.endOfLine();
138 buffer.skipBytes(ieHeader.length);
139 }
140 }
141 }
142 if (!mandatoryIeLocalList.empty())
143 {
144 // some mandatory IEs are missing
145 errorStream.add((char *)"Missing Mandatory IEs:");
146 errorStream.endOfLine();
147 while (!mandatoryIeLocalList.empty())
148 {
149 Uint16 missingMandIe = *mandatoryIeLocalList.begin ();
150 mandatoryIeLocalList.erase (mandatoryIeLocalList.begin ());
151 Uint16 missingInstance = missingMandIe & 0x00FF;
152 Uint16 missingIeType = (missingMandIe >> 8);
153 errorStream.add ((char *)"Missing Ie type: ");
154 errorStream.add (missingIeType);
155 errorStream.add ((char *)" Instance: ");
156 errorStream.add (missingInstance);
157 errorStream.endOfLine();
158 }
159 rc = false;
160
161 }
162 return rc;
163}
164
165void BearerContextsToBeRemovedInModifyBearerRequest::
166displayBearerContextsToBeRemovedInModifyBearerRequestData_v
167(BearerContextsToBeRemovedInModifyBearerRequestData const &data, Debug &stream)
168{
169 stream.incrIndent();
170 stream.add((char *)"BearerContextsToBeRemovedInModifyBearerRequest:");
171 stream.endOfLine();
172 stream.incrIndent();
173
174
175 stream.decrIndent();
176 stream.decrIndent();
177}
178
179
180
181
182