PcapPlusPlus  20.08
SipLayer.h
Go to the documentation of this file.
1 #ifndef PACKETPP_SIP_LAYER
2 #define PACKETPP_SIP_LAYER
3 
4 #include "TextBasedProtocol.h"
5 
7 
12 namespace pcpp
13 {
14 // some popular SIP header fields
15 
17 #define PCPP_SIP_FROM_FIELD "From"
18 
19 #define PCPP_SIP_TO_FIELD "To"
20 
21 #define PCPP_SIP_VIA_FIELD "Via"
22 
23 #define PCPP_SIP_CALL_ID_FIELD "Call-ID"
24 
25 #define PCPP_SIP_CONTENT_TYPE_FIELD "Content-Type"
26 
27 #define PCPP_SIP_CONTENT_LENGTH_FIELD "Content-Length"
28 
29 #define PCPP_SIP_CONTENT_DISPOSITION_FIELD "Content-Disposition"
30 
31 #define PCPP_SIP_CONTENT_ENCODING_FIELD "Content-Encoding"
32 
33 #define PCPP_SIP_CONTENT_LANGUAGE_FIELD "Content-Language"
34 
35 #define PCPP_SIP_CSEQ_FIELD "CSeq"
36 
37 #define PCPP_SIP_CONTACT_FIELD "Contact"
38 
39 #define PCPP_SIP_MAX_FORWARDS_FIELD "Max-Forwards"
40 
41 #define PCPP_SIP_USER_AGENT_FIELD "User-Agent"
42 
43 #define PCPP_SIP_ACCEPT_FIELD "Accept"
44 
45 #define PCPP_SIP_ACCEPT_ENCODING_FIELD "Accept-Encoding"
46 
47 #define PCPP_SIP_ACCEPT_LANGUAGE_FIELD "Accept-Language"
48 
49 #define PCPP_SIP_ALLOW_FIELD "Allow"
50 
51 #define PCPP_SIP_AUTHORIZATION_FIELD "Authorization"
52 
53 #define PCPP_SIP_DATE_FIELD "Date"
54 
55 #define PCPP_SIP_MIME_VERSION_FIELD "MIME-Version"
56 
57 #define PCPP_SIP_REASON_FIELD "Reason"
58 
59 #define PCPP_SIP_SUPPORTED_FIELD "Supported"
60 
61 #define PCPP_SIP_SERVER_FIELD "Server"
62 
63 #define PCPP_SIP_WWW_AUTHENTICATE_FIELD "WWW-Authenticate"
64 
65 #define PCPP_SIP_RETRY_AFTER_FIELD "Retry-After"
66 
67 #define PCPP_SIP_RECORD_ROUTE_FIELD "Record-Route"
68 
69 
75  {
76  public:
77 
83  int getContentLength() const;
84 
98  HeaderField* setContentLength(int contentLength, const std::string prevFieldName = "");
99 
100  // Overridden methods
101 
103 
108  void parseNextLayer();
109 
113  void computeCalculateFields();
114 
119  static bool isSipPort(uint16_t port) { return port == 5060 || port == 5061; }
120 
121  protected:
122  SipLayer(uint8_t* data, size_t dataLen, Layer* prevLayer, Packet* packet) : TextBasedProtocolMessage(data, dataLen, prevLayer, packet) {}
123  SipLayer() : TextBasedProtocolMessage() {}
124  SipLayer(const SipLayer& other) : TextBasedProtocolMessage(other) {}
125  SipLayer& operator=(const SipLayer& other) { TextBasedProtocolMessage::operator=(other); return *this; }
126 
127  // implementation of abstract methods
128  char getHeaderFieldNameValueSeparator() const { return ':'; }
129  bool spacesAllowedBetweenHeaderFieldNameAndValue() const { return true; }
130  };
131 
132 
133  class SipRequestFirstLine;
134 
135 
145  class SipRequestLayer : public SipLayer
146  {
147  friend class SipRequestFirstLine;
148 
149  public:
154  {
185  };
186 
193  SipRequestLayer(uint8_t* data, size_t dataLen, Layer* prevLayer, Packet* packet);
194 
202  SipRequestLayer(SipMethod method, std::string requestUri, std::string version = "SIP/2.0");
203 
204  ~SipRequestLayer();
205 
211  SipRequestLayer(const SipRequestLayer& other);
212 
219 
223  SipRequestFirstLine* getFirstLine() const { return m_FirstLine; }
224 
225  // implement Layer's abstract methods
226 
227  std::string toString() const;
228 
229  private:
230  SipRequestFirstLine* m_FirstLine;
231  };
232 
233 
234 
235 
236  class SipResponseFirstLine;
237 
238 
248  class SipResponseLayer : public SipLayer
249  {
250  friend class SipResponseFirstLine;
251  public:
252 
257  {
408  };
409 
416  SipResponseLayer(uint8_t* data, size_t dataLen, Layer* prevLayer, Packet* packet);
417 
428  SipResponseLayer(SipResponseLayer::SipResponseStatusCode statusCode, std::string statusCodeString = "", std::string sipVersion = "SIP/2.0");
429 
430  virtual ~SipResponseLayer();
431 
437  SipResponseLayer(const SipResponseLayer& other);
438 
445 
449  SipResponseFirstLine* getFirstLine() const { return m_FirstLine; }
450 
451  // implement Layer's abstract methods
452 
453  std::string toString() const;
454 
455  private:
456  SipResponseFirstLine* m_FirstLine;
457  };
458 
459 
460 
472  {
473  friend class SipRequestLayer;
474  public:
475 
479  SipRequestLayer::SipMethod getMethod() const { return m_Method; }
480 
486  bool setMethod(SipRequestLayer::SipMethod newMethod);
487 
491  std::string getUri() const;
492 
498  bool setUri(std::string newUri);
499 
503  std::string getVersion() const { return m_Version; }
504 
511  static SipRequestLayer::SipMethod parseMethod(char* data, size_t dataLen);
512 
516  int getSize() const { return m_FirstLineEndOffset; }
517 
524  bool isComplete() const { return m_IsComplete; }
525 
532  class SipRequestFirstLineException : public std::exception
533  {
534  public:
535  ~SipRequestFirstLineException() throw() {}
536  void setMessage(std::string message) { m_Message = message; }
537  virtual const char* what() const throw()
538  {
539  return m_Message.c_str();
540  }
541  private:
542  std::string m_Message;
543  };
544 
545  private:
547  SipRequestFirstLine(SipRequestLayer* sipRequest, SipRequestLayer::SipMethod method, std::string version, std::string uri);
548  //throw(SipRequestFirstLineException); // Deprecated in C++17
549 
550  void parseVersion();
551 
552  SipRequestLayer* m_SipRequest;
554  std::string m_Version;
555  int m_VersionOffset;
556  int m_UriOffset;
557  int m_FirstLineEndOffset;
558  bool m_IsComplete;
559  SipRequestFirstLineException m_Exception;
560  };
561 
562 
563 
564 
575  {
576  friend class SipResponseLayer;
577  public:
582 
586  int getStatusCodeAsInt() const;
587 
591  std::string getStatusCodeString() const;
592 
599  bool setStatusCode(SipResponseLayer::SipResponseStatusCode newStatusCode, std::string statusCodeString = "");
600 
604  std::string getVersion() const { return m_Version; }
605 
610  void setVersion(std::string newVersion);
611 
618  static SipResponseLayer::SipResponseStatusCode parseStatusCode(char* data, size_t dataLen);
619 
626  static std::string parseVersion(char* data, size_t dataLen);
627 
631  int getSize() const { return m_FirstLineEndOffset; }
632 
639  bool isComplete() const { return m_IsComplete; }
640 
647  class SipResponseFirstLineException : public std::exception
648  {
649  public:
650  ~SipResponseFirstLineException() throw() {}
651  void setMessage(std::string message) { m_Message = message; }
652  virtual const char* what() const throw()
653  {
654  return m_Message.c_str();
655  }
656  private:
657  std::string m_Message;
658  };
659 
660  private:
662  SipResponseFirstLine(SipResponseLayer* sipResponse, std::string version, SipResponseLayer::SipResponseStatusCode statusCode, std::string statusCodeString = "");
663 
664  static SipResponseLayer::SipResponseStatusCode validateStatusCode(char* data, size_t dataLen, SipResponseLayer::SipResponseStatusCode potentialCode);
665 
666 
667  SipResponseLayer* m_SipResponse;
668  std::string m_Version;
670  int m_FirstLineEndOffset;
671  bool m_IsComplete;
672  SipResponseFirstLineException m_Exception;
673  };
674 
675 }
676 
677 #endif // PACKETPP_SIP_LAYER
pcpp::SipLayer::parseNextLayer
void parseNextLayer()
pcpp::SipResponseLayer::Sip470ConsentNeeded
@ Sip470ConsentNeeded
Definition: SipLayer.h:353
pcpp::SipLayer::getContentLength
int getContentLength() const
pcpp::OsiModelLayer
OsiModelLayer
Definition: ProtocolType.h:233
pcpp::SipResponseFirstLine::isComplete
bool isComplete() const
Definition: SipLayer.h:639
pcpp::SipResponseFirstLine::setVersion
void setVersion(std::string newVersion)
pcpp::SipResponseLayer::Sip305UseProxy
@ Sip305UseProxy
Definition: SipLayer.h:283
pcpp::Packet
Definition: Packet.h:26
pcpp::SipRequestFirstLine::SipRequestFirstLineException
Definition: SipLayer.h:532
pcpp::SipResponseLayer::Sip424BadLocationInformation
@ Sip424BadLocationInformation
Definition: SipLayer.h:331
pcpp::SipRequestLayer::SipINFO
@ SipINFO
Definition: SipLayer.h:176
pcpp::SipResponseLayer::Sip421ExtensionRequired
@ Sip421ExtensionRequired
Definition: SipLayer.h:325
pcpp::SipResponseLayer::Sip415UnsupportedMediaType
@ Sip415UnsupportedMediaType
Definition: SipLayer.h:317
pcpp::SipResponseLayer::Sip604DoesNotExistAnywhere
@ Sip604DoesNotExistAnywhere
Definition: SipLayer.h:401
pcpp::SipResponseFirstLine::getStatusCodeAsInt
int getStatusCodeAsInt() const
pcpp::SipRequestFirstLine::getSize
int getSize() const
Definition: SipLayer.h:516
pcpp::SipRequestFirstLine::isComplete
bool isComplete() const
Definition: SipLayer.h:524
pcpp::SipResponseLayer::Sip414RequestURITooLong
@ Sip414RequestURITooLong
Definition: SipLayer.h:315
pcpp::SipResponseLayer::Sip469BadInfoPackage
@ Sip469BadInfoPackage
Definition: SipLayer.h:351
pcpp::SipResponseLayer::Sip430FlowFailed
@ Sip430FlowFailed
Definition: SipLayer.h:337
pcpp::SipResponseLayer::Sip487RequestTerminated
@ Sip487RequestTerminated
Definition: SipLayer.h:369
pcpp::SipRequestFirstLine::setMethod
bool setMethod(SipRequestLayer::SipMethod newMethod)
pcpp::SipResponseLayer::Sip429ProvideReferrerIdentity
@ Sip429ProvideReferrerIdentity
Definition: SipLayer.h:335
pcpp::SipResponseLayer::Sip440MaxBreadthExceeded
@ Sip440MaxBreadthExceeded
Definition: SipLayer.h:349
pcpp::SipResponseLayer::Sip438InvalidIdentityHeader
@ Sip438InvalidIdentityHeader
Definition: SipLayer.h:345
pcpp::SipRequestLayer::SipCANCEL
@ SipCANCEL
Definition: SipLayer.h:162
pcpp::SipResponseLayer::Sip401Unauthorized
@ Sip401Unauthorized
Definition: SipLayer.h:289
pcpp::SipResponseLayer::Sip416UnsupportedURIScheme
@ Sip416UnsupportedURIScheme
Definition: SipLayer.h:319
pcpp::SipResponseFirstLine::getVersion
std::string getVersion() const
Definition: SipLayer.h:604
pcpp::SipResponseLayer::Sip403Forbidden
@ Sip403Forbidden
Definition: SipLayer.h:293
pcpp::SipResponseLayer::Sip580PreconditionFailure
@ Sip580PreconditionFailure
Definition: SipLayer.h:395
pcpp::SipResponseLayer::Sip486BusyHere
@ Sip486BusyHere
Definition: SipLayer.h:367
pcpp::SipResponseLayer::SipResponseLayer
SipResponseLayer(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
pcpp::SipRequestLayer::SipREFER
@ SipREFER
Definition: SipLayer.h:178
pcpp::SipRequestLayer::SipINVITE
@ SipINVITE
Definition: SipLayer.h:156
pcpp::SipResponseLayer::Sip204NoNotification
@ Sip204NoNotification
Definition: SipLayer.h:275
pcpp::SipLayer::getOsiModelLayer
OsiModelLayer getOsiModelLayer() const
Definition: SipLayer.h:102
pcpp::SipResponseLayer
Definition: SipLayer.h:248
pcpp::SipResponseLayer::Sip488NotAcceptableHere
@ Sip488NotAcceptableHere
Definition: SipLayer.h:371
pcpp::SipResponseLayer::Sip405MethodNotAllowed
@ Sip405MethodNotAllowed
Definition: SipLayer.h:297
pcpp::SipResponseFirstLine::getStatusCode
SipResponseLayer::SipResponseStatusCode getStatusCode() const
Definition: SipLayer.h:581
pcpp::SipResponseLayer::Sip410Gone
@ Sip410Gone
Definition: SipLayer.h:307
pcpp::SipResponseLayer::operator=
SipResponseLayer & operator=(const SipResponseLayer &other)
pcpp::SipRequestFirstLine::getMethod
SipRequestLayer::SipMethod getMethod() const
Definition: SipLayer.h:479
pcpp::SipRequestFirstLine::parseMethod
static SipRequestLayer::SipMethod parseMethod(char *data, size_t dataLen)
pcpp::SipResponseLayer::Sip433AnonymityDisallowed
@ Sip433AnonymityDisallowed
Definition: SipLayer.h:339
pcpp::SipRequestFirstLine::setUri
bool setUri(std::string newUri)
pcpp::SipResponseLayer::Sip301MovedPermanently
@ Sip301MovedPermanently
Definition: SipLayer.h:279
pcpp::SipRequestLayer::getFirstLine
SipRequestFirstLine * getFirstLine() const
Definition: SipLayer.h:223
pcpp::SipRequestLayer::SipBYE
@ SipBYE
Definition: SipLayer.h:160
pcpp::SipResponseFirstLine
Definition: SipLayer.h:574
pcpp::SipResponseLayer::Sip484AddressIncomplete
@ Sip484AddressIncomplete
Definition: SipLayer.h:363
pcpp::SipResponseLayer::Sip402PaymentRequired
@ Sip402PaymentRequired
Definition: SipLayer.h:291
pcpp::SipResponseLayer::Sip607Unwanted
@ Sip607Unwanted
Definition: SipLayer.h:405
pcpp::SipResponseLayer::Sip482LoopDetected
@ Sip482LoopDetected
Definition: SipLayer.h:359
pcpp::SipResponseLayer::Sip417UnknownResourcePriority
@ Sip417UnknownResourcePriority
Definition: SipLayer.h:321
pcpp::SipResponseLayer::Sip413RequestEntityTooLarge
@ Sip413RequestEntityTooLarge
Definition: SipLayer.h:313
pcpp::SipResponseFirstLine::parseVersion
static std::string parseVersion(char *data, size_t dataLen)
pcpp::SipResponseLayer::Sip422SessionIntervalTooSmall
@ Sip422SessionIntervalTooSmall
Definition: SipLayer.h:327
pcpp::SipResponseLayer::Sip489BadEvent
@ Sip489BadEvent
Definition: SipLayer.h:373
pcpp::SipResponseLayer::Sip412ConditionalRequestFailed
@ Sip412ConditionalRequestFailed
Definition: SipLayer.h:311
pcpp::SipLayer::setContentLength
HeaderField * setContentLength(int contentLength, const std::string prevFieldName="")
pcpp::SipResponseLayer::Sip501NotImplemented
@ Sip501NotImplemented
Definition: SipLayer.h:383
pcpp::SipResponseLayer::Sip423IntervalTooBrief
@ Sip423IntervalTooBrief
Definition: SipLayer.h:329
pcpp::SipResponseLayer::Sip200OK
@ Sip200OK
Definition: SipLayer.h:271
pcpp::SipLayer
Definition: SipLayer.h:74
pcpp::SipResponseLayer::Sip409Conflict
@ Sip409Conflict
Definition: SipLayer.h:305
pcpp::SipResponseLayer::Sip505VersionNotSupported
@ Sip505VersionNotSupported
Definition: SipLayer.h:391
pcpp::SipResponseLayer::Sip180Ringing
@ Sip180Ringing
Definition: SipLayer.h:261
pcpp::SipRequestLayer
Definition: SipLayer.h:145
pcpp::SipRequestLayer::SipOPTIONS
@ SipOPTIONS
Definition: SipLayer.h:168
pcpp::SipResponseLayer::toString
std::string toString() const
pcpp::SipRequestLayer::operator=
SipRequestLayer & operator=(const SipRequestLayer &other)
pcpp::SipResponseLayer::Sip406NotAcceptable
@ Sip406NotAcceptable
Definition: SipLayer.h:299
pcpp::SipResponseLayer::Sip500ServerInternalError
@ Sip500ServerInternalError
Definition: SipLayer.h:381
pcpp::SipResponseLayer::Sip400BadRequest
@ Sip400BadRequest
Definition: SipLayer.h:287
pcpp::SipResponseFirstLine::parseStatusCode
static SipResponseLayer::SipResponseStatusCode parseStatusCode(char *data, size_t dataLen)
pcpp::SipResponseLayer::SipResponseStatusCode
SipResponseStatusCode
Definition: SipLayer.h:256
pcpp::SipResponseLayer::Sip513MessageTooLarge
@ Sip513MessageTooLarge
Definition: SipLayer.h:393
pcpp::SipRequestLayer::SipUPDATE
@ SipUPDATE
Definition: SipLayer.h:182
pcpp::SipResponseLayer::Sip420BadExtension
@ Sip420BadExtension
Definition: SipLayer.h:323
pcpp::SipRequestLayer::SipNOTIFY
@ SipNOTIFY
Definition: SipLayer.h:172
pcpp::SipResponseLayer::Sip502BadGateway
@ Sip502BadGateway
Definition: SipLayer.h:385
pcpp::TextBasedProtocolMessage
Definition: TextBasedProtocol.h:113
pcpp::SipResponseLayer::Sip181CallisBeingForwarded
@ Sip181CallisBeingForwarded
Definition: SipLayer.h:263
pcpp::SipResponseLayer::Sip436BadIdentityInfo
@ Sip436BadIdentityInfo
Definition: SipLayer.h:341
pcpp
The main namespace for the PcapPlusPlus lib.
pcpp::SipResponseLayer::Sip100Trying
@ Sip100Trying
Definition: SipLayer.h:259
pcpp::OsiModelSesionLayer
@ OsiModelSesionLayer
Definition: ProtocolType.h:244
pcpp::SipResponseLayer::Sip485Ambiguous
@ Sip485Ambiguous
Definition: SipLayer.h:365
pcpp::SipResponseLayer::Sip600BusyEverywhere
@ Sip600BusyEverywhere
Definition: SipLayer.h:397
pcpp::SipLayer::computeCalculateFields
void computeCalculateFields()
pcpp::Layer
Definition: Layer.h:70
pcpp::SipRequestFirstLine::getUri
std::string getUri() const
pcpp::SipResponseLayer::Sip300MultipleChoices
@ Sip300MultipleChoices
Definition: SipLayer.h:277
pcpp::SipResponseLayer::Sip494SecurityAgreementRequired
@ Sip494SecurityAgreementRequired
Definition: SipLayer.h:379
pcpp::SipResponseLayer::Sip481Call_TransactionDoesNotExist
@ Sip481Call_TransactionDoesNotExist
Definition: SipLayer.h:357
pcpp::SipRequestLayer::SipMESSAGE
@ SipMESSAGE
Definition: SipLayer.h:180
pcpp::SipResponseLayer::Sip504ServerTimeout
@ Sip504ServerTimeout
Definition: SipLayer.h:389
pcpp::HeaderField
Definition: TextBasedProtocol.h:31
pcpp::SipResponseLayer::Sip439FirstHopLacksOutboundSupport
@ Sip439FirstHopLacksOutboundSupport
Definition: SipLayer.h:347
pcpp::SipResponseLayer::Sip202Accepted
@ Sip202Accepted
Definition: SipLayer.h:273
pcpp::SipResponseLayer::Sip380AlternativeService
@ Sip380AlternativeService
Definition: SipLayer.h:285
pcpp::SipResponseLayer::Sip199EarlyDialogTerminated
@ Sip199EarlyDialogTerminated
Definition: SipLayer.h:269
pcpp::SipRequestLayer::SipRequestLayer
SipRequestLayer(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
pcpp::SipLayer::isSipPort
static bool isSipPort(uint16_t port)
Definition: SipLayer.h:119
pcpp::SipResponseFirstLine::getSize
int getSize() const
Definition: SipLayer.h:631
pcpp::SipResponseLayer::Sip182Queued
@ Sip182Queued
Definition: SipLayer.h:265
pcpp::SipResponseLayer::SipStatusCodeUnknown
@ SipStatusCodeUnknown
Definition: SipLayer.h:407
pcpp::SipResponseFirstLine::getStatusCodeString
std::string getStatusCodeString() const
pcpp::SipResponseLayer::Sip437UnsupportedCertificate
@ Sip437UnsupportedCertificate
Definition: SipLayer.h:343
pcpp::SipResponseLayer::getFirstLine
SipResponseFirstLine * getFirstLine() const
Definition: SipLayer.h:449
pcpp::SipRequestLayer::toString
std::string toString() const
pcpp::SipResponseLayer::Sip503ServiceUnavailable
@ Sip503ServiceUnavailable
Definition: SipLayer.h:387
pcpp::SipResponseFirstLine::setStatusCode
bool setStatusCode(SipResponseLayer::SipResponseStatusCode newStatusCode, std::string statusCodeString="")
pcpp::SipRequestLayer::SipREGISTER
@ SipREGISTER
Definition: SipLayer.h:164
pcpp::SipResponseLayer::Sip428UseIdentityHeader
@ Sip428UseIdentityHeader
Definition: SipLayer.h:333
TextBasedProtocol.h
pcpp::SipRequestLayer::SipACK
@ SipACK
Definition: SipLayer.h:158
pcpp::SipResponseLayer::Sip491RequestPending
@ Sip491RequestPending
Definition: SipLayer.h:375
pcpp::SipRequestLayer::SipPUBLISH
@ SipPUBLISH
Definition: SipLayer.h:174
pcpp::SipResponseFirstLine::SipResponseFirstLineException
Definition: SipLayer.h:647
pcpp::SipResponseLayer::Sip493Undecipherable
@ Sip493Undecipherable
Definition: SipLayer.h:377
pcpp::SipResponseLayer::Sip302MovedTemporarily
@ Sip302MovedTemporarily
Definition: SipLayer.h:281
pcpp::SipRequestFirstLine::getVersion
std::string getVersion() const
Definition: SipLayer.h:503
pcpp::SipResponseLayer::Sip408RequestTimeout
@ Sip408RequestTimeout
Definition: SipLayer.h:303
pcpp::SipRequestLayer::SipMethod
SipMethod
Definition: SipLayer.h:153
pcpp::SipResponseLayer::Sip183SessioninProgress
@ Sip183SessioninProgress
Definition: SipLayer.h:267
pcpp::SipResponseLayer::Sip407ProxyAuthenticationRequired
@ Sip407ProxyAuthenticationRequired
Definition: SipLayer.h:301
pcpp::SipRequestFirstLine
Definition: SipLayer.h:471
pcpp::SipResponseLayer::Sip480TemporarilyUnavailable
@ Sip480TemporarilyUnavailable
Definition: SipLayer.h:355
pcpp::SipResponseLayer::Sip411LengthRequired
@ Sip411LengthRequired
Definition: SipLayer.h:309
pcpp::SipRequestLayer::SipMethodUnknown
@ SipMethodUnknown
Definition: SipLayer.h:184
pcpp::SipRequestLayer::SipPRACK
@ SipPRACK
Definition: SipLayer.h:166
pcpp::SipRequestLayer::SipSUBSCRIBE
@ SipSUBSCRIBE
Definition: SipLayer.h:170
pcpp::SipResponseLayer::Sip483TooManyHops
@ Sip483TooManyHops
Definition: SipLayer.h:361
pcpp::SipResponseLayer::Sip606NotAcceptable
@ Sip606NotAcceptable
Definition: SipLayer.h:403
pcpp::SipResponseLayer::Sip603Decline
@ Sip603Decline
Definition: SipLayer.h:399
pcpp::SipResponseLayer::Sip404NotFound
@ Sip404NotFound
Definition: SipLayer.h:295