blob: 8fc7c73222a3b95bf2ac307c6958f67e211b67be [file] [log] [blame]
anjana_sreekumar@infosys.com991c2062020-01-08 11:42:57 +05301 /*
2Copyright 2019-present Infosys Limited  
3   
4SPDX-License-Identifier: Apache-2.0  
5  
6*/
7
8
9
10#include "gtpV2Message.h"
11
12GtpV2Message::GtpV2Message() {
13 // TODO Auto-generated constructor stub
14
15}
16
17GtpV2Message::~GtpV2Message() {
18 // TODO Auto-generated destructor stub
19}
20
21void GtpV2Message::encodeHeader(MsgBuffer& buffer, GtpV2MessageHeader& msgHeader)
22{
23 buffer.writeBits(2, 3); // Gtpversion 2
24 buffer.writeBits(0, 1); //Pigiback - TODO later
25 buffer.writeBits(msgHeader.teidPresent, 1);
26 buffer.skipBits(3);
27
28 buffer.writeUint8(msgHeader.msgType);
29 buffer.writeUint16(msgHeader.msgLength);
30
31 if (msgHeader.teidPresent)
32 {
33 buffer.writeUint32(msgHeader.teid);
34 }
35
36 Uint32 seqNumber = msgHeader.sequenceNumber << 8;
37 std::cout << "current seq num indx is " << buffer.getCurrentIndex() << std::endl;
38 buffer.writeUint32(seqNumber);
39
40}
41
42bool GtpV2Message::decodeHeader(MsgBuffer& buffer, GtpV2MessageHeader& msgHeader)
43{
44 buffer.skipBits(4);
45 msgHeader.teidPresent = buffer.readBit();
46 buffer.skipBits(3);
47
48 buffer.readUint8(msgHeader.msgType);
49 buffer.readUint16(msgHeader.msgLength);
50
51 if (msgHeader.teidPresent)
52 {
53 buffer.readUint32(msgHeader.teid);
54 }
55 Uint32 seqNumber;
56
57 buffer.readUint32(seqNumber);
58 msgHeader.sequenceNumber = (seqNumber >> 8);
59
60 return true; //TODO
61
62}
63