5G-LENA nr-v3.3-159-ga6832aa7
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-epc-gtpu-header.h
1// Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2//
3// SPDX-License-Identifier: GPL-2.0-only
4//
5// Author: Jaume Nin <jnin@cttc.cat>
6
7#ifndef NR_EPS_GTPU_V1_H
8#define NR_EPS_GTPU_V1_H
9
10#include "ns3/header.h"
11#include "ns3/ipv4-header.h"
12#include "ns3/ptr.h"
13
14namespace ns3
15{
16
17class Packet;
18
26class NrGtpuHeader : public Header
27{
28 public:
33 static TypeId GetTypeId();
35 ~NrGtpuHeader() override;
36 TypeId GetInstanceTypeId() const override;
37 uint32_t GetSerializedSize() const override;
38 void Serialize(Buffer::Iterator start) const override;
39 uint32_t Deserialize(Buffer::Iterator start) override;
40 void Print(std::ostream& os) const override;
41
46 bool GetExtensionHeaderFlag() const;
51 uint16_t GetLength() const;
56 uint8_t GetMessageType() const;
61 uint8_t GetNPduNumber() const;
66 bool GetNPduNumberFlag() const;
71 uint8_t GetNextExtensionType() const;
76 bool GetProtocolType() const;
81 uint16_t GetSequenceNumber() const;
86 bool GetSequenceNumberFlag() const;
91 uint32_t GetTeid() const;
96 uint8_t GetVersion() const;
101 void SetExtensionHeaderFlag(bool extensionHeaderFlag);
106 void SetLength(uint16_t length);
111 void SetMessageType(uint8_t messageType);
116 void SetNPduNumber(uint8_t nPduNumber);
121 void SetNPduNumberFlag(bool nPduNumberFlag);
126 void SetNextExtensionType(uint8_t nextExtensionType);
131 void SetProtocolType(bool protocolType);
136 void SetSequenceNumber(uint16_t sequenceNumber);
141 void SetSequenceNumberFlag(bool sequenceNumberFlag);
146 void SetTeid(uint32_t teid);
151 void SetVersion(uint8_t version);
152
159 bool operator==(const NrGtpuHeader& b) const;
160
161 private:
166 uint8_t m_version; // really a 3 uint3_t
167
172 bool m_protocolType;
173
180 bool m_extensionHeaderFlag;
181
188 bool m_sequenceNumberFlag;
195 bool m_nPduNumberFlag;
199 uint8_t m_messageType;
206 uint16_t m_length;
207
213 uint32_t m_teid;
219 uint16_t m_sequenceNumber;
226 uint8_t m_nPduNumber;
231 uint8_t m_nextExtensionType;
232};
233
234} // namespace ns3
235
236#endif /* NR_EPS_GTPU_V1_H */
bool operator==(const NrGtpuHeader &b) const
bool GetExtensionHeaderFlag() const
void SetMessageType(uint8_t messageType)
void SetLength(uint16_t length)
void SetExtensionHeaderFlag(bool extensionHeaderFlag)
void SetSequenceNumberFlag(bool sequenceNumberFlag)
bool GetNPduNumberFlag() const
uint16_t GetSequenceNumber() const
void SetTeid(uint32_t teid)
void SetNextExtensionType(uint8_t nextExtensionType)
uint8_t GetNextExtensionType() const
bool GetSequenceNumberFlag() const
void SetNPduNumber(uint8_t nPduNumber)
void SetSequenceNumber(uint16_t sequenceNumber)
uint16_t GetLength() const
void SetNPduNumberFlag(bool nPduNumberFlag)
void SetProtocolType(bool protocolType)
uint8_t GetVersion() const
uint8_t GetNPduNumber() const
void SetVersion(uint8_t version)
static TypeId GetTypeId()
Get the type ID.
uint8_t GetMessageType() const
uint32_t GetTeid() const