blob: 0c897e90519f5b675ea6098b93eb3ae35e9ad417 [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 "bearerContextsInCreateBearerResponse.h"
16#include "manual/gtpV2Ie.h"
17#include "gtpV2IeFactory.h"
18#include "ebiIe.h"
19#include "causeIe.h"
20#include "fTeidIe.h"
21#include "fTeidIe.h"
22#include "fTeidIe.h"
23#include "fTeidIe.h"
24#include "fTeidIe.h"
25#include "fTeidIe.h"
26#include "fTeidIe.h"
27#include "fTeidIe.h"
28#include "fTeidIe.h"
29#include "fTeidIe.h"
30#include "fTeidIe.h"
31#include "fTeidIe.h"
32#include "pcoIe.h"
33#include "ranNasCauseIe.h"
34#include "epcoIe.h"
35
36BearerContextsInCreateBearerResponse::
37BearerContextsInCreateBearerResponse()
38{
39 Uint16 mandIe;
40 mandIe = EbiIeType;
41 mandIe = (mandIe << 8) | 0; // epsBearerId
42 mandatoryIeSet.insert(mandIe);
43 mandIe = CauseIeType;
44 mandIe = (mandIe << 8) | 0; // cause
45 mandatoryIeSet.insert(mandIe);
46
47}
48
49BearerContextsInCreateBearerResponse::
50~BearerContextsInCreateBearerResponse()
51{
52
53}
54bool BearerContextsInCreateBearerResponse::
55encodeBearerContextsInCreateBearerResponse(MsgBuffer &buffer,
56 BearerContextsInCreateBearerResponseData
57 const &data)
58{
59 bool rc = false;
60 GtpV2IeHeader header;
61 Uint16 startIndex = 0;
62 Uint16 endIndex = 0;
63 Uint16 length = 0;
64
65
66
67 // Encode the Ie Header
68 header.ieType = EbiIeType;
69 header.instance = 0;
70 header.length = 0; // We will encode the IE first and then update the length
71 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
72 startIndex = buffer.getCurrentIndex();
73 EbiIe ebi=
74 dynamic_cast<
75 EbiIe&>(GtpV2IeFactory::getInstance().getIeObject(EbiIeType));
76 rc = ebi.encodeEbiIe(buffer, data.epsBearerId);
77 endIndex = buffer.getCurrentIndex();
78 length = endIndex - startIndex;
79
80 // encode the length value now
81 buffer.goToIndex(startIndex - 3);
82 buffer.writeUint16(length, false);
83 buffer.goToIndex(endIndex);
84 if (!(rc))
85 {
86 errorStream.add((char *)"Failed to encode IE: epsBearerId\n");
87 return false;
88 }
89
90
91
92 // Encode the Ie Header
93 header.ieType = CauseIeType;
94 header.instance = 0;
95 header.length = 0; // We will encode the IE first and then update the length
96 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
97 startIndex = buffer.getCurrentIndex();
98 CauseIe cause=
99 dynamic_cast<
100 CauseIe&>(GtpV2IeFactory::getInstance().getIeObject(CauseIeType));
101 rc = cause.encodeCauseIe(buffer, data.cause);
102 endIndex = buffer.getCurrentIndex();
103 length = endIndex - startIndex;
104
105 // encode the length value now
106 buffer.goToIndex(startIndex - 3);
107 buffer.writeUint16(length, false);
108 buffer.goToIndex(endIndex);
109 if (!(rc))
110 {
111 errorStream.add((char *)"Failed to encode IE: cause\n");
112 return false;
113 }
114
115 if (data.s1UEnodebFTeidIePresent)
116 {
117
118 // Encode the Ie Header
119 header.ieType = FTeidIeType;
120 header.instance = 0;
121 header.length = 0; // We will encode the IE first and then update the length
122 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
123 startIndex = buffer.getCurrentIndex();
124 FTeidIe fTeid=
125 dynamic_cast<
126 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
127 rc = fTeid.encodeFTeidIe(buffer, data.s1UEnodebFTeid);
128 endIndex = buffer.getCurrentIndex();
129 length = endIndex - startIndex;
130
131 // encode the length value now
132 buffer.goToIndex(startIndex - 3);
133 buffer.writeUint16(length, false);
134 buffer.goToIndex(endIndex);
135
136 if (!(rc))
137 {
138 errorStream.add((char *)"Failed to encode IE: s1UEnodebFTeid\n");
139 return false;
140 }
141 }
142
143 if (data.s1USgwFTeidIePresent)
144 {
145
146 // Encode the Ie Header
147 header.ieType = FTeidIeType;
148 header.instance = 1;
149 header.length = 0; // We will encode the IE first and then update the length
150 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
151 startIndex = buffer.getCurrentIndex();
152 FTeidIe fTeid=
153 dynamic_cast<
154 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
155 rc = fTeid.encodeFTeidIe(buffer, data.s1USgwFTeid);
156 endIndex = buffer.getCurrentIndex();
157 length = endIndex - startIndex;
158
159 // encode the length value now
160 buffer.goToIndex(startIndex - 3);
161 buffer.writeUint16(length, false);
162 buffer.goToIndex(endIndex);
163
164 if (!(rc))
165 {
166 errorStream.add((char *)"Failed to encode IE: s1USgwFTeid\n");
167 return false;
168 }
169 }
170
171 if (data.s58USgwFTeidIePresent)
172 {
173
174 // Encode the Ie Header
175 header.ieType = FTeidIeType;
176 header.instance = 2;
177 header.length = 0; // We will encode the IE first and then update the length
178 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
179 startIndex = buffer.getCurrentIndex();
180 FTeidIe fTeid=
181 dynamic_cast<
182 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
183 rc = fTeid.encodeFTeidIe(buffer, data.s58USgwFTeid);
184 endIndex = buffer.getCurrentIndex();
185 length = endIndex - startIndex;
186
187 // encode the length value now
188 buffer.goToIndex(startIndex - 3);
189 buffer.writeUint16(length, false);
190 buffer.goToIndex(endIndex);
191
192 if (!(rc))
193 {
194 errorStream.add((char *)"Failed to encode IE: s58USgwFTeid\n");
195 return false;
196 }
197 }
198
199 if (data.s58UPgwFTeidIePresent)
200 {
201
202 // Encode the Ie Header
203 header.ieType = FTeidIeType;
204 header.instance = 3;
205 header.length = 0; // We will encode the IE first and then update the length
206 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
207 startIndex = buffer.getCurrentIndex();
208 FTeidIe fTeid=
209 dynamic_cast<
210 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
211 rc = fTeid.encodeFTeidIe(buffer, data.s58UPgwFTeid);
212 endIndex = buffer.getCurrentIndex();
213 length = endIndex - startIndex;
214
215 // encode the length value now
216 buffer.goToIndex(startIndex - 3);
217 buffer.writeUint16(length, false);
218 buffer.goToIndex(endIndex);
219
220 if (!(rc))
221 {
222 errorStream.add((char *)"Failed to encode IE: s58UPgwFTeid\n");
223 return false;
224 }
225 }
226
227 if (data.s12RncFTeidIePresent)
228 {
229
230 // Encode the Ie Header
231 header.ieType = FTeidIeType;
232 header.instance = 4;
233 header.length = 0; // We will encode the IE first and then update the length
234 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
235 startIndex = buffer.getCurrentIndex();
236 FTeidIe fTeid=
237 dynamic_cast<
238 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
239 rc = fTeid.encodeFTeidIe(buffer, data.s12RncFTeid);
240 endIndex = buffer.getCurrentIndex();
241 length = endIndex - startIndex;
242
243 // encode the length value now
244 buffer.goToIndex(startIndex - 3);
245 buffer.writeUint16(length, false);
246 buffer.goToIndex(endIndex);
247
248 if (!(rc))
249 {
250 errorStream.add((char *)"Failed to encode IE: s12RncFTeid\n");
251 return false;
252 }
253 }
254
255 if (data.s12SgwFTeidIePresent)
256 {
257
258 // Encode the Ie Header
259 header.ieType = FTeidIeType;
260 header.instance = 5;
261 header.length = 0; // We will encode the IE first and then update the length
262 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
263 startIndex = buffer.getCurrentIndex();
264 FTeidIe fTeid=
265 dynamic_cast<
266 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
267 rc = fTeid.encodeFTeidIe(buffer, data.s12SgwFTeid);
268 endIndex = buffer.getCurrentIndex();
269 length = endIndex - startIndex;
270
271 // encode the length value now
272 buffer.goToIndex(startIndex - 3);
273 buffer.writeUint16(length, false);
274 buffer.goToIndex(endIndex);
275
276 if (!(rc))
277 {
278 errorStream.add((char *)"Failed to encode IE: s12SgwFTeid\n");
279 return false;
280 }
281 }
282
283 if (data.s4USgsnFTeidIePresent)
284 {
285
286 // Encode the Ie Header
287 header.ieType = FTeidIeType;
288 header.instance = 6;
289 header.length = 0; // We will encode the IE first and then update the length
290 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
291 startIndex = buffer.getCurrentIndex();
292 FTeidIe fTeid=
293 dynamic_cast<
294 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
295 rc = fTeid.encodeFTeidIe(buffer, data.s4USgsnFTeid);
296 endIndex = buffer.getCurrentIndex();
297 length = endIndex - startIndex;
298
299 // encode the length value now
300 buffer.goToIndex(startIndex - 3);
301 buffer.writeUint16(length, false);
302 buffer.goToIndex(endIndex);
303
304 if (!(rc))
305 {
306 errorStream.add((char *)"Failed to encode IE: s4USgsnFTeid\n");
307 return false;
308 }
309 }
310
311 if (data.s4USgwFTeidIePresent)
312 {
313
314 // Encode the Ie Header
315 header.ieType = FTeidIeType;
316 header.instance = 7;
317 header.length = 0; // We will encode the IE first and then update the length
318 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
319 startIndex = buffer.getCurrentIndex();
320 FTeidIe fTeid=
321 dynamic_cast<
322 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
323 rc = fTeid.encodeFTeidIe(buffer, data.s4USgwFTeid);
324 endIndex = buffer.getCurrentIndex();
325 length = endIndex - startIndex;
326
327 // encode the length value now
328 buffer.goToIndex(startIndex - 3);
329 buffer.writeUint16(length, false);
330 buffer.goToIndex(endIndex);
331
332 if (!(rc))
333 {
334 errorStream.add((char *)"Failed to encode IE: s4USgwFTeid\n");
335 return false;
336 }
337 }
338
339 if (data.s2bUEpdgFTeidIePresent)
340 {
341
342 // Encode the Ie Header
343 header.ieType = FTeidIeType;
344 header.instance = 8;
345 header.length = 0; // We will encode the IE first and then update the length
346 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
347 startIndex = buffer.getCurrentIndex();
348 FTeidIe fTeid=
349 dynamic_cast<
350 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
351 rc = fTeid.encodeFTeidIe(buffer, data.s2bUEpdgFTeid);
352 endIndex = buffer.getCurrentIndex();
353 length = endIndex - startIndex;
354
355 // encode the length value now
356 buffer.goToIndex(startIndex - 3);
357 buffer.writeUint16(length, false);
358 buffer.goToIndex(endIndex);
359
360 if (!(rc))
361 {
362 errorStream.add((char *)"Failed to encode IE: s2bUEpdgFTeid\n");
363 return false;
364 }
365 }
366
367 if (data.s2bUPgwFTeidIePresent)
368 {
369
370 // Encode the Ie Header
371 header.ieType = FTeidIeType;
372 header.instance = 9;
373 header.length = 0; // We will encode the IE first and then update the length
374 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
375 startIndex = buffer.getCurrentIndex();
376 FTeidIe fTeid=
377 dynamic_cast<
378 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
379 rc = fTeid.encodeFTeidIe(buffer, data.s2bUPgwFTeid);
380 endIndex = buffer.getCurrentIndex();
381 length = endIndex - startIndex;
382
383 // encode the length value now
384 buffer.goToIndex(startIndex - 3);
385 buffer.writeUint16(length, false);
386 buffer.goToIndex(endIndex);
387
388 if (!(rc))
389 {
390 errorStream.add((char *)"Failed to encode IE: s2bUPgwFTeid\n");
391 return false;
392 }
393 }
394
395 if (data.s2aUTwanFTeidIePresent)
396 {
397
398 // Encode the Ie Header
399 header.ieType = FTeidIeType;
400 header.instance = 10;
401 header.length = 0; // We will encode the IE first and then update the length
402 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
403 startIndex = buffer.getCurrentIndex();
404 FTeidIe fTeid=
405 dynamic_cast<
406 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
407 rc = fTeid.encodeFTeidIe(buffer, data.s2aUTwanFTeid);
408 endIndex = buffer.getCurrentIndex();
409 length = endIndex - startIndex;
410
411 // encode the length value now
412 buffer.goToIndex(startIndex - 3);
413 buffer.writeUint16(length, false);
414 buffer.goToIndex(endIndex);
415
416 if (!(rc))
417 {
418 errorStream.add((char *)"Failed to encode IE: s2aUTwanFTeid\n");
419 return false;
420 }
421 }
422
423 if (data.s2aUPgwFTeidIePresent)
424 {
425
426 // Encode the Ie Header
427 header.ieType = FTeidIeType;
428 header.instance = 11;
429 header.length = 0; // We will encode the IE first and then update the length
430 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
431 startIndex = buffer.getCurrentIndex();
432 FTeidIe fTeid=
433 dynamic_cast<
434 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
435 rc = fTeid.encodeFTeidIe(buffer, data.s2aUPgwFTeid);
436 endIndex = buffer.getCurrentIndex();
437 length = endIndex - startIndex;
438
439 // encode the length value now
440 buffer.goToIndex(startIndex - 3);
441 buffer.writeUint16(length, false);
442 buffer.goToIndex(endIndex);
443
444 if (!(rc))
445 {
446 errorStream.add((char *)"Failed to encode IE: s2aUPgwFTeid\n");
447 return false;
448 }
449 }
450
451 if (data.protocolConfigurationOptionsIePresent)
452 {
453
454 // Encode the Ie Header
455 header.ieType = PcoIeType;
456 header.instance = 0;
457 header.length = 0; // We will encode the IE first and then update the length
458 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
459 startIndex = buffer.getCurrentIndex();
460 PcoIe pco=
461 dynamic_cast<
462 PcoIe&>(GtpV2IeFactory::getInstance().getIeObject(PcoIeType));
463 rc = pco.encodePcoIe(buffer, data.protocolConfigurationOptions);
464 endIndex = buffer.getCurrentIndex();
465 length = endIndex - startIndex;
466
467 // encode the length value now
468 buffer.goToIndex(startIndex - 3);
469 buffer.writeUint16(length, false);
470 buffer.goToIndex(endIndex);
471
472 if (!(rc))
473 {
474 errorStream.add((char *)"Failed to encode IE: protocolConfigurationOptions\n");
475 return false;
476 }
477 }
478
479 if (data.ranNasCauseIePresent)
480 {
481
482 // Encode the Ie Header
483 header.ieType = RanNasCauseIeType;
484 header.instance = 0;
485 header.length = 0; // We will encode the IE first and then update the length
486 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
487 startIndex = buffer.getCurrentIndex();
488 RanNasCauseIe ranNasCause=
489 dynamic_cast<
490 RanNasCauseIe&>(GtpV2IeFactory::getInstance().getIeObject(RanNasCauseIeType));
491 rc = ranNasCause.encodeRanNasCauseIe(buffer, data.ranNasCause);
492 endIndex = buffer.getCurrentIndex();
493 length = endIndex - startIndex;
494
495 // encode the length value now
496 buffer.goToIndex(startIndex - 3);
497 buffer.writeUint16(length, false);
498 buffer.goToIndex(endIndex);
499
500 if (!(rc))
501 {
502 errorStream.add((char *)"Failed to encode IE: ranNasCause\n");
503 return false;
504 }
505 }
506
507 if (data.extendedProtocolConfigurationOptionsIePresent)
508 {
509
510 // Encode the Ie Header
511 header.ieType = EpcoIeType;
512 header.instance = 0;
513 header.length = 0; // We will encode the IE first and then update the length
514 GtpV2Ie::encodeGtpV2IeHeader(buffer, header);
515 startIndex = buffer.getCurrentIndex();
516 EpcoIe epco=
517 dynamic_cast<
518 EpcoIe&>(GtpV2IeFactory::getInstance().getIeObject(EpcoIeType));
519 rc = epco.encodeEpcoIe(buffer, data.extendedProtocolConfigurationOptions);
520 endIndex = buffer.getCurrentIndex();
521 length = endIndex - startIndex;
522
523 // encode the length value now
524 buffer.goToIndex(startIndex - 3);
525 buffer.writeUint16(length, false);
526 buffer.goToIndex(endIndex);
527
528 if (!(rc))
529 {
530 errorStream.add((char *)"Failed to encode IE: extendedProtocolConfigurationOptions\n");
531 return false;
532 }
533 }
534 return rc;
535}
536
537bool BearerContextsInCreateBearerResponse::
538decodeBearerContextsInCreateBearerResponse(MsgBuffer &buffer,
539 BearerContextsInCreateBearerResponseData
540 &data, Uint16 length)
541{
542
543 bool rc = false;
544 GtpV2IeHeader ieHeader;
545 set<Uint16> mandatoryIeLocalList = mandatoryIeSet;
546 while (buffer.lengthLeft() > IE_HEADER_SIZE)
547 {
548 GtpV2Ie::decodeGtpV2IeHeader(buffer, ieHeader);
549 if (ieHeader.length > buffer.lengthLeft())
550 {
551 // We do not have enough bytes left in the message for this IE
552 errorStream.add((char *)"IE Length exceeds beyond message boundary\n");
553 errorStream.add((char *)" Offending IE Type: ");
554 errorStream.add(ieHeader.ieType);
555 errorStream.add((char *)"\n Ie Length in Header: ");
556 errorStream.add(ieHeader.length);
557 errorStream.add((char *)"\n Bytes left in message: ");
558 errorStream.add(buffer.lengthLeft());
559 errorStream.endOfLine();
560 return false;
561 }
562
563 switch (ieHeader.ieType){
564 case EbiIeType:
565 {
566 EbiIe ieObject =
567 dynamic_cast<
568 EbiIe&>(GtpV2IeFactory::getInstance().
569 getIeObject(EbiIeType));
570
571
572 if(ieHeader.instance == 0)
573 {
574
575 rc = ieObject.decodeEbiIe(buffer, data.epsBearerId, ieHeader.length);
576
577 if (!(rc))
578 {
579 errorStream.add((char *)"Failed to decode IE: epsBearerId\n");
580 return false;
581 }
582 Uint16 mandIe = EbiIeType;
583 mandIe = (mandIe << 8) | 0;
584 mandatoryIeLocalList.erase(mandIe);
585 }
586 else
587 {
588 // Unknown IE instance print error TODO
589 errorStream.add((char *)"Unknown IE Type: ");
590 errorStream.add(ieHeader.ieType);
591 errorStream.endOfLine();
592 buffer.skipBytes(ieHeader.length);
593 }
594 break;
595 }
596 case CauseIeType:
597 {
598 CauseIe ieObject =
599 dynamic_cast<
600 CauseIe&>(GtpV2IeFactory::getInstance().
601 getIeObject(CauseIeType));
602
603
604 if(ieHeader.instance == 0)
605 {
606
607 rc = ieObject.decodeCauseIe(buffer, data.cause, ieHeader.length);
608
609 if (!(rc))
610 {
611 errorStream.add((char *)"Failed to decode IE: cause\n");
612 return false;
613 }
614 Uint16 mandIe = CauseIeType;
615 mandIe = (mandIe << 8) | 0;
616 mandatoryIeLocalList.erase(mandIe);
617 }
618 else
619 {
620 // Unknown IE instance print error TODO
621 errorStream.add((char *)"Unknown IE Type: ");
622 errorStream.add(ieHeader.ieType);
623 errorStream.endOfLine();
624 buffer.skipBytes(ieHeader.length);
625 }
626 break;
627 }
628 case FTeidIeType:
629 {
630 FTeidIe ieObject =
631 dynamic_cast<
632 FTeidIe&>(GtpV2IeFactory::getInstance().
633 getIeObject(FTeidIeType));
634
635
636 if(ieHeader.instance == 0)
637 {
638
639 rc = ieObject.decodeFTeidIe(buffer, data.s1UEnodebFTeid, ieHeader.length);
640
641 data.s1UEnodebFTeidIePresent = true;
642 if (!(rc))
643 {
644 errorStream.add((char *)"Failed to decode IE: s1UEnodebFTeid\n");
645 return false;
646 }
647 }
648
649 else if(ieHeader.instance == 1)
650 {
651
652 rc = ieObject.decodeFTeidIe(buffer, data.s1USgwFTeid, ieHeader.length);
653
654 data.s1USgwFTeidIePresent = true;
655 if (!(rc))
656 {
657 errorStream.add((char *)"Failed to decode IE: s1USgwFTeid\n");
658 return false;
659 }
660 }
661
662 else if(ieHeader.instance == 2)
663 {
664
665 rc = ieObject.decodeFTeidIe(buffer, data.s58USgwFTeid, ieHeader.length);
666
667 data.s58USgwFTeidIePresent = true;
668 if (!(rc))
669 {
670 errorStream.add((char *)"Failed to decode IE: s58USgwFTeid\n");
671 return false;
672 }
673 }
674
675 else if(ieHeader.instance == 3)
676 {
677
678 rc = ieObject.decodeFTeidIe(buffer, data.s58UPgwFTeid, ieHeader.length);
679
680 data.s58UPgwFTeidIePresent = true;
681 if (!(rc))
682 {
683 errorStream.add((char *)"Failed to decode IE: s58UPgwFTeid\n");
684 return false;
685 }
686 }
687
688 else if(ieHeader.instance == 4)
689 {
690
691 rc = ieObject.decodeFTeidIe(buffer, data.s12RncFTeid, ieHeader.length);
692
693 data.s12RncFTeidIePresent = true;
694 if (!(rc))
695 {
696 errorStream.add((char *)"Failed to decode IE: s12RncFTeid\n");
697 return false;
698 }
699 }
700
701 else if(ieHeader.instance == 5)
702 {
703
704 rc = ieObject.decodeFTeidIe(buffer, data.s12SgwFTeid, ieHeader.length);
705
706 data.s12SgwFTeidIePresent = true;
707 if (!(rc))
708 {
709 errorStream.add((char *)"Failed to decode IE: s12SgwFTeid\n");
710 return false;
711 }
712 }
713
714 else if(ieHeader.instance == 6)
715 {
716
717 rc = ieObject.decodeFTeidIe(buffer, data.s4USgsnFTeid, ieHeader.length);
718
719 data.s4USgsnFTeidIePresent = true;
720 if (!(rc))
721 {
722 errorStream.add((char *)"Failed to decode IE: s4USgsnFTeid\n");
723 return false;
724 }
725 }
726
727 else if(ieHeader.instance == 7)
728 {
729
730 rc = ieObject.decodeFTeidIe(buffer, data.s4USgwFTeid, ieHeader.length);
731
732 data.s4USgwFTeidIePresent = true;
733 if (!(rc))
734 {
735 errorStream.add((char *)"Failed to decode IE: s4USgwFTeid\n");
736 return false;
737 }
738 }
739
740 else if(ieHeader.instance == 8)
741 {
742
743 rc = ieObject.decodeFTeidIe(buffer, data.s2bUEpdgFTeid, ieHeader.length);
744
745 data.s2bUEpdgFTeidIePresent = true;
746 if (!(rc))
747 {
748 errorStream.add((char *)"Failed to decode IE: s2bUEpdgFTeid\n");
749 return false;
750 }
751 }
752
753 else if(ieHeader.instance == 9)
754 {
755
756 rc = ieObject.decodeFTeidIe(buffer, data.s2bUPgwFTeid, ieHeader.length);
757
758 data.s2bUPgwFTeidIePresent = true;
759 if (!(rc))
760 {
761 errorStream.add((char *)"Failed to decode IE: s2bUPgwFTeid\n");
762 return false;
763 }
764 }
765
766 else if(ieHeader.instance == 10)
767 {
768
769 rc = ieObject.decodeFTeidIe(buffer, data.s2aUTwanFTeid, ieHeader.length);
770
771 data.s2aUTwanFTeidIePresent = true;
772 if (!(rc))
773 {
774 errorStream.add((char *)"Failed to decode IE: s2aUTwanFTeid\n");
775 return false;
776 }
777 }
778
779 else if(ieHeader.instance == 11)
780 {
781
782 rc = ieObject.decodeFTeidIe(buffer, data.s2aUPgwFTeid, ieHeader.length);
783
784 data.s2aUPgwFTeidIePresent = true;
785 if (!(rc))
786 {
787 errorStream.add((char *)"Failed to decode IE: s2aUPgwFTeid\n");
788 return false;
789 }
790 }
791 else
792 {
793 // Unknown IE instance print error TODO
794 errorStream.add((char *)"Unknown IE Type: ");
795 errorStream.add(ieHeader.ieType);
796 errorStream.endOfLine();
797 buffer.skipBytes(ieHeader.length);
798 }
799 break;
800 }
801 case PcoIeType:
802 {
803 PcoIe ieObject =
804 dynamic_cast<
805 PcoIe&>(GtpV2IeFactory::getInstance().
806 getIeObject(PcoIeType));
807
808
809 if(ieHeader.instance == 0)
810 {
811
812 rc = ieObject.decodePcoIe(buffer, data.protocolConfigurationOptions, ieHeader.length);
813
814 data.protocolConfigurationOptionsIePresent = true;
815 if (!(rc))
816 {
817 errorStream.add((char *)"Failed to decode IE: protocolConfigurationOptions\n");
818 return false;
819 }
820 }
821 else
822 {
823 // Unknown IE instance print error TODO
824 errorStream.add((char *)"Unknown IE Type: ");
825 errorStream.add(ieHeader.ieType);
826 errorStream.endOfLine();
827 buffer.skipBytes(ieHeader.length);
828 }
829 break;
830 }
831 case RanNasCauseIeType:
832 {
833 RanNasCauseIe ieObject =
834 dynamic_cast<
835 RanNasCauseIe&>(GtpV2IeFactory::getInstance().
836 getIeObject(RanNasCauseIeType));
837
838
839 if(ieHeader.instance == 0)
840 {
841
842 rc = ieObject.decodeRanNasCauseIe(buffer, data.ranNasCause, ieHeader.length);
843
844 data.ranNasCauseIePresent = true;
845 if (!(rc))
846 {
847 errorStream.add((char *)"Failed to decode IE: ranNasCause\n");
848 return false;
849 }
850 }
851 else
852 {
853 // Unknown IE instance print error TODO
854 errorStream.add((char *)"Unknown IE Type: ");
855 errorStream.add(ieHeader.ieType);
856 errorStream.endOfLine();
857 buffer.skipBytes(ieHeader.length);
858 }
859 break;
860 }
861 case EpcoIeType:
862 {
863 EpcoIe ieObject =
864 dynamic_cast<
865 EpcoIe&>(GtpV2IeFactory::getInstance().
866 getIeObject(EpcoIeType));
867
868
869 if(ieHeader.instance == 0)
870 {
871
872 rc = ieObject.decodeEpcoIe(buffer, data.extendedProtocolConfigurationOptions, ieHeader.length);
873
874 data.extendedProtocolConfigurationOptionsIePresent = true;
875 if (!(rc))
876 {
877 errorStream.add((char *)"Failed to decode IE: extendedProtocolConfigurationOptions\n");
878 return false;
879 }
880 }
881 else
882 {
883 // Unknown IE instance print error TODO
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 default:
892 {
893 // Unknown IE print error
894 errorStream.add((char *)"Unknown IE Type: ");
895 errorStream.add(ieHeader.ieType);
896 errorStream.endOfLine();
897 buffer.skipBytes(ieHeader.length);
898 }
899 }
900 }
901 if (!mandatoryIeLocalList.empty())
902 {
903 // some mandatory IEs are missing
904 errorStream.add((char *)"Missing Mandatory IEs:");
905 errorStream.endOfLine();
906 while (!mandatoryIeLocalList.empty())
907 {
908 Uint16 missingMandIe = *mandatoryIeLocalList.begin ();
909 mandatoryIeLocalList.erase (mandatoryIeLocalList.begin ());
910 Uint16 missingInstance = missingMandIe & 0x00FF;
911 Uint16 missingIeType = (missingMandIe >> 8);
912 errorStream.add ((char *)"Missing Ie type: ");
913 errorStream.add (missingIeType);
914 errorStream.add ((char *)" Instance: ");
915 errorStream.add (missingInstance);
916 errorStream.endOfLine();
917 }
918 rc = false;
919
920 }
921 return rc;
922}
923
924void BearerContextsInCreateBearerResponse::
925displayBearerContextsInCreateBearerResponseData_v
926(BearerContextsInCreateBearerResponseData const &data, Debug &stream)
927{
928 stream.incrIndent();
929 stream.add((char *)"BearerContextsInCreateBearerResponse:");
930 stream.endOfLine();
931 stream.incrIndent();
932
933
934
935 if (data.s1UEnodebFTeidIePresent)
936 {
937
938 stream.add((char *)"s1UEnodebFTeid:");
939 stream.endOfLine();
940 FTeidIe fTeid=
941 dynamic_cast<
942 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
943 fTeid.displayFTeidIe_v(data.s1UEnodebFTeid, stream);
944
945 }
946
947 if (data.s1USgwFTeidIePresent)
948 {
949
950 stream.add((char *)"s1USgwFTeid:");
951 stream.endOfLine();
952 FTeidIe fTeid=
953 dynamic_cast<
954 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
955 fTeid.displayFTeidIe_v(data.s1USgwFTeid, stream);
956
957 }
958
959 if (data.s58USgwFTeidIePresent)
960 {
961
962 stream.add((char *)"s58USgwFTeid:");
963 stream.endOfLine();
964 FTeidIe fTeid=
965 dynamic_cast<
966 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
967 fTeid.displayFTeidIe_v(data.s58USgwFTeid, stream);
968
969 }
970
971 if (data.s58UPgwFTeidIePresent)
972 {
973
974 stream.add((char *)"s58UPgwFTeid:");
975 stream.endOfLine();
976 FTeidIe fTeid=
977 dynamic_cast<
978 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
979 fTeid.displayFTeidIe_v(data.s58UPgwFTeid, stream);
980
981 }
982
983 if (data.s12RncFTeidIePresent)
984 {
985
986 stream.add((char *)"s12RncFTeid:");
987 stream.endOfLine();
988 FTeidIe fTeid=
989 dynamic_cast<
990 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
991 fTeid.displayFTeidIe_v(data.s12RncFTeid, stream);
992
993 }
994
995 if (data.s12SgwFTeidIePresent)
996 {
997
998 stream.add((char *)"s12SgwFTeid:");
999 stream.endOfLine();
1000 FTeidIe fTeid=
1001 dynamic_cast<
1002 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
1003 fTeid.displayFTeidIe_v(data.s12SgwFTeid, stream);
1004
1005 }
1006
1007 if (data.s4USgsnFTeidIePresent)
1008 {
1009
1010 stream.add((char *)"s4USgsnFTeid:");
1011 stream.endOfLine();
1012 FTeidIe fTeid=
1013 dynamic_cast<
1014 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
1015 fTeid.displayFTeidIe_v(data.s4USgsnFTeid, stream);
1016
1017 }
1018
1019 if (data.s4USgwFTeidIePresent)
1020 {
1021
1022 stream.add((char *)"s4USgwFTeid:");
1023 stream.endOfLine();
1024 FTeidIe fTeid=
1025 dynamic_cast<
1026 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
1027 fTeid.displayFTeidIe_v(data.s4USgwFTeid, stream);
1028
1029 }
1030
1031 if (data.s2bUEpdgFTeidIePresent)
1032 {
1033
1034 stream.add((char *)"s2bUEpdgFTeid:");
1035 stream.endOfLine();
1036 FTeidIe fTeid=
1037 dynamic_cast<
1038 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
1039 fTeid.displayFTeidIe_v(data.s2bUEpdgFTeid, stream);
1040
1041 }
1042
1043 if (data.s2bUPgwFTeidIePresent)
1044 {
1045
1046 stream.add((char *)"s2bUPgwFTeid:");
1047 stream.endOfLine();
1048 FTeidIe fTeid=
1049 dynamic_cast<
1050 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
1051 fTeid.displayFTeidIe_v(data.s2bUPgwFTeid, stream);
1052
1053 }
1054
1055 if (data.s2aUTwanFTeidIePresent)
1056 {
1057
1058 stream.add((char *)"s2aUTwanFTeid:");
1059 stream.endOfLine();
1060 FTeidIe fTeid=
1061 dynamic_cast<
1062 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
1063 fTeid.displayFTeidIe_v(data.s2aUTwanFTeid, stream);
1064
1065 }
1066
1067 if (data.s2aUPgwFTeidIePresent)
1068 {
1069
1070 stream.add((char *)"s2aUPgwFTeid:");
1071 stream.endOfLine();
1072 FTeidIe fTeid=
1073 dynamic_cast<
1074 FTeidIe&>(GtpV2IeFactory::getInstance().getIeObject(FTeidIeType));
1075 fTeid.displayFTeidIe_v(data.s2aUPgwFTeid, stream);
1076
1077 }
1078
1079 if (data.protocolConfigurationOptionsIePresent)
1080 {
1081
1082 stream.add((char *)"protocolConfigurationOptions:");
1083 stream.endOfLine();
1084 PcoIe pco=
1085 dynamic_cast<
1086 PcoIe&>(GtpV2IeFactory::getInstance().getIeObject(PcoIeType));
1087 pco.displayPcoIe_v(data.protocolConfigurationOptions, stream);
1088
1089 }
1090
1091 if (data.ranNasCauseIePresent)
1092 {
1093
1094 stream.add((char *)"ranNasCause:");
1095 stream.endOfLine();
1096 RanNasCauseIe ranNasCause=
1097 dynamic_cast<
1098 RanNasCauseIe&>(GtpV2IeFactory::getInstance().getIeObject(RanNasCauseIeType));
1099 ranNasCause.displayRanNasCauseIe_v(data.ranNasCause, stream);
1100
1101 }
1102
1103 if (data.extendedProtocolConfigurationOptionsIePresent)
1104 {
1105
1106 stream.add((char *)"extendedProtocolConfigurationOptions:");
1107 stream.endOfLine();
1108 EpcoIe epco=
1109 dynamic_cast<
1110 EpcoIe&>(GtpV2IeFactory::getInstance().getIeObject(EpcoIeType));
1111 epco.displayEpcoIe_v(data.extendedProtocolConfigurationOptions, stream);
1112
1113 }
1114
1115 stream.decrIndent();
1116 stream.decrIndent();
1117}
1118
1119
1120
1121
1122