blob: 810d6fac5881e15ae9047c47a634fbed93f06252 [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 "sgwsNodeLevelLoadControlInformationInDeleteBearerRequest.h"
16#include "manual/gtpV2Ie.h"
17#include "gtpV2IeFactory.h"
18#include "sequenceNumberIe.h"
19#include "metricIe.h"
20#include "apnAndRelativeCapacityIe.h"
21
22SgwsNodeLevelLoadControlInformationInDeleteBearerRequest::
23SgwsNodeLevelLoadControlInformationInDeleteBearerRequest()
24{
25 Uint16 mandIe;
26 mandIe = SequenceNumberIeType;
27 mandIe = (mandIe << 8) | 0; // loadControlSequenceNumber
28 mandatoryIeSet.insert(mandIe);
29 mandIe = MetricIeType;
30 mandIe = (mandIe << 8) | 0; // loadMetric
31 mandatoryIeSet.insert(mandIe);
32
33}
34
35SgwsNodeLevelLoadControlInformationInDeleteBearerRequest::
36~SgwsNodeLevelLoadControlInformationInDeleteBearerRequest()
37{
38
39}
40bool SgwsNodeLevelLoadControlInformationInDeleteBearerRequest::
41encodeSgwsNodeLevelLoadControlInformationInDeleteBearerRequest(MsgBuffer &buffer,
42 SgwsNodeLevelLoadControlInformationInDeleteBearerRequestData
43 const &data)
44{
45 bool rc = false;
46 GtpV2IeHeader header;
47 Uint16 startIndex = 0;
48 Uint16 endIndex = 0;
49 Uint16 length = 0;
50
51
52
53 // Encode the Ie Header
54 header.ieType = SequenceNumberIeType;
55 header.instance = 0;
56 header.length = 0; // We will encode the IE first and then update the length
57 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
58 startIndex = buffer.getCurrentIndex();
59 SequenceNumberIe sequenceNumber=
60 dynamic_cast<
61 SequenceNumberIe&>(GtpV2IeFactory::getInstance().getIeObject(SequenceNumberIeType));
62 rc = sequenceNumber.encodeSequenceNumberIe(buffer, data.loadControlSequenceNumber);
63 endIndex = buffer.getCurrentIndex();
64 length = endIndex - startIndex;
65
66 // encode the length value now
67 buffer.goToIndex(startIndex - 3);
68 buffer.writeUint16(length, false);
69 buffer.goToIndex(endIndex);
70 if (!(rc))
71 {
72 errorStream.add((char *)"Failed to encode IE: loadControlSequenceNumber\n");
73 return false;
74 }
75
76
77
78 // Encode the Ie Header
79 header.ieType = MetricIeType;
80 header.instance = 0;
81 header.length = 0; // We will encode the IE first and then update the length
82 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
83 startIndex = buffer.getCurrentIndex();
84 MetricIe metric=
85 dynamic_cast<
86 MetricIe&>(GtpV2IeFactory::getInstance().getIeObject(MetricIeType));
87 rc = metric.encodeMetricIe(buffer, data.loadMetric);
88 endIndex = buffer.getCurrentIndex();
89 length = endIndex - startIndex;
90
91 // encode the length value now
92 buffer.goToIndex(startIndex - 3);
93 buffer.writeUint16(length, false);
94 buffer.goToIndex(endIndex);
95 if (!(rc))
96 {
97 errorStream.add((char *)"Failed to encode IE: loadMetric\n");
98 return false;
99 }
100
101 if (data.listOfApnAndRelativeCapacityIePresent)
102 {
103
104 // Encode the Ie Header
105 header.ieType = ApnAndRelativeCapacityIeType;
106 header.instance = 0;
107 header.length = 0; // We will encode the IE first and then update the length
108 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
109 startIndex = buffer.getCurrentIndex();
110 ApnAndRelativeCapacityIe apnAndRelativeCapacity=
111 dynamic_cast<
112 ApnAndRelativeCapacityIe&>(GtpV2IeFactory::getInstance().getIeObject(ApnAndRelativeCapacityIeType));
113 rc = apnAndRelativeCapacity.encodeApnAndRelativeCapacityIe(buffer, data.listOfApnAndRelativeCapacity);
114 endIndex = buffer.getCurrentIndex();
115 length = endIndex - startIndex;
116
117 // encode the length value now
118 buffer.goToIndex(startIndex - 3);
119 buffer.writeUint16(length, false);
120 buffer.goToIndex(endIndex);
121
122 if (!(rc))
123 {
124 errorStream.add((char *)"Failed to encode IE: listOfApnAndRelativeCapacity\n");
125 return false;
126 }
127 }
128 return rc;
129}
130
131bool SgwsNodeLevelLoadControlInformationInDeleteBearerRequest::
132decodeSgwsNodeLevelLoadControlInformationInDeleteBearerRequest(MsgBuffer &buffer,
133 SgwsNodeLevelLoadControlInformationInDeleteBearerRequestData
134 &data, Uint16 length)
135{
136
137 bool rc = false;
138 GtpV2IeHeader ieHeader;
139 set<Uint16> mandatoryIeLocalList = mandatoryIeSet;
140 while (buffer.lengthLeft() > IE_HEADER_SIZE)
141 {
142 GtpV2Ie::decodeGtpV2IeHeader(buffer, ieHeader);
143 if (ieHeader.length > buffer.lengthLeft())
144 {
145 // We do not have enough bytes left in the message for this IE
146 errorStream.add((char *)"IE Length exceeds beyond message boundary\n");
147 errorStream.add((char *)" Offending IE Type: ");
148 errorStream.add(ieHeader.ieType);
149 errorStream.add((char *)"\n Ie Length in Header: ");
150 errorStream.add(ieHeader.length);
151 errorStream.add((char *)"\n Bytes left in message: ");
152 errorStream.add(buffer.lengthLeft());
153 errorStream.endOfLine();
154 return false;
155 }
156
157 switch (ieHeader.ieType){
158 case SequenceNumberIeType:
159 {
160 SequenceNumberIe ieObject =
161 dynamic_cast<
162 SequenceNumberIe&>(GtpV2IeFactory::getInstance().
163 getIeObject(SequenceNumberIeType));
164
165
166 if(ieHeader.instance == 0)
167 {
168
169 rc = ieObject.decodeSequenceNumberIe(buffer, data.loadControlSequenceNumber, ieHeader.length);
170
171 if (!(rc))
172 {
173 errorStream.add((char *)"Failed to decode IE: loadControlSequenceNumber\n");
174 return false;
175 }
176 Uint16 mandIe = SequenceNumberIeType;
177 mandIe = (mandIe << 8) | 0;
178 mandatoryIeLocalList.erase(mandIe);
179 }
180 else
181 {
182 // Unknown IE instance print error TODO
183 errorStream.add((char *)"Unknown IE Type: ");
184 errorStream.add(ieHeader.ieType);
185 errorStream.endOfLine();
186 buffer.skipBytes(ieHeader.length);
187 }
188 break;
189 }
190 case MetricIeType:
191 {
192 MetricIe ieObject =
193 dynamic_cast<
194 MetricIe&>(GtpV2IeFactory::getInstance().
195 getIeObject(MetricIeType));
196
197
198 if(ieHeader.instance == 0)
199 {
200
201 rc = ieObject.decodeMetricIe(buffer, data.loadMetric, ieHeader.length);
202
203 if (!(rc))
204 {
205 errorStream.add((char *)"Failed to decode IE: loadMetric\n");
206 return false;
207 }
208 Uint16 mandIe = MetricIeType;
209 mandIe = (mandIe << 8) | 0;
210 mandatoryIeLocalList.erase(mandIe);
211 }
212 else
213 {
214 // Unknown IE instance print error TODO
215 errorStream.add((char *)"Unknown IE Type: ");
216 errorStream.add(ieHeader.ieType);
217 errorStream.endOfLine();
218 buffer.skipBytes(ieHeader.length);
219 }
220 break;
221 }
222 case ApnAndRelativeCapacityIeType:
223 {
224 ApnAndRelativeCapacityIe ieObject =
225 dynamic_cast<
226 ApnAndRelativeCapacityIe&>(GtpV2IeFactory::getInstance().
227 getIeObject(ApnAndRelativeCapacityIeType));
228
229
230 if(ieHeader.instance == 0)
231 {
232
233 rc = ieObject.decodeApnAndRelativeCapacityIe(buffer, data.listOfApnAndRelativeCapacity, ieHeader.length);
234
235 data.listOfApnAndRelativeCapacityIePresent = true;
236 if (!(rc))
237 {
238 errorStream.add((char *)"Failed to decode IE: listOfApnAndRelativeCapacity\n");
239 return false;
240 }
241 }
242 else
243 {
244 // Unknown IE instance print error TODO
245 errorStream.add((char *)"Unknown IE Type: ");
246 errorStream.add(ieHeader.ieType);
247 errorStream.endOfLine();
248 buffer.skipBytes(ieHeader.length);
249 }
250 break;
251 }
252 default:
253 {
254 // Unknown IE print error
255 errorStream.add((char *)"Unknown IE Type: ");
256 errorStream.add(ieHeader.ieType);
257 errorStream.endOfLine();
258 buffer.skipBytes(ieHeader.length);
259 }
260 }
261 }
262 if (!mandatoryIeLocalList.empty())
263 {
264 // some mandatory IEs are missing
265 errorStream.add((char *)"Missing Mandatory IEs:");
266 errorStream.endOfLine();
267 while (!mandatoryIeLocalList.empty())
268 {
269 Uint16 missingMandIe = *mandatoryIeLocalList.begin ();
270 mandatoryIeLocalList.erase (mandatoryIeLocalList.begin ());
271 Uint16 missingInstance = missingMandIe & 0x00FF;
272 Uint16 missingIeType = (missingMandIe >> 8);
273 errorStream.add ((char *)"Missing Ie type: ");
274 errorStream.add (missingIeType);
275 errorStream.add ((char *)" Instance: ");
276 errorStream.add (missingInstance);
277 errorStream.endOfLine();
278 }
279 rc = false;
280
281 }
282 return rc;
283}
284
285void SgwsNodeLevelLoadControlInformationInDeleteBearerRequest::
286displaySgwsNodeLevelLoadControlInformationInDeleteBearerRequestData_v
287(SgwsNodeLevelLoadControlInformationInDeleteBearerRequestData const &data, Debug &stream)
288{
289 stream.incrIndent();
290 stream.add((char *)"SgwsNodeLevelLoadControlInformationInDeleteBearerRequest:");
291 stream.endOfLine();
292 stream.incrIndent();
293
294
295
296 if (data.listOfApnAndRelativeCapacityIePresent)
297 {
298
299 stream.add((char *)"listOfApnAndRelativeCapacity:");
300 stream.endOfLine();
301 ApnAndRelativeCapacityIe apnAndRelativeCapacity=
302 dynamic_cast<
303 ApnAndRelativeCapacityIe&>(GtpV2IeFactory::getInstance().getIeObject(ApnAndRelativeCapacityIeType));
304 apnAndRelativeCapacity.displayApnAndRelativeCapacityIe_v(data.listOfApnAndRelativeCapacity, stream);
305
306 }
307
308 stream.decrIndent();
309 stream.decrIndent();
310}
311
312
313
314
315