PcapPlusPlus  Next
GtpLayer.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "Layer.h"
4 #include "TLVData.h"
5 #include <vector>
6 #include <bitset>
7 
9 
14 namespace pcpp
15 {
16 
17 #pragma pack(push, 1)
22  struct gtpv1_header
23  {
24 #if (BYTE_ORDER == LITTLE_ENDIAN)
26  uint8_t npduNumberFlag : 1,
32  reserved : 1,
36  version : 3;
37 #else
39  uint8_t version : 3,
41  protocolType : 1,
43  reserved : 1,
49  npduNumberFlag : 1;
50 #endif
52  uint8_t messageType;
53 
56  uint16_t messageLength;
57 
60  uint32_t teid;
61  };
62 
63 #pragma pack(pop)
64 
71  {
209  GtpV1_GPDU = 255
210  };
211 
216  class GtpV1Layer : public Layer
217  {
218  private:
219  struct gtpv1_header_extra
220  {
221  uint16_t sequenceNumber;
222  uint8_t npduNumber;
223  uint8_t nextExtensionHeader;
224  };
225 
226  gtpv1_header_extra* getHeaderExtra() const;
227 
228  void init(GtpV1MessageType messageType, uint32_t teid, bool setSeqNum, uint16_t seqNum, bool setNpduNum,
229  uint8_t npduNum);
230 
231  public:
237  {
238  friend class GtpV1Layer;
239 
240  private:
241  uint8_t* m_Data;
242  size_t m_DataLen;
243  uint8_t m_ExtType;
244 
245  GtpExtension(uint8_t* data, size_t dataLen, uint8_t type);
246 
247  void setNextHeaderType(uint8_t nextHeaderType);
248 
249  static GtpExtension createGtpExtension(uint8_t* data, size_t dataLen, uint8_t extType, uint16_t content);
250 
251  public:
256 
261  GtpExtension(const GtpExtension& other);
262 
269 
274  bool isNull() const;
275 
279  uint8_t getExtensionType() const;
280 
285  size_t getTotalLength() const;
286 
291  size_t getContentLength() const;
292 
297  uint8_t* getContent() const;
298 
303  uint8_t getNextExtensionHeaderType() const;
304 
311  }; // GtpExtension
312 
313  ~GtpV1Layer() override = default;
314 
321  GtpV1Layer(uint8_t* data, size_t dataLen, Layer* prevLayer, Packet* packet)
322  : Layer(data, dataLen, prevLayer, packet, GTPv1)
323  {}
324 
330  GtpV1Layer(GtpV1MessageType messageType, uint32_t teid);
331 
345  GtpV1Layer(GtpV1MessageType messageType, uint32_t teid, bool setSeqNum, uint16_t seqNum, bool setNpduNum,
346  uint8_t npduNum);
347 
354  static bool isGTPv1(const uint8_t* data, size_t dataSize);
355 
361  {
362  return reinterpret_cast<gtpv1_header*>(m_Data);
363  }
364 
371  bool getSequenceNumber(uint16_t& seqNumber) const;
372 
379  bool setSequenceNumber(uint16_t seqNumber);
380 
387  bool getNpduNumber(uint8_t& npduNum) const;
388 
395  bool setNpduNumber(uint8_t npduNum);
396 
404  bool getNextExtensionHeaderType(uint8_t& nextExtType) const;
405 
411 
422  GtpExtension addExtension(uint8_t extensionType, uint16_t extensionContent);
423 
428 
432  std::string getMessageTypeAsString() const;
433 
437  bool isGTPUMessage() const;
438 
442  bool isGTPCMessage() const;
443 
449  static bool isGTPv1Port(uint16_t port)
450  {
451  return port == 2152 /* GTP-U */ || port == 2123 /* GTP-C */;
452  }
453 
454  // implement abstract methods
455 
459  void parseNextLayer() override;
460 
467  size_t getHeaderLen() const override;
468 
473  void computeCalculateFields() override;
474 
475  std::string toString() const override;
476 
478  {
479  return OsiModelTransportLayer;
480  }
481  };
482 
488  {
489  public:
493  enum Value : uint8_t
494  {
496  Unknown = 0,
596  CSPaging = 151,
608  ISRStatus = 157,
661  };
662 
663  GtpV2MessageType() = default;
664 
665  // cppcheck-suppress noExplicitConstructor
670  constexpr GtpV2MessageType(Value value) : m_Value(value)
671  {}
672 
676  std::string toString() const;
677 
684  static GtpV2MessageType fromUintValue(uint8_t value);
685 
686  // Allow switch and comparisons.
687  constexpr operator Value() const
688  {
689  return m_Value;
690  }
691 
692  // Prevent usage: if(GtpV2MessageType)
693  explicit operator bool() const = delete;
694 
695  private:
697  };
698 
704  class GtpV2InformationElement : public TLVRecord<uint8_t, uint16_t>
705  {
706  public:
710  enum class Type : uint8_t
711  {
713  Unknown = 0,
715  Imsi = 1,
717  Cause = 2,
719  Recovery = 3,
721  StnSr = 51,
723  Apn = 71,
725  Ambr = 72,
727  Ebi = 73,
729  IpAddress = 74,
731  Mei = 75,
733  Msisdn = 76,
735  Indication = 77,
737  Pco = 78,
739  Paa = 79,
741  BearerQos = 80,
743  FlowQos = 81,
745  RatType = 82,
747  ServingNetwork = 83,
749  BearerTft = 84,
751  Tad = 85,
753  Uli = 86,
755  FTeid = 87,
757  Tmsi = 88,
759  GlobalCnId = 89,
765  DelayValue = 92,
767  BearerContext = 93,
769  ChargingId = 94,
773  TraceInformation = 96,
775  BearerFlags = 97,
777  PdnType = 99,
779  Pti = 100,
781  MmContext1 = 103,
783  MmContext2 = 104,
785  MmContext3 = 105,
787  MmContext4 = 106,
789  MmContext5 = 107,
791  MmContext6 = 108,
793  PdnConnection = 109,
795  PduNumbers = 110,
797  PTmsi = 111,
799  PTmsiSignature = 112,
801  HopCounter = 113,
803  UeTimeZone = 114,
805  TraceReference = 115,
809  Guti = 117,
811  FContainer = 118,
813  FCause = 119,
815  PlmnId = 120,
817  TargetIdentification = 121,
819  PacketFlowId = 123,
821  RabContext = 124,
825  PortNumber = 126,
827  ApnRestriction = 127,
829  SelectionMode = 128,
831  SourceIdentification = 129,
833  ChangeReportingAction = 131,
835  FqCsid = 132,
837  ChannelNeeded = 133,
839  EmlppPriority = 134,
841  NodeType = 135,
843  Fqdn = 136,
845  Ti = 137,
847  MbmsSessionDuration = 138,
849  MbmsServiceArea = 139,
851  MbmsSessionIdentifier = 140,
853  MbmsFlowIdentifier = 141,
859  RfspIndex = 144,
861  Uci = 145,
865  CsgId = 147,
867  Cmi = 148,
869  ServiceIndicator = 149,
871  DetachType = 150,
873  Ldn = 151,
875  NodeFeatures = 152,
879  Throttling = 154,
881  Arp = 155,
883  EpcTimer = 156,
887  Tmgi = 158,
893  MdtConfiguration = 162,
895  Apco = 163,
903  ChangeToReportFlags = 167,
905  ActionIndication = 168,
907  TwanIdentifier = 169,
909  UliTimestamp = 170,
911  MbmsFlags = 171,
913  RanNasCause = 172,
917  Twmi = 174,
919  NodeNumber = 175,
921  NodeIdentifier = 176,
933  Metric = 182,
935  SequenceNumber = 183,
943  IntegerNumber = 187,
945  MillisecondTimeStamp = 188,
949  EcgiList = 190,
951  RemoteUeContext = 191,
953  RemoteUserId = 192,
955  RemoteUeIpInformation = 193,
959  ScefPdnConnection = 195,
963  ExtendedPco = 197,
967  Counter = 199,
969  MappedUeUsageType = 200,
975  MaximumPacketLossRate = 203,
977  ApnRateControlStatus = 204,
985  V2xContext = 208,
987  Pc5QosParameters = 209,
989  ServicesAuthorized = 210,
991  BitRate = 211,
993  Pc5QosFlow = 212,
995  SgiPtpTunnelAddress = 213
996  };
997 
1002  explicit GtpV2InformationElement(uint8_t* infoElementRawData) : TLVRecord(infoElementRawData)
1003  {}
1004 
1005  ~GtpV2InformationElement() override = default;
1006 
1011 
1015  uint8_t getCRFlag();
1016 
1020  uint8_t getInstance();
1021 
1022  // implement abstract methods
1023 
1024  size_t getValueOffset() const override
1025  {
1026  return sizeof(uint8_t);
1027  }
1028 
1029  size_t getTotalSize() const override;
1030 
1031  size_t getDataSize() const override;
1032  };
1033 
1040  {
1041  public:
1050  GtpV2InformationElementBuilder(GtpV2InformationElement::Type infoElementType, const std::bitset<4>& crFlag,
1051  const std::bitset<4>& instance, const std::vector<uint8_t>& infoElementValue);
1052 
1058 
1059  private:
1060  std::bitset<4> m_CRFlag;
1061  std::bitset<4> m_Instance;
1062  };
1063 
1068  class GtpV2Layer : public Layer
1069  {
1070  public:
1071  ~GtpV2Layer() override = default;
1072 
1080  GtpV2Layer(uint8_t* data, size_t dataLen, Layer* prevLayer, Packet* packet)
1081  : Layer(data, dataLen, prevLayer, packet, GTPv2)
1082  {}
1083 
1093  GtpV2Layer(GtpV2MessageType messageType, uint32_t sequenceNumber, bool setTeid = false, uint32_t teid = 0,
1094  bool setMessagePriority = false, std::bitset<4> messagePriority = 0);
1095 
1101  static bool isGTPv2Port(uint16_t port)
1102  {
1103  return port == 2123;
1104  }
1105 
1112  static bool isDataValid(const uint8_t* data, size_t dataSize);
1113 
1118 
1124 
1130  uint16_t getMessageLength() const;
1131 
1136  bool isPiggybacking() const;
1137 
1143  std::pair<bool, uint32_t> getTeid() const;
1144 
1149  void setTeid(uint32_t teid);
1150 
1154  void unsetTeid();
1155 
1159  uint32_t getSequenceNumber() const;
1160 
1165  void setSequenceNumber(uint32_t sequenceNumber);
1166 
1172  std::pair<bool, uint8_t> getMessagePriority() const;
1173 
1178  void setMessagePriority(const std::bitset<4>& messagePriority);
1179 
1184 
1190 
1199 
1207 
1212 
1221 
1231  GtpV2InformationElement::Type infoElementType);
1232 
1239 
1245 
1246  // implement abstract methods
1247 
1251  void parseNextLayer() override;
1252 
1256  size_t getHeaderLen() const override;
1257 
1261  void computeCalculateFields() override;
1262 
1263  std::string toString() const override;
1264 
1266  {
1267  return OsiModelTransportLayer;
1268  }
1269 
1270  private:
1271 #pragma pack(push, 1)
1272  struct gtpv2_basic_header
1273  {
1274 #if (BYTE_ORDER == LITTLE_ENDIAN)
1275  uint8_t unused : 2, messagePriorityPresent : 1, teidPresent : 1, piggybacking : 1, version : 3;
1276 #else
1277  uint8_t version : 3, piggybacking : 1, teidPresent : 1, messagePriorityPresent : 1, unused : 2;
1278 #endif
1279  uint8_t messageType;
1280  uint16_t messageLength;
1281  };
1282 #pragma pack(pop)
1283 
1284  TLVRecordReader<GtpV2InformationElement> m_IEReader;
1285 
1286  gtpv2_basic_header* getHeader() const
1287  {
1288  return reinterpret_cast<gtpv2_basic_header*>(m_Data);
1289  }
1290 
1291  uint8_t* getIEBasePtr() const;
1292 
1293  GtpV2InformationElement addInformationElementAt(const GtpV2InformationElementBuilder& infoElementBuilder,
1294  int offset);
1295  };
1296 } // namespace pcpp
Definition: GtpLayer.h:237
uint8_t getNextExtensionHeaderType() const
GtpExtension & operator=(const GtpExtension &other)
uint8_t getExtensionType() const
GtpExtension(const GtpExtension &other)
uint8_t * getContent() const
GtpExtension getNextExtension() const
Definition: GtpLayer.h:217
bool setSequenceNumber(uint16_t seqNumber)
bool isGTPCMessage() const
std::string toString() const override
bool getSequenceNumber(uint16_t &seqNumber) const
bool isGTPUMessage() const
GtpV1Layer(GtpV1MessageType messageType, uint32_t teid)
void computeCalculateFields() override
bool setNpduNumber(uint8_t npduNum)
OsiModelLayer getOsiModelLayer() const override
Definition: GtpLayer.h:477
GtpV1MessageType getMessageType() const
GtpExtension addExtension(uint8_t extensionType, uint16_t extensionContent)
GtpV1Layer(GtpV1MessageType messageType, uint32_t teid, bool setSeqNum, uint16_t seqNum, bool setNpduNum, uint8_t npduNum)
GtpExtension getNextExtension() const
void parseNextLayer() override
gtpv1_header * getHeader() const
Definition: GtpLayer.h:360
bool getNextExtensionHeaderType(uint8_t &nextExtType) const
static bool isGTPv1Port(uint16_t port)
Definition: GtpLayer.h:449
static bool isGTPv1(const uint8_t *data, size_t dataSize)
GtpV1Layer(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
Definition: GtpLayer.h:321
std::string getMessageTypeAsString() const
size_t getHeaderLen() const override
bool getNpduNumber(uint8_t &npduNum) const
Definition: GtpLayer.h:1040
GtpV2InformationElement build() const
GtpV2InformationElementBuilder(GtpV2InformationElement::Type infoElementType, const std::bitset< 4 > &crFlag, const std::bitset< 4 > &instance, const std::vector< uint8_t > &infoElementValue)
Definition: GtpLayer.h:705
GtpV2InformationElement::Type getIEType()
GtpV2InformationElement(uint8_t *infoElementRawData)
Definition: GtpLayer.h:1002
Type
Definition: GtpLayer.h:711
size_t getDataSize() const override
size_t getTotalSize() const override
Definition: GtpLayer.h:1069
OsiModelLayer getOsiModelLayer() const override
Definition: GtpLayer.h:1265
void setSequenceNumber(uint32_t sequenceNumber)
uint16_t getMessageLength() const
void unsetMessagePriority()
GtpV2Layer(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
Definition: GtpLayer.h:1080
static bool isDataValid(const uint8_t *data, size_t dataSize)
void setMessageType(const GtpV2MessageType &type)
void setTeid(uint32_t teid)
GtpV2InformationElement getFirstInformationElement() const
std::string toString() const override
GtpV2InformationElement addInformationElementAfter(const GtpV2InformationElementBuilder &infoElementBuilder, GtpV2InformationElement::Type infoElementType)
void parseNextLayer() override
size_t getHeaderLen() const override
size_t getInformationElementCount() const
std::pair< bool, uint8_t > getMessagePriority() const
void computeCalculateFields() override
GtpV2MessageType getMessageType() const
bool isPiggybacking() const
GtpV2InformationElement getInformationElement(GtpV2InformationElement::Type infoElementType) const
uint32_t getSequenceNumber() const
static bool isGTPv2Port(uint16_t port)
Definition: GtpLayer.h:1101
bool removeAllInformationElements()
GtpV2Layer(GtpV2MessageType messageType, uint32_t sequenceNumber, bool setTeid=false, uint32_t teid=0, bool setMessagePriority=false, std::bitset< 4 > messagePriority=0)
GtpV2InformationElement getNextInformationElement(GtpV2InformationElement infoElement) const
bool removeInformationElement(GtpV2InformationElement::Type infoElementType)
std::pair< bool, uint32_t > getTeid() const
void setMessagePriority(const std::bitset< 4 > &messagePriority)
GtpV2InformationElement addInformationElement(const GtpV2InformationElementBuilder &infoElementBuilder)
Definition: GtpLayer.h:488
Value
Definition: GtpLayer.h:494
@ EchoResponse
Definition: GtpLayer.h:500
@ CreateForwardingRequest
Definition: GtpLayer.h:610
@ DeleteBearerFailure
Definition: GtpLayer.h:530
@ MMBSSessionUpdateRequest
Definition: GtpLayer.h:654
@ ContextAcknowledge
Definition: GtpLayer.h:572
@ PGWDownlinkNotification
Definition: GtpLayer.h:560
@ SuspendAcknowledge
Definition: GtpLayer.h:616
@ RemoteUEReportAcknowledge
Definition: GtpLayer.h:522
@ CreateBearerRequest
Definition: GtpLayer.h:544
@ MMBSSessionStartRequest
Definition: GtpLayer.h:650
@ CreateIndirectDataTunnelRequest
Definition: GtpLayer.h:622
@ ForwardRelocationRequest
Definition: GtpLayer.h:574
@ CreateForwardingResponse
Definition: GtpLayer.h:612
@ DownlinkDataNotification
Definition: GtpLayer.h:634
@ CreateSessionResponse
Definition: GtpLayer.h:506
@ UpdatePDNConnectionRequest
Definition: GtpLayer.h:642
@ UpdateBearerRequest
Definition: GtpLayer.h:548
@ DeleteBearerResponse
Definition: GtpLayer.h:554
@ DeleteBearerCommand
Definition: GtpLayer.h:528
@ ForwardAccessNotification
Definition: GtpLayer.h:582
@ PGWRestartNotification
Definition: GtpLayer.h:638
@ PGWDownlinkAcknowledge
Definition: GtpLayer.h:562
@ IdentificationRequest
Definition: GtpLayer.h:564
@ DetachNotification
Definition: GtpLayer.h:592
@ ChangeNotificationRequest
Definition: GtpLayer.h:516
@ DeleteSessionResponse
Definition: GtpLayer.h:514
@ TraceSessionActivation
Definition: GtpLayer.h:538
@ ModifyAccessBearersResponse
Definition: GtpLayer.h:648
@ ReleaseAccessBearersResponse
Definition: GtpLayer.h:632
@ BearerResourceCommand
Definition: GtpLayer.h:532
@ ContextRequest
Definition: GtpLayer.h:568
@ BearerResourceFailure
Definition: GtpLayer.h:534
@ Unknown
Definition: GtpLayer.h:496
@ UpdatePDNConnectionResponse
Definition: GtpLayer.h:644
@ RANInformationRelay
Definition: GtpLayer.h:598
@ ReleaseAccessBearersRequest
Definition: GtpLayer.h:630
@ IdentificationResponse
Definition: GtpLayer.h:566
@ RemoteUEReportNotifications
Definition: GtpLayer.h:520
@ TraceSessionDeactivation
Definition: GtpLayer.h:540
@ DeleteIndirectDataTunnelRequest
Definition: GtpLayer.h:626
@ RelocationCancelRequest
Definition: GtpLayer.h:586
@ DownlinkDataAcknowledge
Definition: GtpLayer.h:636
@ ModifyBearerFailure
Definition: GtpLayer.h:526
@ DeletePDNRequest
Definition: GtpLayer.h:556
@ VersionNotSupported
Definition: GtpLayer.h:502
@ ForwardRelocationNotification
Definition: GtpLayer.h:578
@ CreateBearerResponse
Definition: GtpLayer.h:546
@ StopPagingIndication
Definition: GtpLayer.h:542
@ DeleteSessionRequest
Definition: GtpLayer.h:512
@ SuspendNotification
Definition: GtpLayer.h:614
@ ForwardRelocationResponse
Definition: GtpLayer.h:576
@ DeletePDNResponse
Definition: GtpLayer.h:558
@ ModifyBearerResponse
Definition: GtpLayer.h:510
@ RelocationCancelResponse
Definition: GtpLayer.h:588
@ MMBSSessionStopResponse
Definition: GtpLayer.h:660
@ PGWRestartAcknowledge
Definition: GtpLayer.h:640
@ ContextResponse
Definition: GtpLayer.h:570
@ MMBSSessionStartResponse
Definition: GtpLayer.h:652
@ ResumeAcknowledge
Definition: GtpLayer.h:620
@ ModifyBearerRequest
Definition: GtpLayer.h:508
@ AlertMMENotification
Definition: GtpLayer.h:600
@ ModifyAccessBearersRequest
Definition: GtpLayer.h:646
@ MMBSSessionStopRequest
Definition: GtpLayer.h:658
@ ForwardRelocationAcknowledge
Definition: GtpLayer.h:580
@ EchoRequest
Definition: GtpLayer.h:498
@ MMBSSessionUpdateResponse
Definition: GtpLayer.h:656
@ UEActivityAcknowledge
Definition: GtpLayer.h:606
@ ConfigurationTransferTunnel
Definition: GtpLayer.h:590
@ DetachAcknowledge
Definition: GtpLayer.h:594
@ ChangeNotificationResponse
Definition: GtpLayer.h:518
@ UEActivityNotification
Definition: GtpLayer.h:604
@ DownlinkDataNotificationFailure
Definition: GtpLayer.h:536
@ ModifyBearerCommand
Definition: GtpLayer.h:524
@ CreateIndirectDataTunnelResponse
Definition: GtpLayer.h:624
@ ISRStatus
Definition: GtpLayer.h:608
@ UpdateBearerResponse
Definition: GtpLayer.h:550
@ ResumeNotification
Definition: GtpLayer.h:618
@ CSPaging
Definition: GtpLayer.h:596
@ DeleteBearerRequest
Definition: GtpLayer.h:552
@ ForwardAccessAcknowledge
Definition: GtpLayer.h:584
@ DeleteIndirectDataTunnelResponse
Definition: GtpLayer.h:628
@ CreateSessionRequest
Definition: GtpLayer.h:504
@ AlertMMEAcknowledge
Definition: GtpLayer.h:602
std::string toString() const
constexpr GtpV2MessageType(Value value)
Definition: GtpLayer.h:670
static GtpV2MessageType fromUintValue(uint8_t value)
Definition: Layer.h:69
Definition: Packet.h:27
Definition: TLVData.h:419
Definition: TLVData.h:23
The main namespace for the PcapPlusPlus lib.
OsiModelLayer
Definition: ProtocolType.h:364
@ OsiModelTransportLayer
Definition: ProtocolType.h:372
const ProtocolType GTPv1
Definition: ProtocolType.h:218
const ProtocolType GTPv2
Definition: ProtocolType.h:358
GtpV1MessageType
Definition: GtpLayer.h:71
@ GtpV1_MessageTypeUnknown
Definition: GtpLayer.h:73
@ GtpV1_MBMSNotificationResponse
Definition: GtpLayer.h:161
@ GtpV1_DeletePDPContextResponse
Definition: GtpLayer.h:97
@ GtpV1_InitiatePDPContextActivationResponse
Definition: GtpLayer.h:101
@ GtpV1_RANInformationRelay
Definition: GtpLayer.h:157
@ GtpV1_MBMSSessionStopRequest
Definition: GtpLayer.h:191
@ GtpV1_MBMSSessionUpdateRequest
Definition: GtpLayer.h:195
@ GtpV1_SupportedExtensionsHeaderNotification
Definition: GtpLayer.h:113
@ GtpV1_PDUNotificationRejectRequest
Definition: GtpLayer.h:109
@ GtpV1_GPDU
Definition: GtpLayer.h:209
@ GtpV1_MBMSSessionUpdateResponse
Definition: GtpLayer.h:197
@ GtpV1_DeletePDPContextRequest
Definition: GtpLayer.h:95
@ GtpV1_InitiatePDPContextActivationRequest
Definition: GtpLayer.h:99
@ GtpV1_PDUNotificationRequest
Definition: GtpLayer.h:105
@ GtpV1_EchoRequest
Definition: GtpLayer.h:75
@ GtpV1_ForwardRelocationComplete
Definition: GtpLayer.h:141
@ GtpV1_MBMSRegistrationRequest
Definition: GtpLayer.h:179
@ GtpV1_MBMSNotificationRejectRequest
Definition: GtpLayer.h:163
@ GtpV1_SGSNContextAcknowledge
Definition: GtpLayer.h:135
@ GtpV1_MBMSSessionStartRequest
Definition: GtpLayer.h:187
@ GtpV1_DeleteMBMSNotificationRequest
Definition: GtpLayer.h:175
@ GtpV1_ForwardRelocationResponse
Definition: GtpLayer.h:139
@ GtpV1_NodeAliveResponse
Definition: GtpLayer.h:83
@ GtpV1_UERegistrationRequest
Definition: GtpLayer.h:153
@ GtpV1_ForwardSRNSContextAcknowledge
Definition: GtpLayer.h:151
@ GtpV1_MBMSNotificationRejectResponse
Definition: GtpLayer.h:165
@ GtpV1_UERegistrationResponse
Definition: GtpLayer.h:155
@ GtpV1_CreatePDPContextResponse
Definition: GtpLayer.h:89
@ GtpV1_FailureReportResponse
Definition: GtpLayer.h:121
@ GtpV1_NoteMSPresentResponse
Definition: GtpLayer.h:125
@ GtpV1_IdentificationRequest
Definition: GtpLayer.h:127
@ GtpV1_MBMSDeRegistrationResponse
Definition: GtpLayer.h:185
@ GtpV1_MSInfoChangeResponse
Definition: GtpLayer.h:201
@ GtpV1_ForwardRelocationCompleteAcknowledge
Definition: GtpLayer.h:149
@ GtpV1_UpdatePDPContextRequest
Definition: GtpLayer.h:91
@ GtpV1_SendRoutingforGPRSRequest
Definition: GtpLayer.h:115
@ GtpV1_PDUNotificationRejectResponse
Definition: GtpLayer.h:111
@ GtpV1_UpdatePDPContextResponse
Definition: GtpLayer.h:93
@ GtpV1_SendRoutingforGPRSResponse
Definition: GtpLayer.h:117
@ GtpV1_VersionNotSupported
Definition: GtpLayer.h:79
@ GtpV1_MSInfoChangeRequest
Definition: GtpLayer.h:199
@ GtpV1_ErrorIndication
Definition: GtpLayer.h:103
@ GtpV1_UpdateMBMSNotificationResponse
Definition: GtpLayer.h:173
@ GtpV1_RelocationCancelResponse
Definition: GtpLayer.h:145
@ GtpV1_DataRecordTransferRequest
Definition: GtpLayer.h:203
@ GtpV1_MBMSNotificationRequest
Definition: GtpLayer.h:159
@ GtpV1_MBMSSessionStartResponse
Definition: GtpLayer.h:189
@ GtpV1_FailureReportRequest
Definition: GtpLayer.h:119
@ GtpV1_CreateMBMSNotificationResponse
Definition: GtpLayer.h:169
@ GtpV1_MBMSDeRegistrationRequest
Definition: GtpLayer.h:183
@ GtpV1_CreateMBMSNotificationRequest
Definition: GtpLayer.h:167
@ GtpV1_DataRecordTransferResponse
Definition: GtpLayer.h:205
@ GtpV1_MBMSSessionStopResponse
Definition: GtpLayer.h:193
@ GtpV1_UpdateMBMSNotificationRequest
Definition: GtpLayer.h:171
@ GtpV1_SGSNContextRequest
Definition: GtpLayer.h:131
@ GtpV1_RedirectionRequest
Definition: GtpLayer.h:85
@ GtpV1_EndMarker
Definition: GtpLayer.h:207
@ GtpV1_IdentificationResponse
Definition: GtpLayer.h:129
@ GtpV1_EchoResponse
Definition: GtpLayer.h:77
@ GtpV1_RelocationCancelRequest
Definition: GtpLayer.h:143
@ GtpV1_NodeAliveRequest
Definition: GtpLayer.h:81
@ GtpV1_SGSNContextResponse
Definition: GtpLayer.h:133
@ GtpV1_ForwardRelocationRequest
Definition: GtpLayer.h:137
@ GtpV1_NoteMSPresentRequest
Definition: GtpLayer.h:123
@ GtpV1_MBMSRegistrationResponse
Definition: GtpLayer.h:181
@ GtpV1_DeleteMBMSNotificationResponse
Definition: GtpLayer.h:177
@ GtpV1_CreatePDPContextRequest
Definition: GtpLayer.h:87
@ GtpV1_ForwardSRNSContext
Definition: GtpLayer.h:147
@ GtpV1_PDUNotificationResponse
Definition: GtpLayer.h:107
Definition: GtpLayer.h:23
uint8_t version
Definition: GtpLayer.h:36
uint8_t messageType
Definition: GtpLayer.h:52
uint16_t messageLength
Definition: GtpLayer.h:56
uint8_t reserved
Definition: GtpLayer.h:32
uint8_t npduNumberFlag
Definition: GtpLayer.h:26
uint32_t teid
Definition: GtpLayer.h:60
uint8_t sequenceNumberFlag
Definition: GtpLayer.h:28
uint8_t extensionHeaderFlag
Definition: GtpLayer.h:30
uint8_t protocolType
Definition: GtpLayer.h:34