blob: 1d7dc6fe21db04c7907c8ffe355878ee31f6bae5 [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/msgtemplate.cpp.tt>
13 ******************************************************************************/
14
15#include "createBearerResponseMsg.h"
16#include "../ieClasses/manual/gtpV2Ie.h"
17#include "../ieClasses/gtpV2IeFactory.h"
18#include "../ieClasses/causeIe.h"
19#include "../ieClasses/bearerContextIe.h"
20#include "../ieClasses/bearerContextsInCreateBearerResponse.h"
21#include "../ieClasses/recoveryIe.h"
22#include "../ieClasses/fqCsidIe.h"
23#include "../ieClasses/fqCsidIe.h"
24#include "../ieClasses/fqCsidIe.h"
25#include "../ieClasses/fqCsidIe.h"
26#include "../ieClasses/pcoIe.h"
27#include "../ieClasses/ueTimeZoneIe.h"
28#include "../ieClasses/uliIe.h"
29#include "../ieClasses/twanIdentifierIe.h"
30#include "../ieClasses/overloadControlInformationIe.h"
31#include "../ieClasses/mmeS4SgsnsOverloadControlInformationInCreateBearerResponse.h"
32#include "../ieClasses/overloadControlInformationIe.h"
33#include "../ieClasses/sgwsOverloadControlInformationInCreateBearerResponse.h"
34#include "../ieClasses/ipAddressIe.h"
35#include "../ieClasses/overloadControlInformationIe.h"
36#include "../ieClasses/twanEpdgsOverloadControlInformationInCreateBearerResponse.h"
37#include "../ieClasses/twanIdentifierIe.h"
38#include "../ieClasses/twanIdentifierTimestampIe.h"
39#include "../ieClasses/ipAddressIe.h"
40#include "../ieClasses/portNumberIe.h"
41#include "../ieClasses/fContainerIe.h"
42#include "../ieClasses/portNumberIe.h"
43
44CreateBearerResponseMsg::CreateBearerResponseMsg()
45{
46 msgType = CreateBearerResponseMsgType;
47 Uint16 mandIe;
48 mandIe = CauseIeType;
49 mandIe = (mandIe << 8) | 0; // cause
50 mandatoryIeSet.insert(mandIe); mandIe = BearerContextIeType;
51 mandIe = (mandIe << 8) | 0; // bearerContexts
52 mandatoryIeSet.insert(mandIe);
53}
54
55CreateBearerResponseMsg::~CreateBearerResponseMsg()
56{
57
58}
59
60bool CreateBearerResponseMsg::encodeCreateBearerResponseMsg(MsgBuffer &buffer,
61 CreateBearerResponseMsgData
62 const &data)
63{
64 bool rc = false;
65 GtpV2IeHeader header;
66 Uint16 startIndex = 0;
67 Uint16 endIndex = 0;
68 Uint16 length = 0;
69
70
71 // Encode the Ie Header
72 header.ieType = CauseIeType;
73 header.instance = 0;
74 header.length = 0; // We will encode the IE first and then update the length
75 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
76 startIndex = buffer.getCurrentIndex();
77 CauseIe cause=
78 dynamic_cast<
79 CauseIe&>(GtpV2IeFactory::getInstance().getIeObject(CauseIeType));
80 rc = cause.encodeCauseIe(buffer, data.cause);
81 endIndex = buffer.getCurrentIndex();
82 length = endIndex - startIndex;
83
84 // encode the length value now
85 buffer.goToIndex(startIndex - 3);
86 buffer.writeUint16(length, false);
87 buffer.goToIndex(endIndex);
88
89 if (!(rc))
90 {
91 errorStream.add((char *)"Failed to encode IE: cause\n");
92 return false;
93 }
94
95 // First validate if the applicatoin provided more than the expected cardinality
96 if (data.bearerContextsCount > 11)
97 {
98 errorStream.add((char *)"Number of entries of bearerContexts exceeded\n");
99 errorStream.add((char *)"Expected count: 11 Received count: ");
100 errorStream.add((char *)"data.bearerContextsCount");
101 errorStream.endOfLine();
102 return false;
103 }
104 for (Uint8 i = 0; i < data.bearerContextsCount; i++)
105 {
106 // Encode the Ie Header
107 header.ieType = BearerContextIeType;
108 header.instance = 0;
109 header.length = 0; // We will encode the IE first and then update the length
110 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
111 startIndex = buffer.getCurrentIndex();
112 BearerContextIe bearerContext=
113 dynamic_cast<
114 BearerContextIe&>(GtpV2IeFactory::getInstance().
115 getIeObject(BearerContextIeType));
116 BearerContextsInCreateBearerResponse groupedIeInstance = dynamic_cast<BearerContextsInCreateBearerResponse&>(bearerContext.getGroupedIe(msgType, 0));
117 rc = groupedIeInstance.encodeBearerContextsInCreateBearerResponse(buffer, data.bearerContexts[i]);
118 endIndex = buffer.getCurrentIndex();
119 length = endIndex - startIndex;
120
121 // encode the length value now
122 buffer.goToIndex(startIndex - 3);
123 buffer.writeUint16(length, false);
124 buffer.goToIndex(endIndex);
125 }
126
127 if (!(rc))
128 {
129 errorStream.add((char *)"Failed to encode IE: bearerContexts\n");
130 return false;
131 }
132
133 if (data.recoveryIePresent)
134 {
135
136 // Encode the Ie Header
137 header.ieType = RecoveryIeType;
138 header.instance = 0;
139 header.length = 0; // We will encode the IE first and then update the length
140 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
141 startIndex = buffer.getCurrentIndex();
142 RecoveryIe recovery=
143 dynamic_cast<
144 RecoveryIe&>(GtpV2IeFactory::getInstance().getIeObject(RecoveryIeType));
145 rc = recovery.encodeRecoveryIe(buffer, data.recovery);
146 endIndex = buffer.getCurrentIndex();
147 length = endIndex - startIndex;
148
149 // encode the length value now
150 buffer.goToIndex(startIndex - 3);
151 buffer.writeUint16(length, false);
152 buffer.goToIndex(endIndex);
153
154 if (!(rc))
155 {
156 errorStream.add((char *)"Failed to encode IE: recovery\n");
157 return false;
158 }
159 }
160
161 if (data.mmeFqCsidIePresent)
162 {
163
164 // Encode the Ie Header
165 header.ieType = FqCsidIeType;
166 header.instance = 0;
167 header.length = 0; // We will encode the IE first and then update the length
168 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
169 startIndex = buffer.getCurrentIndex();
170 FqCsidIe fqCsid=
171 dynamic_cast<
172 FqCsidIe&>(GtpV2IeFactory::getInstance().getIeObject(FqCsidIeType));
173 rc = fqCsid.encodeFqCsidIe(buffer, data.mmeFqCsid);
174 endIndex = buffer.getCurrentIndex();
175 length = endIndex - startIndex;
176
177 // encode the length value now
178 buffer.goToIndex(startIndex - 3);
179 buffer.writeUint16(length, false);
180 buffer.goToIndex(endIndex);
181
182 if (!(rc))
183 {
184 errorStream.add((char *)"Failed to encode IE: mmeFqCsid\n");
185 return false;
186 }
187 }
188
189 if (data.sgwFqCsidIePresent)
190 {
191
192 // Encode the Ie Header
193 header.ieType = FqCsidIeType;
194 header.instance = 1;
195 header.length = 0; // We will encode the IE first and then update the length
196 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
197 startIndex = buffer.getCurrentIndex();
198 FqCsidIe fqCsid=
199 dynamic_cast<
200 FqCsidIe&>(GtpV2IeFactory::getInstance().getIeObject(FqCsidIeType));
201 rc = fqCsid.encodeFqCsidIe(buffer, data.sgwFqCsid);
202 endIndex = buffer.getCurrentIndex();
203 length = endIndex - startIndex;
204
205 // encode the length value now
206 buffer.goToIndex(startIndex - 3);
207 buffer.writeUint16(length, false);
208 buffer.goToIndex(endIndex);
209
210 if (!(rc))
211 {
212 errorStream.add((char *)"Failed to encode IE: sgwFqCsid\n");
213 return false;
214 }
215 }
216
217 if (data.epdgFqCsidIePresent)
218 {
219
220 // Encode the Ie Header
221 header.ieType = FqCsidIeType;
222 header.instance = 2;
223 header.length = 0; // We will encode the IE first and then update the length
224 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
225 startIndex = buffer.getCurrentIndex();
226 FqCsidIe fqCsid=
227 dynamic_cast<
228 FqCsidIe&>(GtpV2IeFactory::getInstance().getIeObject(FqCsidIeType));
229 rc = fqCsid.encodeFqCsidIe(buffer, data.epdgFqCsid);
230 endIndex = buffer.getCurrentIndex();
231 length = endIndex - startIndex;
232
233 // encode the length value now
234 buffer.goToIndex(startIndex - 3);
235 buffer.writeUint16(length, false);
236 buffer.goToIndex(endIndex);
237
238 if (!(rc))
239 {
240 errorStream.add((char *)"Failed to encode IE: epdgFqCsid\n");
241 return false;
242 }
243 }
244
245 if (data.twanFqCsidIePresent)
246 {
247
248 // Encode the Ie Header
249 header.ieType = FqCsidIeType;
250 header.instance = 3;
251 header.length = 0; // We will encode the IE first and then update the length
252 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
253 startIndex = buffer.getCurrentIndex();
254 FqCsidIe fqCsid=
255 dynamic_cast<
256 FqCsidIe&>(GtpV2IeFactory::getInstance().getIeObject(FqCsidIeType));
257 rc = fqCsid.encodeFqCsidIe(buffer, data.twanFqCsid);
258 endIndex = buffer.getCurrentIndex();
259 length = endIndex - startIndex;
260
261 // encode the length value now
262 buffer.goToIndex(startIndex - 3);
263 buffer.writeUint16(length, false);
264 buffer.goToIndex(endIndex);
265
266 if (!(rc))
267 {
268 errorStream.add((char *)"Failed to encode IE: twanFqCsid\n");
269 return false;
270 }
271 }
272
273 if (data.protocolConfigurationOptionsIePresent)
274 {
275
276 // Encode the Ie Header
277 header.ieType = PcoIeType;
278 header.instance = 0;
279 header.length = 0; // We will encode the IE first and then update the length
280 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
281 startIndex = buffer.getCurrentIndex();
282 PcoIe pco=
283 dynamic_cast<
284 PcoIe&>(GtpV2IeFactory::getInstance().getIeObject(PcoIeType));
285 rc = pco.encodePcoIe(buffer, data.protocolConfigurationOptions);
286 endIndex = buffer.getCurrentIndex();
287 length = endIndex - startIndex;
288
289 // encode the length value now
290 buffer.goToIndex(startIndex - 3);
291 buffer.writeUint16(length, false);
292 buffer.goToIndex(endIndex);
293
294 if (!(rc))
295 {
296 errorStream.add((char *)"Failed to encode IE: protocolConfigurationOptions\n");
297 return false;
298 }
299 }
300
301 if (data.ueTimeZoneIePresent)
302 {
303
304 // Encode the Ie Header
305 header.ieType = UeTimeZoneIeType;
306 header.instance = 0;
307 header.length = 0; // We will encode the IE first and then update the length
308 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
309 startIndex = buffer.getCurrentIndex();
310 UeTimeZoneIe ueTimeZone=
311 dynamic_cast<
312 UeTimeZoneIe&>(GtpV2IeFactory::getInstance().getIeObject(UeTimeZoneIeType));
313 rc = ueTimeZone.encodeUeTimeZoneIe(buffer, data.ueTimeZone);
314 endIndex = buffer.getCurrentIndex();
315 length = endIndex - startIndex;
316
317 // encode the length value now
318 buffer.goToIndex(startIndex - 3);
319 buffer.writeUint16(length, false);
320 buffer.goToIndex(endIndex);
321
322 if (!(rc))
323 {
324 errorStream.add((char *)"Failed to encode IE: ueTimeZone\n");
325 return false;
326 }
327 }
328
329 if (data.userLocationInformationIePresent)
330 {
331
332 // Encode the Ie Header
333 header.ieType = UliIeType;
334 header.instance = 0;
335 header.length = 0; // We will encode the IE first and then update the length
336 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
337 startIndex = buffer.getCurrentIndex();
338 UliIe uli=
339 dynamic_cast<
340 UliIe&>(GtpV2IeFactory::getInstance().getIeObject(UliIeType));
341 rc = uli.encodeUliIe(buffer, data.userLocationInformation);
342 endIndex = buffer.getCurrentIndex();
343 length = endIndex - startIndex;
344
345 // encode the length value now
346 buffer.goToIndex(startIndex - 3);
347 buffer.writeUint16(length, false);
348 buffer.goToIndex(endIndex);
349
350 if (!(rc))
351 {
352 errorStream.add((char *)"Failed to encode IE: userLocationInformation\n");
353 return false;
354 }
355 }
356
357 if (data.twanIdentifierIePresent)
358 {
359
360 // Encode the Ie Header
361 header.ieType = TwanIdentifierIeType;
362 header.instance = 0;
363 header.length = 0; // We will encode the IE first and then update the length
364 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
365 startIndex = buffer.getCurrentIndex();
366 TwanIdentifierIe twanIdentifier=
367 dynamic_cast<
368 TwanIdentifierIe&>(GtpV2IeFactory::getInstance().getIeObject(TwanIdentifierIeType));
369 rc = twanIdentifier.encodeTwanIdentifierIe(buffer, data.twanIdentifier);
370 endIndex = buffer.getCurrentIndex();
371 length = endIndex - startIndex;
372
373 // encode the length value now
374 buffer.goToIndex(startIndex - 3);
375 buffer.writeUint16(length, false);
376 buffer.goToIndex(endIndex);
377
378 if (!(rc))
379 {
380 errorStream.add((char *)"Failed to encode IE: twanIdentifier\n");
381 return false;
382 }
383 }
384
385 if (data.mmeS4SgsnsOverloadControlInformationIePresent)
386 {
387
388 // Encode the Ie Header
389 header.ieType = OverloadControlInformationIeType;
390 header.instance = 0;
391 header.length = 0; // We will encode the IE first and then update the length
392 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
393 startIndex = buffer.getCurrentIndex();
394 OverloadControlInformationIe overloadControlInformation=
395 dynamic_cast<
396 OverloadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(OverloadControlInformationIeType));
397 MmeS4SgsnsOverloadControlInformationInCreateBearerResponse groupedIeInstance =
398 dynamic_cast<
399 MmeS4SgsnsOverloadControlInformationInCreateBearerResponse&>(overloadControlInformation.getGroupedIe(msgType, 0));
400 rc = groupedIeInstance.encodeMmeS4SgsnsOverloadControlInformationInCreateBearerResponse(buffer, data.mmeS4SgsnsOverloadControlInformation);
401 endIndex = buffer.getCurrentIndex();
402 length = endIndex - startIndex;
403
404 // encode the length value now
405 buffer.goToIndex(startIndex - 3);
406 buffer.writeUint16(length, false);
407 buffer.goToIndex(endIndex);
408
409 if (!(rc))
410 {
411 errorStream.add((char *)"Failed to encode IE: mmeS4SgsnsOverloadControlInformation\n");
412 return false;
413 }
414 }
415
416 if (data.sgwsOverloadControlInformationIePresent)
417 {
418
419 // Encode the Ie Header
420 header.ieType = OverloadControlInformationIeType;
421 header.instance = 1;
422 header.length = 0; // We will encode the IE first and then update the length
423 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
424 startIndex = buffer.getCurrentIndex();
425 OverloadControlInformationIe overloadControlInformation=
426 dynamic_cast<
427 OverloadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(OverloadControlInformationIeType));
428 SgwsOverloadControlInformationInCreateBearerResponse groupedIeInstance =
429 dynamic_cast<
430 SgwsOverloadControlInformationInCreateBearerResponse&>(overloadControlInformation.getGroupedIe(msgType, 1));
431 rc = groupedIeInstance.encodeSgwsOverloadControlInformationInCreateBearerResponse(buffer, data.sgwsOverloadControlInformation);
432 endIndex = buffer.getCurrentIndex();
433 length = endIndex - startIndex;
434
435 // encode the length value now
436 buffer.goToIndex(startIndex - 3);
437 buffer.writeUint16(length, false);
438 buffer.goToIndex(endIndex);
439
440 if (!(rc))
441 {
442 errorStream.add((char *)"Failed to encode IE: sgwsOverloadControlInformation\n");
443 return false;
444 }
445 }
446
447 if (data.mmeS4SgsnIdentifierIePresent)
448 {
449
450 // Encode the Ie Header
451 header.ieType = IpAddressIeType;
452 header.instance = 0;
453 header.length = 0; // We will encode the IE first and then update the length
454 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
455 startIndex = buffer.getCurrentIndex();
456 IpAddressIe ipAddress=
457 dynamic_cast<
458 IpAddressIe&>(GtpV2IeFactory::getInstance().getIeObject(IpAddressIeType));
459 rc = ipAddress.encodeIpAddressIe(buffer, data.mmeS4SgsnIdentifier);
460 endIndex = buffer.getCurrentIndex();
461 length = endIndex - startIndex;
462
463 // encode the length value now
464 buffer.goToIndex(startIndex - 3);
465 buffer.writeUint16(length, false);
466 buffer.goToIndex(endIndex);
467
468 if (!(rc))
469 {
470 errorStream.add((char *)"Failed to encode IE: mmeS4SgsnIdentifier\n");
471 return false;
472 }
473 }
474
475 if (data.twanEpdgsOverloadControlInformationIePresent)
476 {
477
478 // Encode the Ie Header
479 header.ieType = OverloadControlInformationIeType;
480 header.instance = 2;
481 header.length = 0; // We will encode the IE first and then update the length
482 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
483 startIndex = buffer.getCurrentIndex();
484 OverloadControlInformationIe overloadControlInformation=
485 dynamic_cast<
486 OverloadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(OverloadControlInformationIeType));
487 TwanEpdgsOverloadControlInformationInCreateBearerResponse groupedIeInstance =
488 dynamic_cast<
489 TwanEpdgsOverloadControlInformationInCreateBearerResponse&>(overloadControlInformation.getGroupedIe(msgType, 2));
490 rc = groupedIeInstance.encodeTwanEpdgsOverloadControlInformationInCreateBearerResponse(buffer, data.twanEpdgsOverloadControlInformation);
491 endIndex = buffer.getCurrentIndex();
492 length = endIndex - startIndex;
493
494 // encode the length value now
495 buffer.goToIndex(startIndex - 3);
496 buffer.writeUint16(length, false);
497 buffer.goToIndex(endIndex);
498
499 if (!(rc))
500 {
501 errorStream.add((char *)"Failed to encode IE: twanEpdgsOverloadControlInformation\n");
502 return false;
503 }
504 }
505
506 if (data.wlanLocationInformationIePresent)
507 {
508
509 // Encode the Ie Header
510 header.ieType = TwanIdentifierIeType;
511 header.instance = 1;
512 header.length = 0; // We will encode the IE first and then update the length
513 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
514 startIndex = buffer.getCurrentIndex();
515 TwanIdentifierIe twanIdentifier=
516 dynamic_cast<
517 TwanIdentifierIe&>(GtpV2IeFactory::getInstance().getIeObject(TwanIdentifierIeType));
518 rc = twanIdentifier.encodeTwanIdentifierIe(buffer, data.wlanLocationInformation);
519 endIndex = buffer.getCurrentIndex();
520 length = endIndex - startIndex;
521
522 // encode the length value now
523 buffer.goToIndex(startIndex - 3);
524 buffer.writeUint16(length, false);
525 buffer.goToIndex(endIndex);
526
527 if (!(rc))
528 {
529 errorStream.add((char *)"Failed to encode IE: wlanLocationInformation\n");
530 return false;
531 }
532 }
533
534 if (data.wlanLocationTimestampIePresent)
535 {
536
537 // Encode the Ie Header
538 header.ieType = TwanIdentifierTimestampIeType;
539 header.instance = 1;
540 header.length = 0; // We will encode the IE first and then update the length
541 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
542 startIndex = buffer.getCurrentIndex();
543 TwanIdentifierTimestampIe twanIdentifierTimestamp=
544 dynamic_cast<
545 TwanIdentifierTimestampIe&>(GtpV2IeFactory::getInstance().getIeObject(TwanIdentifierTimestampIeType));
546 rc = twanIdentifierTimestamp.encodeTwanIdentifierTimestampIe(buffer, data.wlanLocationTimestamp);
547 endIndex = buffer.getCurrentIndex();
548 length = endIndex - startIndex;
549
550 // encode the length value now
551 buffer.goToIndex(startIndex - 3);
552 buffer.writeUint16(length, false);
553 buffer.goToIndex(endIndex);
554
555 if (!(rc))
556 {
557 errorStream.add((char *)"Failed to encode IE: wlanLocationTimestamp\n");
558 return false;
559 }
560 }
561
562 if (data.ueLocalIpAddressIePresent)
563 {
564
565 // Encode the Ie Header
566 header.ieType = IpAddressIeType;
567 header.instance = 0;
568 header.length = 0; // We will encode the IE first and then update the length
569 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
570 startIndex = buffer.getCurrentIndex();
571 IpAddressIe ipAddress=
572 dynamic_cast<
573 IpAddressIe&>(GtpV2IeFactory::getInstance().getIeObject(IpAddressIeType));
574 rc = ipAddress.encodeIpAddressIe(buffer, data.ueLocalIpAddress);
575 endIndex = buffer.getCurrentIndex();
576 length = endIndex - startIndex;
577
578 // encode the length value now
579 buffer.goToIndex(startIndex - 3);
580 buffer.writeUint16(length, false);
581 buffer.goToIndex(endIndex);
582
583 if (!(rc))
584 {
585 errorStream.add((char *)"Failed to encode IE: ueLocalIpAddress\n");
586 return false;
587 }
588 }
589
590 if (data.ueUdpPortIePresent)
591 {
592
593 // Encode the Ie Header
594 header.ieType = PortNumberIeType;
595 header.instance = 0;
596 header.length = 0; // We will encode the IE first and then update the length
597 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
598 startIndex = buffer.getCurrentIndex();
599 PortNumberIe portNumber=
600 dynamic_cast<
601 PortNumberIe&>(GtpV2IeFactory::getInstance().getIeObject(PortNumberIeType));
602 rc = portNumber.encodePortNumberIe(buffer, data.ueUdpPort);
603 endIndex = buffer.getCurrentIndex();
604 length = endIndex - startIndex;
605
606 // encode the length value now
607 buffer.goToIndex(startIndex - 3);
608 buffer.writeUint16(length, false);
609 buffer.goToIndex(endIndex);
610
611 if (!(rc))
612 {
613 errorStream.add((char *)"Failed to encode IE: ueUdpPort\n");
614 return false;
615 }
616 }
617
618 if (data.nbifomContainerIePresent)
619 {
620
621 // Encode the Ie Header
622 header.ieType = FContainerIeType;
623 header.instance = 0;
624 header.length = 0; // We will encode the IE first and then update the length
625 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
626 startIndex = buffer.getCurrentIndex();
627 FContainerIe fContainer=
628 dynamic_cast<
629 FContainerIe&>(GtpV2IeFactory::getInstance().getIeObject(FContainerIeType));
630 rc = fContainer.encodeFContainerIe(buffer, data.nbifomContainer);
631 endIndex = buffer.getCurrentIndex();
632 length = endIndex - startIndex;
633
634 // encode the length value now
635 buffer.goToIndex(startIndex - 3);
636 buffer.writeUint16(length, false);
637 buffer.goToIndex(endIndex);
638
639 if (!(rc))
640 {
641 errorStream.add((char *)"Failed to encode IE: nbifomContainer\n");
642 return false;
643 }
644 }
645
646 if (data.ueTcpPortIePresent)
647 {
648
649 // Encode the Ie Header
650 header.ieType = PortNumberIeType;
651 header.instance = 1;
652 header.length = 0; // We will encode the IE first and then update the length
653 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
654 startIndex = buffer.getCurrentIndex();
655 PortNumberIe portNumber=
656 dynamic_cast<
657 PortNumberIe&>(GtpV2IeFactory::getInstance().getIeObject(PortNumberIeType));
658 rc = portNumber.encodePortNumberIe(buffer, data.ueTcpPort);
659 endIndex = buffer.getCurrentIndex();
660 length = endIndex - startIndex;
661
662 // encode the length value now
663 buffer.goToIndex(startIndex - 3);
664 buffer.writeUint16(length, false);
665 buffer.goToIndex(endIndex);
666
667 if (!(rc))
668 {
669 errorStream.add((char *)"Failed to encode IE: ueTcpPort\n");
670 return false;
671 }
672 }
673 return rc;
674
675}
676
677bool CreateBearerResponseMsg::decodeCreateBearerResponseMsg(MsgBuffer &buffer,
678 CreateBearerResponseMsgData
679 &data, Uint16 length)
680{
681
682 bool rc = false;
683 GtpV2IeHeader ieHeader;
684
685 set<Uint16> mandatoryIeLocalList = mandatoryIeSet;
686 while (buffer.lengthLeft() > IE_HEADER_SIZE)
687 {
688 GtpV2Ie::decodeGtpV2IeHeader(buffer, ieHeader);
689 if (ieHeader.length > buffer.lengthLeft())
690 {
691 // We do not have enough bytes left in the message for this IE
692 errorStream.add((char *)"IE Length exceeds beyond message boundary\n");
693 errorStream.add((char *)" Offending IE Type: ");
694 errorStream.add(ieHeader.ieType);
695 errorStream.add((char *)"\n Ie Length in Header: ");
696 errorStream.add(ieHeader.length);
697 errorStream.add((char *)"\n Bytes left in message: ");
698 errorStream.add(buffer.lengthLeft());
699 errorStream.endOfLine();
700 return false;
701 }
702
703 switch (ieHeader.ieType){
704
705 case CauseIeType:
706 {
707 CauseIe ieObject =
708 dynamic_cast<
709 CauseIe&>(GtpV2IeFactory::getInstance().getIeObject(CauseIeType));
710
711 if(ieHeader.instance == 0)
712 {
713 rc = ieObject.decodeCauseIe(buffer, data.cause, ieHeader.length);
714
715 if (!(rc))
716 {
717 errorStream.add((char *)"Failed to decode IE: cause\n");
718 return false;
719 }
720 }
721
722 else
723 {
724 // Unknown IE instance print error
725 errorStream.add((char *)"Unknown IE Type: ");
726 errorStream.add(ieHeader.ieType);
727 errorStream.endOfLine();
728 buffer.skipBytes(ieHeader.length);
729 }
730 break;
731 }
732
733 case BearerContextIeType:
734 {
735 BearerContextIe ieObject =
736 dynamic_cast<
737 BearerContextIe&>(GtpV2IeFactory::getInstance().getIeObject(BearerContextIeType));
738
739 if(ieHeader.instance == 0)
740 {
741 // First check if we have enough space left to decode and store this instance
742 if (data.bearerContextsCount == 11)
743 {
744 errorStream.add((char *)"More than 11 instances of bearerContexts received\n");
745 return false;
746 }
747 BearerContextsInCreateBearerResponse groupedIeInstance =
748 dynamic_cast<
749 BearerContextsInCreateBearerResponse&>(ieObject.getGroupedIe(msgType, 0));
750 rc = groupedIeInstance.decodeBearerContextsInCreateBearerResponse(buffer,
751 data.bearerContexts[data.bearerContextsCount], ieHeader.length);
752 data.bearerContextsCount++; // TODO Count validation
753
754 if (!(rc))
755 {
756 errorStream.add((char *)"Failed to decode IE: bearerContexts\n");
757 return false;
758 }
759 }
760
761 else
762 {
763 // Unknown IE instance print error
764 errorStream.add((char *)"Unknown IE Type: ");
765 errorStream.add(ieHeader.ieType);
766 errorStream.endOfLine();
767 buffer.skipBytes(ieHeader.length);
768 }
769 break;
770 }
771
772 case RecoveryIeType:
773 {
774 RecoveryIe ieObject =
775 dynamic_cast<
776 RecoveryIe&>(GtpV2IeFactory::getInstance().getIeObject(RecoveryIeType));
777
778 if(ieHeader.instance == 0)
779 {
780 rc = ieObject.decodeRecoveryIe(buffer, data.recovery, ieHeader.length);
781
782 data.recoveryIePresent = true;
783 if (!(rc))
784 {
785 errorStream.add((char *)"Failed to decode IE: recovery\n");
786 return false;
787 }
788 }
789
790 else
791 {
792 // Unknown IE instance print error
793 errorStream.add((char *)"Unknown IE Type: ");
794 errorStream.add(ieHeader.ieType);
795 errorStream.endOfLine();
796 buffer.skipBytes(ieHeader.length);
797 }
798 break;
799 }
800
801 case FqCsidIeType:
802 {
803 FqCsidIe ieObject =
804 dynamic_cast<
805 FqCsidIe&>(GtpV2IeFactory::getInstance().getIeObject(FqCsidIeType));
806
807 if(ieHeader.instance == 0)
808 {
809 rc = ieObject.decodeFqCsidIe(buffer, data.mmeFqCsid, ieHeader.length);
810
811 data.mmeFqCsidIePresent = true;
812 if (!(rc))
813 {
814 errorStream.add((char *)"Failed to decode IE: mmeFqCsid\n");
815 return false;
816 }
817 }
818 else if(ieHeader.instance == 1)
819 {
820 rc = ieObject.decodeFqCsidIe(buffer, data.sgwFqCsid, ieHeader.length);
821
822 data.sgwFqCsidIePresent = true;
823 if (!(rc))
824 {
825 errorStream.add((char *)"Failed to decode IE: sgwFqCsid\n");
826 return false;
827 }
828 }
829 else if(ieHeader.instance == 2)
830 {
831 rc = ieObject.decodeFqCsidIe(buffer, data.epdgFqCsid, ieHeader.length);
832
833 data.epdgFqCsidIePresent = true;
834 if (!(rc))
835 {
836 errorStream.add((char *)"Failed to decode IE: epdgFqCsid\n");
837 return false;
838 }
839 }
840 else if(ieHeader.instance == 3)
841 {
842 rc = ieObject.decodeFqCsidIe(buffer, data.twanFqCsid, ieHeader.length);
843
844 data.twanFqCsidIePresent = true;
845 if (!(rc))
846 {
847 errorStream.add((char *)"Failed to decode IE: twanFqCsid\n");
848 return false;
849 }
850 }
851
852 else
853 {
854 // Unknown IE instance print error
855 errorStream.add((char *)"Unknown IE Type: ");
856 errorStream.add(ieHeader.ieType);
857 errorStream.endOfLine();
858 buffer.skipBytes(ieHeader.length);
859 }
860 break;
861 }
862
863 case PcoIeType:
864 {
865 PcoIe ieObject =
866 dynamic_cast<
867 PcoIe&>(GtpV2IeFactory::getInstance().getIeObject(PcoIeType));
868
869 if(ieHeader.instance == 0)
870 {
871 rc = ieObject.decodePcoIe(buffer, data.protocolConfigurationOptions, ieHeader.length);
872
873 data.protocolConfigurationOptionsIePresent = true;
874 if (!(rc))
875 {
876 errorStream.add((char *)"Failed to decode IE: protocolConfigurationOptions\n");
877 return false;
878 }
879 }
880
881 else
882 {
883 // Unknown IE instance print error
884 errorStream.add((char *)"Unknown IE Type: ");
885 errorStream.add(ieHeader.ieType);
886 errorStream.endOfLine();
887 buffer.skipBytes(ieHeader.length);
888 }
889 break;
890 }
891
892 case UeTimeZoneIeType:
893 {
894 UeTimeZoneIe ieObject =
895 dynamic_cast<
896 UeTimeZoneIe&>(GtpV2IeFactory::getInstance().getIeObject(UeTimeZoneIeType));
897
898 if(ieHeader.instance == 0)
899 {
900 rc = ieObject.decodeUeTimeZoneIe(buffer, data.ueTimeZone, ieHeader.length);
901
902 data.ueTimeZoneIePresent = true;
903 if (!(rc))
904 {
905 errorStream.add((char *)"Failed to decode IE: ueTimeZone\n");
906 return false;
907 }
908 }
909
910 else
911 {
912 // Unknown IE instance print error
913 errorStream.add((char *)"Unknown IE Type: ");
914 errorStream.add(ieHeader.ieType);
915 errorStream.endOfLine();
916 buffer.skipBytes(ieHeader.length);
917 }
918 break;
919 }
920
921 case UliIeType:
922 {
923 UliIe ieObject =
924 dynamic_cast<
925 UliIe&>(GtpV2IeFactory::getInstance().getIeObject(UliIeType));
926
927 if(ieHeader.instance == 0)
928 {
929 rc = ieObject.decodeUliIe(buffer, data.userLocationInformation, ieHeader.length);
930
931 data.userLocationInformationIePresent = true;
932 if (!(rc))
933 {
934 errorStream.add((char *)"Failed to decode IE: userLocationInformation\n");
935 return false;
936 }
937 }
938
939 else
940 {
941 // Unknown IE instance print error
942 errorStream.add((char *)"Unknown IE Type: ");
943 errorStream.add(ieHeader.ieType);
944 errorStream.endOfLine();
945 buffer.skipBytes(ieHeader.length);
946 }
947 break;
948 }
949
950 case TwanIdentifierIeType:
951 {
952 TwanIdentifierIe ieObject =
953 dynamic_cast<
954 TwanIdentifierIe&>(GtpV2IeFactory::getInstance().getIeObject(TwanIdentifierIeType));
955
956 if(ieHeader.instance == 0)
957 {
958 rc = ieObject.decodeTwanIdentifierIe(buffer, data.twanIdentifier, ieHeader.length);
959
960 data.twanIdentifierIePresent = true;
961 if (!(rc))
962 {
963 errorStream.add((char *)"Failed to decode IE: twanIdentifier\n");
964 return false;
965 }
966 }
967 else if(ieHeader.instance == 1)
968 {
969 rc = ieObject.decodeTwanIdentifierIe(buffer, data.wlanLocationInformation, ieHeader.length);
970
971 data.wlanLocationInformationIePresent = true;
972 if (!(rc))
973 {
974 errorStream.add((char *)"Failed to decode IE: wlanLocationInformation\n");
975 return false;
976 }
977 }
978
979 else
980 {
981 // Unknown IE instance print error
982 errorStream.add((char *)"Unknown IE Type: ");
983 errorStream.add(ieHeader.ieType);
984 errorStream.endOfLine();
985 buffer.skipBytes(ieHeader.length);
986 }
987 break;
988 }
989
990 case OverloadControlInformationIeType:
991 {
992 OverloadControlInformationIe ieObject =
993 dynamic_cast<
994 OverloadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(OverloadControlInformationIeType));
995
996 if(ieHeader.instance == 0)
997 {
998 MmeS4SgsnsOverloadControlInformationInCreateBearerResponse groupedIeInstance =
999 dynamic_cast<
1000 MmeS4SgsnsOverloadControlInformationInCreateBearerResponse&>(ieObject.getGroupedIe(msgType, 0));
1001 rc = groupedIeInstance.decodeMmeS4SgsnsOverloadControlInformationInCreateBearerResponse(buffer, data.mmeS4SgsnsOverloadControlInformation, ieHeader.length);
1002
1003 data.mmeS4SgsnsOverloadControlInformationIePresent = true;
1004 if (!(rc))
1005 {
1006 errorStream.add((char *)"Failed to decode IE: mmeS4SgsnsOverloadControlInformation\n");
1007 return false;
1008 }
1009 }
1010 else if(ieHeader.instance == 1)
1011 {
1012 SgwsOverloadControlInformationInCreateBearerResponse groupedIeInstance =
1013 dynamic_cast<
1014 SgwsOverloadControlInformationInCreateBearerResponse&>(ieObject.getGroupedIe(msgType, 1));
1015 rc = groupedIeInstance.decodeSgwsOverloadControlInformationInCreateBearerResponse(buffer, data.sgwsOverloadControlInformation, ieHeader.length);
1016
1017 data.sgwsOverloadControlInformationIePresent = true;
1018 if (!(rc))
1019 {
1020 errorStream.add((char *)"Failed to decode IE: sgwsOverloadControlInformation\n");
1021 return false;
1022 }
1023 }
1024 else if(ieHeader.instance == 2)
1025 {
1026 TwanEpdgsOverloadControlInformationInCreateBearerResponse groupedIeInstance =
1027 dynamic_cast<
1028 TwanEpdgsOverloadControlInformationInCreateBearerResponse&>(ieObject.getGroupedIe(msgType, 2));
1029 rc = groupedIeInstance.decodeTwanEpdgsOverloadControlInformationInCreateBearerResponse(buffer, data.twanEpdgsOverloadControlInformation, ieHeader.length);
1030
1031 data.twanEpdgsOverloadControlInformationIePresent = true;
1032 if (!(rc))
1033 {
1034 errorStream.add((char *)"Failed to decode IE: twanEpdgsOverloadControlInformation\n");
1035 return false;
1036 }
1037 }
1038
1039 else
1040 {
1041 // Unknown IE instance print error
1042 errorStream.add((char *)"Unknown IE Type: ");
1043 errorStream.add(ieHeader.ieType);
1044 errorStream.endOfLine();
1045 buffer.skipBytes(ieHeader.length);
1046 }
1047 break;
1048 }
1049
1050 case IpAddressIeType:
1051 {
1052 IpAddressIe ieObject =
1053 dynamic_cast<
1054 IpAddressIe&>(GtpV2IeFactory::getInstance().getIeObject(IpAddressIeType));
1055
1056 if(ieHeader.instance == 0)
1057 {
1058 rc = ieObject.decodeIpAddressIe(buffer, data.mmeS4SgsnIdentifier, ieHeader.length);
1059
1060 data.mmeS4SgsnIdentifierIePresent = true;
1061 if (!(rc))
1062 {
1063 errorStream.add((char *)"Failed to decode IE: mmeS4SgsnIdentifier\n");
1064 return false;
1065 }
1066 }
1067 else if(ieHeader.instance == 0)
1068 {
1069 rc = ieObject.decodeIpAddressIe(buffer, data.ueLocalIpAddress, ieHeader.length);
1070
1071 data.ueLocalIpAddressIePresent = true;
1072 if (!(rc))
1073 {
1074 errorStream.add((char *)"Failed to decode IE: ueLocalIpAddress\n");
1075 return false;
1076 }
1077 }
1078
1079 else
1080 {
1081 // Unknown IE instance print error
1082 errorStream.add((char *)"Unknown IE Type: ");
1083 errorStream.add(ieHeader.ieType);
1084 errorStream.endOfLine();
1085 buffer.skipBytes(ieHeader.length);
1086 }
1087 break;
1088 }
1089
1090 case TwanIdentifierTimestampIeType:
1091 {
1092 TwanIdentifierTimestampIe ieObject =
1093 dynamic_cast<
1094 TwanIdentifierTimestampIe&>(GtpV2IeFactory::getInstance().getIeObject(TwanIdentifierTimestampIeType));
1095
1096 if(ieHeader.instance == 1)
1097 {
1098 rc = ieObject.decodeTwanIdentifierTimestampIe(buffer, data.wlanLocationTimestamp, ieHeader.length);
1099
1100 data.wlanLocationTimestampIePresent = true;
1101 if (!(rc))
1102 {
1103 errorStream.add((char *)"Failed to decode IE: wlanLocationTimestamp\n");
1104 return false;
1105 }
1106 }
1107
1108 else
1109 {
1110 // Unknown IE instance print error
1111 errorStream.add((char *)"Unknown IE Type: ");
1112 errorStream.add(ieHeader.ieType);
1113 errorStream.endOfLine();
1114 buffer.skipBytes(ieHeader.length);
1115 }
1116 break;
1117 }
1118
1119 case PortNumberIeType:
1120 {
1121 PortNumberIe ieObject =
1122 dynamic_cast<
1123 PortNumberIe&>(GtpV2IeFactory::getInstance().getIeObject(PortNumberIeType));
1124
1125 if(ieHeader.instance == 0)
1126 {
1127 rc = ieObject.decodePortNumberIe(buffer, data.ueUdpPort, ieHeader.length);
1128
1129 data.ueUdpPortIePresent = true;
1130 if (!(rc))
1131 {
1132 errorStream.add((char *)"Failed to decode IE: ueUdpPort\n");
1133 return false;
1134 }
1135 }
1136 else if(ieHeader.instance == 1)
1137 {
1138 rc = ieObject.decodePortNumberIe(buffer, data.ueTcpPort, ieHeader.length);
1139
1140 data.ueTcpPortIePresent = true;
1141 if (!(rc))
1142 {
1143 errorStream.add((char *)"Failed to decode IE: ueTcpPort\n");
1144 return false;
1145 }
1146 }
1147
1148 else
1149 {
1150 // Unknown IE instance print error
1151 errorStream.add((char *)"Unknown IE Type: ");
1152 errorStream.add(ieHeader.ieType);
1153 errorStream.endOfLine();
1154 buffer.skipBytes(ieHeader.length);
1155 }
1156 break;
1157 }
1158
1159 case FContainerIeType:
1160 {
1161 FContainerIe ieObject =
1162 dynamic_cast<
1163 FContainerIe&>(GtpV2IeFactory::getInstance().getIeObject(FContainerIeType));
1164
1165 if(ieHeader.instance == 0)
1166 {
1167 rc = ieObject.decodeFContainerIe(buffer, data.nbifomContainer, ieHeader.length);
1168
1169 data.nbifomContainerIePresent = true;
1170 if (!(rc))
1171 {
1172 errorStream.add((char *)"Failed to decode IE: nbifomContainer\n");
1173 return false;
1174 }
1175 }
1176
1177 else
1178 {
1179 // Unknown IE instance print error
1180 errorStream.add((char *)"Unknown IE Type: ");
1181 errorStream.add(ieHeader.ieType);
1182 errorStream.endOfLine();
1183 buffer.skipBytes(ieHeader.length);
1184 }
1185 break;
1186 }
1187
1188 default:
1189 {
1190 // Unknown IE print error
1191 errorStream.add((char *)"Unknown IE Type: ");
1192 errorStream.add(ieHeader.ieType);
1193 errorStream.endOfLine();
1194 buffer.skipBytes(ieHeader.length);
1195 }
1196 }
1197 }
1198 return rc; // TODO validations
1199}
1200
1201void CreateBearerResponseMsg::
1202displayCreateBearerResponseMsgData_v(CreateBearerResponseMsgData const &data, Debug &stream)
1203{
1204 stream.incrIndent();
1205 stream.add((char *)"CreateBearerResponseMsg:");
1206 stream.endOfLine();
1207 stream.incrIndent();
1208
1209
1210 stream.add((char *)"IE - cause:");
1211 stream.endOfLine();
1212 CauseIe cause=
1213 dynamic_cast<
1214 CauseIe&>(GtpV2IeFactory::getInstance().getIeObject(CauseIeType));
1215 cause.displayCauseIe_v(data.cause, stream);
1216
1217
1218 Uint8 displayCount;
1219
1220 displayCount = data.bearerContextsCount;
1221 if (displayCount > 11)
1222 {
1223 stream.add((char *)"Invalid data more than 11 instances");
1224 stream.endOfLine();
1225 stream.add((char *)"Displaying only 11");
1226 stream.endOfLine();
1227 displayCount = 11;
1228 }
1229 for (Uint8 i = 0; i < displayCount; i++)
1230 {
1231 stream.add((char *)"IE - bearerContexts:");
1232 stream.endOfLine();
1233 BearerContextIe bearerContext=
1234 dynamic_cast<
1235 BearerContextIe&>(GtpV2IeFactory::getInstance().getIeObject(BearerContextIeType));
1236 BearerContextsInCreateBearerResponse groupedIeInstance =
1237 dynamic_cast<
1238 BearerContextsInCreateBearerResponse&>(bearerContext.getGroupedIe(msgType, 0));
1239 groupedIeInstance.displayBearerContextsInCreateBearerResponseData_v(data.bearerContexts[i], stream);
1240
1241 }
1242 if (data.recoveryIePresent)
1243 {
1244
1245
1246 stream.add((char *)"IE - recovery:");
1247 stream.endOfLine();
1248 RecoveryIe recovery=
1249 dynamic_cast<
1250 RecoveryIe&>(GtpV2IeFactory::getInstance().getIeObject(RecoveryIeType));
1251 recovery.displayRecoveryIe_v(data.recovery, stream);
1252
1253 }
1254 if (data.mmeFqCsidIePresent)
1255 {
1256
1257
1258 stream.add((char *)"IE - mmeFqCsid:");
1259 stream.endOfLine();
1260 FqCsidIe fqCsid=
1261 dynamic_cast<
1262 FqCsidIe&>(GtpV2IeFactory::getInstance().getIeObject(FqCsidIeType));
1263 fqCsid.displayFqCsidIe_v(data.mmeFqCsid, stream);
1264
1265 }
1266 if (data.sgwFqCsidIePresent)
1267 {
1268
1269
1270 stream.add((char *)"IE - sgwFqCsid:");
1271 stream.endOfLine();
1272 FqCsidIe fqCsid=
1273 dynamic_cast<
1274 FqCsidIe&>(GtpV2IeFactory::getInstance().getIeObject(FqCsidIeType));
1275 fqCsid.displayFqCsidIe_v(data.sgwFqCsid, stream);
1276
1277 }
1278 if (data.epdgFqCsidIePresent)
1279 {
1280
1281
1282 stream.add((char *)"IE - epdgFqCsid:");
1283 stream.endOfLine();
1284 FqCsidIe fqCsid=
1285 dynamic_cast<
1286 FqCsidIe&>(GtpV2IeFactory::getInstance().getIeObject(FqCsidIeType));
1287 fqCsid.displayFqCsidIe_v(data.epdgFqCsid, stream);
1288
1289 }
1290 if (data.twanFqCsidIePresent)
1291 {
1292
1293
1294 stream.add((char *)"IE - twanFqCsid:");
1295 stream.endOfLine();
1296 FqCsidIe fqCsid=
1297 dynamic_cast<
1298 FqCsidIe&>(GtpV2IeFactory::getInstance().getIeObject(FqCsidIeType));
1299 fqCsid.displayFqCsidIe_v(data.twanFqCsid, stream);
1300
1301 }
1302 if (data.protocolConfigurationOptionsIePresent)
1303 {
1304
1305
1306 stream.add((char *)"IE - protocolConfigurationOptions:");
1307 stream.endOfLine();
1308 PcoIe pco=
1309 dynamic_cast<
1310 PcoIe&>(GtpV2IeFactory::getInstance().getIeObject(PcoIeType));
1311 pco.displayPcoIe_v(data.protocolConfigurationOptions, stream);
1312
1313 }
1314 if (data.ueTimeZoneIePresent)
1315 {
1316
1317
1318 stream.add((char *)"IE - ueTimeZone:");
1319 stream.endOfLine();
1320 UeTimeZoneIe ueTimeZone=
1321 dynamic_cast<
1322 UeTimeZoneIe&>(GtpV2IeFactory::getInstance().getIeObject(UeTimeZoneIeType));
1323 ueTimeZone.displayUeTimeZoneIe_v(data.ueTimeZone, stream);
1324
1325 }
1326 if (data.userLocationInformationIePresent)
1327 {
1328
1329
1330 stream.add((char *)"IE - userLocationInformation:");
1331 stream.endOfLine();
1332 UliIe uli=
1333 dynamic_cast<
1334 UliIe&>(GtpV2IeFactory::getInstance().getIeObject(UliIeType));
1335 uli.displayUliIe_v(data.userLocationInformation, stream);
1336
1337 }
1338 if (data.twanIdentifierIePresent)
1339 {
1340
1341
1342 stream.add((char *)"IE - twanIdentifier:");
1343 stream.endOfLine();
1344 TwanIdentifierIe twanIdentifier=
1345 dynamic_cast<
1346 TwanIdentifierIe&>(GtpV2IeFactory::getInstance().getIeObject(TwanIdentifierIeType));
1347 twanIdentifier.displayTwanIdentifierIe_v(data.twanIdentifier, stream);
1348
1349 }
1350 if (data.mmeS4SgsnsOverloadControlInformationIePresent)
1351 {
1352
1353
1354 stream.add((char *)"IE - mmeS4SgsnsOverloadControlInformation:");
1355 stream.endOfLine();
1356 OverloadControlInformationIe overloadControlInformation=
1357 dynamic_cast<
1358 OverloadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(OverloadControlInformationIeType));
1359 MmeS4SgsnsOverloadControlInformationInCreateBearerResponse groupedIeInstance =
1360 dynamic_cast<
1361 MmeS4SgsnsOverloadControlInformationInCreateBearerResponse&>(overloadControlInformation.getGroupedIe(msgType, 0));
1362 groupedIeInstance.displayMmeS4SgsnsOverloadControlInformationInCreateBearerResponseData_v(data.mmeS4SgsnsOverloadControlInformation, stream);
1363
1364 }
1365 if (data.sgwsOverloadControlInformationIePresent)
1366 {
1367
1368
1369 stream.add((char *)"IE - sgwsOverloadControlInformation:");
1370 stream.endOfLine();
1371 OverloadControlInformationIe overloadControlInformation=
1372 dynamic_cast<
1373 OverloadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(OverloadControlInformationIeType));
1374 SgwsOverloadControlInformationInCreateBearerResponse groupedIeInstance =
1375 dynamic_cast<
1376 SgwsOverloadControlInformationInCreateBearerResponse&>(overloadControlInformation.getGroupedIe(msgType, 1));
1377 groupedIeInstance.displaySgwsOverloadControlInformationInCreateBearerResponseData_v(data.sgwsOverloadControlInformation, stream);
1378
1379 }
1380 if (data.mmeS4SgsnIdentifierIePresent)
1381 {
1382
1383
1384 stream.add((char *)"IE - mmeS4SgsnIdentifier:");
1385 stream.endOfLine();
1386 IpAddressIe ipAddress=
1387 dynamic_cast<
1388 IpAddressIe&>(GtpV2IeFactory::getInstance().getIeObject(IpAddressIeType));
1389 ipAddress.displayIpAddressIe_v(data.mmeS4SgsnIdentifier, stream);
1390
1391 }
1392 if (data.twanEpdgsOverloadControlInformationIePresent)
1393 {
1394
1395
1396 stream.add((char *)"IE - twanEpdgsOverloadControlInformation:");
1397 stream.endOfLine();
1398 OverloadControlInformationIe overloadControlInformation=
1399 dynamic_cast<
1400 OverloadControlInformationIe&>(GtpV2IeFactory::getInstance().getIeObject(OverloadControlInformationIeType));
1401 TwanEpdgsOverloadControlInformationInCreateBearerResponse groupedIeInstance =
1402 dynamic_cast<
1403 TwanEpdgsOverloadControlInformationInCreateBearerResponse&>(overloadControlInformation.getGroupedIe(msgType, 2));
1404 groupedIeInstance.displayTwanEpdgsOverloadControlInformationInCreateBearerResponseData_v(data.twanEpdgsOverloadControlInformation, stream);
1405
1406 }
1407 if (data.wlanLocationInformationIePresent)
1408 {
1409
1410
1411 stream.add((char *)"IE - wlanLocationInformation:");
1412 stream.endOfLine();
1413 TwanIdentifierIe twanIdentifier=
1414 dynamic_cast<
1415 TwanIdentifierIe&>(GtpV2IeFactory::getInstance().getIeObject(TwanIdentifierIeType));
1416 twanIdentifier.displayTwanIdentifierIe_v(data.wlanLocationInformation, stream);
1417
1418 }
1419 if (data.wlanLocationTimestampIePresent)
1420 {
1421
1422
1423 stream.add((char *)"IE - wlanLocationTimestamp:");
1424 stream.endOfLine();
1425 TwanIdentifierTimestampIe twanIdentifierTimestamp=
1426 dynamic_cast<
1427 TwanIdentifierTimestampIe&>(GtpV2IeFactory::getInstance().getIeObject(TwanIdentifierTimestampIeType));
1428 twanIdentifierTimestamp.displayTwanIdentifierTimestampIe_v(data.wlanLocationTimestamp, stream);
1429
1430 }
1431 if (data.ueLocalIpAddressIePresent)
1432 {
1433
1434
1435 stream.add((char *)"IE - ueLocalIpAddress:");
1436 stream.endOfLine();
1437 IpAddressIe ipAddress=
1438 dynamic_cast<
1439 IpAddressIe&>(GtpV2IeFactory::getInstance().getIeObject(IpAddressIeType));
1440 ipAddress.displayIpAddressIe_v(data.ueLocalIpAddress, stream);
1441
1442 }
1443 if (data.ueUdpPortIePresent)
1444 {
1445
1446
1447 stream.add((char *)"IE - ueUdpPort:");
1448 stream.endOfLine();
1449 PortNumberIe portNumber=
1450 dynamic_cast<
1451 PortNumberIe&>(GtpV2IeFactory::getInstance().getIeObject(PortNumberIeType));
1452 portNumber.displayPortNumberIe_v(data.ueUdpPort, stream);
1453
1454 }
1455 if (data.nbifomContainerIePresent)
1456 {
1457
1458
1459 stream.add((char *)"IE - nbifomContainer:");
1460 stream.endOfLine();
1461 FContainerIe fContainer=
1462 dynamic_cast<
1463 FContainerIe&>(GtpV2IeFactory::getInstance().getIeObject(FContainerIeType));
1464 fContainer.displayFContainerIe_v(data.nbifomContainer, stream);
1465
1466 }
1467 if (data.ueTcpPortIePresent)
1468 {
1469
1470
1471 stream.add((char *)"IE - ueTcpPort:");
1472 stream.endOfLine();
1473 PortNumberIe portNumber=
1474 dynamic_cast<
1475 PortNumberIe&>(GtpV2IeFactory::getInstance().getIeObject(PortNumberIeType));
1476 portNumber.displayPortNumberIe_v(data.ueTcpPort, stream);
1477
1478 }
1479
1480 stream.decrIndent();
1481 stream.decrIndent();
1482}
1483
1484