PcapPlusPlus  20.08
HttpLayer.h
Go to the documentation of this file.
1 #ifndef PACKETPP_HTTP_LAYER
2 #define PACKETPP_HTTP_LAYER
3 
4 #include "TextBasedProtocol.h"
5 #include <string>
6 #include <exception>
7 
9 
14 namespace pcpp
15 {
16 
21  {
30  };
31 
32  // some popular HTTP fields
33 
35 #define PCPP_HTTP_HOST_FIELD "Host"
36 
37 #define PCPP_HTTP_CONNECTION_FIELD "Connection"
38 
39 #define PCPP_HTTP_USER_AGENT_FIELD "User-Agent"
40 
41 #define PCPP_HTTP_REFERER_FIELD "Referer"
42 
43 #define PCPP_HTTP_ACCEPT_FIELD "Accept"
44 
45 #define PCPP_HTTP_ACCEPT_ENCODING_FIELD "Accept-Encoding"
46 
47 #define PCPP_HTTP_ACCEPT_LANGUAGE_FIELD "Accept-Language"
48 
49 #define PCPP_HTTP_COOKIE_FIELD "Cookie"
50 
51 #define PCPP_HTTP_CONTENT_LENGTH_FIELD "Content-Length"
52 
53 #define PCPP_HTTP_CONTENT_ENCODING_FIELD "Content-Encoding"
54 
55 #define PCPP_HTTP_CONTENT_TYPE_FIELD "Content-Type"
56 
57 #define PCPP_HTTP_TRANSFER_ENCODING_FIELD "Transfer-Encoding"
58 
59 #define PCPP_HTTP_SERVER_FIELD "Server"
60 
61 
62 
63  // -------- Class HttpMessage -----------------
64 
65 
71  {
72  public:
73 
74  virtual ~HttpMessage() {}
75 
80  static bool isHttpPort(uint16_t port) { return port == 80 || port == 8080; }
81 
82  // overriden methods
83 
84  virtual HeaderField* addField(const std::string& fieldName, const std::string& fieldValue);
85  virtual HeaderField* addField(const HeaderField& newField);
86  virtual HeaderField* insertField(HeaderField* prevField, const std::string& fieldName, const std::string& fieldValue);
87  virtual HeaderField* insertField(HeaderField* prevField, const HeaderField& newField);
88 
90 
91  protected:
92  HttpMessage(uint8_t* data, size_t dataLen, Layer* prevLayer, Packet* packet) : TextBasedProtocolMessage(data, dataLen, prevLayer, packet) {}
93  HttpMessage() : TextBasedProtocolMessage() {}
94  HttpMessage(const HttpMessage& other) : TextBasedProtocolMessage(other) {}
95  HttpMessage& operator=(const HttpMessage& other) { TextBasedProtocolMessage::operator=(other); return *this; }
96 
97  // implementation of abstract methods
98  char getHeaderFieldNameValueSeparator() const { return ':'; }
99  bool spacesAllowedBetweenHeaderFieldNameAndValue() const { return true; }
100  };
101 
102 
103 
104 
105  class HttpRequestFirstLine;
106 
107 
108 
109  // -------- Class HttpRequestLayer -----------------
110 
124  {
125  friend class HttpRequestFirstLine;
126  public:
131  {
152  };
153 
160  HttpRequestLayer(uint8_t* data, size_t dataLen, Layer* prevLayer, Packet* packet);
161 
169  HttpRequestLayer(HttpMethod method, std::string uri, HttpVersion version);
170 
171  virtual ~HttpRequestLayer();
172 
178  HttpRequestLayer(const HttpRequestLayer& other);
179 
186 
190  HttpRequestFirstLine* getFirstLine() const { return m_FirstLine; }
191 
199  std::string getUrl() const;
200 
201  // implement Layer's abstract methods
202  std::string toString() const;
203 
204  private:
205  HttpRequestFirstLine* m_FirstLine;
206  };
207 
208 
209 
210 
211 
212  // -------- Class HttpResponseLayer -----------------
213 
214  class HttpResponseFirstLine;
215 
216 
230  {
231  friend class HttpResponseFirstLine;
232  public:
237  {
400  };
401 
402 
409  HttpResponseLayer(uint8_t* data, size_t dataLen, Layer* prevLayer, Packet* packet);
410 
420  HttpResponseLayer(HttpVersion version, HttpResponseLayer::HttpResponseStatusCode statusCode, std::string statusCodeString = "");
421 
422  virtual ~HttpResponseLayer();
423 
429  HttpResponseLayer(const HttpResponseLayer& other);
430 
437 
441  HttpResponseFirstLine* getFirstLine() const { return m_FirstLine; }
442 
455  HeaderField* setContentLength(int contentLength, const std::string prevFieldName = "");
456 
462  int getContentLength() const;
463 
464  // implement Layer's abstract methods
465 
466  std::string toString() const;
467 
468  private:
469  HttpResponseFirstLine* m_FirstLine;
470 
471  };
472 
473 
474 
475 
476 
477  // -------- Class HttpRequestFirstLine -----------------
478 
491  {
492  friend class HttpRequestLayer;
493  public:
497  HttpRequestLayer::HttpMethod getMethod() const { return m_Method; }
498 
504  bool setMethod(HttpRequestLayer::HttpMethod newMethod);
505 
509  std::string getUri() const;
510 
516  bool setUri(std::string newUri);
517 
521  HttpVersion getVersion() const { return m_Version; }
522 
528  void setVersion(HttpVersion newVersion);
529 
536  static HttpRequestLayer::HttpMethod parseMethod(char* data, size_t dataLen);
537 
541  int getSize() const { return m_FirstLineEndOffset; }
542 
549  bool isComplete() const { return m_IsComplete; }
550 
557  class HttpRequestFirstLineException : public std::exception
558  {
559  public:
560  ~HttpRequestFirstLineException() throw() {}
561  void setMessage(std::string message) { m_Message = message; }
562  virtual const char* what() const throw()
563  {
564  return m_Message.c_str();
565  }
566  private:
567  std::string m_Message;
568  };
569  private:
571  HttpRequestFirstLine(HttpRequestLayer* httpRequest, HttpRequestLayer::HttpMethod method, HttpVersion version, std::string uri = "/");
572  //throw(HttpRequestFirstLineException); // Deprecated in C++17
573 
574  void parseVersion();
575 
576  HttpRequestLayer* m_HttpRequest;
578  HttpVersion m_Version;
579  int m_VersionOffset;
580  int m_UriOffset;
581  int m_FirstLineEndOffset;
582  bool m_IsComplete;
583  HttpRequestFirstLineException m_Exception;
584  };
585 
586 
587 
588 
589 
590  // -------- Class HttpResponseFirstLine -----------------
591 
603  {
604  friend class HttpResponseLayer;
605  public:
610 
614  int getStatusCodeAsInt() const;
615 
619  std::string getStatusCodeString() const;
620 
627  bool setStatusCode(HttpResponseLayer::HttpResponseStatusCode newStatusCode, std::string statusCodeString = "");
628 
632  HttpVersion getVersion() const { return m_Version; }
633 
639  void setVersion(HttpVersion newVersion);
640 
647  static HttpResponseLayer::HttpResponseStatusCode parseStatusCode(char* data, size_t dataLen);
648 
652  int getSize() const { return m_FirstLineEndOffset; }
653 
660  bool isComplete() const { return m_IsComplete; }
661 
668  class HttpResponseFirstLineException : public std::exception
669  {
670  public:
671  ~HttpResponseFirstLineException() throw() {}
672  void setMessage(std::string message) { m_Message = message; }
673  virtual const char* what() const throw()
674  {
675  return m_Message.c_str();
676  }
677  private:
678  std::string m_Message;
679  };
680 
681  private:
683  HttpResponseFirstLine(HttpResponseLayer* httpResponse, HttpVersion version, HttpResponseLayer::HttpResponseStatusCode statusCode, std::string statusCodeString = "");
684 
685  static HttpVersion parseVersion(char* data, size_t dataLen);
686  static HttpResponseLayer::HttpResponseStatusCode validateStatusCode(char* data, size_t dataLen, HttpResponseLayer::HttpResponseStatusCode potentialCode);
687 
688 
689  HttpResponseLayer* m_HttpResponse;
690  HttpVersion m_Version;
692  int m_FirstLineEndOffset;
693  bool m_IsComplete;
694  HttpResponseFirstLineException m_Exception;
695  };
696 
697 } // namespace pcpp
698 
699 #endif /* PACKETPP_HTTP_LAYER */
pcpp::OsiModelLayer
OsiModelLayer
Definition: ProtocolType.h:233
pcpp::HttpResponseLayer::Http417ExpectationFailed
@ Http417ExpectationFailed
Definition: HttpLayer.h:317
pcpp::HttpResponseLayer::Http200OK
@ Http200OK
Definition: HttpLayer.h:245
pcpp::HttpResponseLayer::Http201Created
@ Http201Created
Definition: HttpLayer.h:247
pcpp::Packet
Definition: Packet.h:26
pcpp::HttpResponseLayer::Http306SwitchProxy
@ Http306SwitchProxy
Definition: HttpLayer.h:277
pcpp::HttpResponseLayer::Http300MultipleChoices
@ Http300MultipleChoices
Definition: HttpLayer.h:265
pcpp::HttpResponseLayer::Http521WebServerIsDown
@ Http521WebServerIsDown
Definition: HttpLayer.h:387
pcpp::HttpResponseLayer::Http412PreconditionFailed
@ Http412PreconditionFailed
Definition: HttpLayer.h:307
pcpp::OsiModelApplicationLayer
@ OsiModelApplicationLayer
Definition: ProtocolType.h:248
pcpp::HttpRequestFirstLine
Definition: HttpLayer.h:490
pcpp::HttpResponseLayer::Http402PaymentRequired
@ Http402PaymentRequired
Definition: HttpLayer.h:287
pcpp::HttpResponseLayer::Http423Locked
@ Http423Locked
Definition: HttpLayer.h:327
pcpp::HttpResponseLayer::Http416RequestedRangeNotSatisfiable
@ Http416RequestedRangeNotSatisfiable
Definition: HttpLayer.h:315
pcpp::HttpResponseLayer::Http405MethodNotAllowed
@ Http405MethodNotAllowed
Definition: HttpLayer.h:293
pcpp::HttpRequestLayer::HttpGET
@ HttpGET
Definition: HttpLayer.h:133
pcpp::HttpMessage::isHttpPort
static bool isHttpPort(uint16_t port)
Definition: HttpLayer.h:80
pcpp::HttpRequestFirstLine::getVersion
HttpVersion getVersion() const
Definition: HttpLayer.h:521
pcpp::HttpResponseLayer::Http506VariantAlsoNegotiates
@ Http506VariantAlsoNegotiates
Definition: HttpLayer.h:373
pcpp::HttpResponseLayer::Http499
@ Http499
Definition: HttpLayer.h:359
pcpp::HttpRequestFirstLine::parseMethod
static HttpRequestLayer::HttpMethod parseMethod(char *data, size_t dataLen)
pcpp::HttpResponseLayer::Http418Imateapot
@ Http418Imateapot
Definition: HttpLayer.h:319
pcpp::HttpResponseLayer::Http202Accepted
@ Http202Accepted
Definition: HttpLayer.h:249
pcpp::HttpRequestLayer::HttpRequestLayer
HttpRequestLayer(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
pcpp::HttpResponseLayer::HttpResponseLayer
HttpResponseLayer(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
pcpp::HttpResponseLayer::Http522ConnectionTimedOut
@ Http522ConnectionTimedOut
Definition: HttpLayer.h:389
pcpp::HttpResponseLayer::Http203NonAuthoritativeInformation
@ Http203NonAuthoritativeInformation
Definition: HttpLayer.h:251
pcpp::HttpRequestFirstLine::isComplete
bool isComplete() const
Definition: HttpLayer.h:549
pcpp::HttpRequestLayer::getUrl
std::string getUrl() const
pcpp::HttpResponseLayer::Http431RequestHeaderFieldsTooLarge
@ Http431RequestHeaderFieldsTooLarge
Definition: HttpLayer.h:337
pcpp::HttpResponseLayer::Http414RequestURITooLong
@ Http414RequestURITooLong
Definition: HttpLayer.h:311
pcpp::HttpResponseLayer
Definition: HttpLayer.h:229
pcpp::OneDotZero
@ OneDotZero
Definition: HttpLayer.h:25
pcpp::HttpResponseLayer::Http419AuthenticationTimeout
@ Http419AuthenticationTimeout
Definition: HttpLayer.h:321
pcpp::HttpRequestLayer::HttpMethod
HttpMethod
Definition: HttpLayer.h:130
pcpp::HttpResponseLayer::Http403Forbidden
@ Http403Forbidden
Definition: HttpLayer.h:289
pcpp::HttpRequestLayer::operator=
HttpRequestLayer & operator=(const HttpRequestLayer &other)
pcpp::HttpResponseLayer::Http451
@ Http451
Definition: HttpLayer.h:347
pcpp::HttpResponseLayer::Http206PartialContent
@ Http206PartialContent
Definition: HttpLayer.h:257
pcpp::HttpResponseLayer::Http100Continue
@ Http100Continue
Definition: HttpLayer.h:239
pcpp::HttpResponseLayer::Http444NoResponse
@ Http444NoResponse
Definition: HttpLayer.h:341
pcpp::HttpResponseLayer::Http401Unauthorized
@ Http401Unauthorized
Definition: HttpLayer.h:285
pcpp::HttpRequestFirstLine::setMethod
bool setMethod(HttpRequestLayer::HttpMethod newMethod)
pcpp::HttpResponseFirstLine::getStatusCodeString
std::string getStatusCodeString() const
pcpp::HttpRequestLayer::HttpHEAD
@ HttpHEAD
Definition: HttpLayer.h:135
pcpp::HttpResponseLayer::Http406NotAcceptable
@ Http406NotAcceptable
Definition: HttpLayer.h:295
pcpp::HttpResponseFirstLine::getStatusCode
HttpResponseLayer::HttpResponseStatusCode getStatusCode() const
Definition: HttpLayer.h:609
pcpp::HttpResponseLayer::Http307TemporaryRedirect
@ Http307TemporaryRedirect
Definition: HttpLayer.h:279
pcpp::HttpResponseLayer::Http498TokenExpiredInvalid
@ Http498TokenExpiredInvalid
Definition: HttpLayer.h:357
pcpp::HttpResponseLayer::Http505HTTPVersionNotSupported
@ Http505HTTPVersionNotSupported
Definition: HttpLayer.h:371
pcpp::HttpRequestLayer::HttpPOST
@ HttpPOST
Definition: HttpLayer.h:137
pcpp::HttpMessage::addField
virtual HeaderField * addField(const std::string &fieldName, const std::string &fieldValue)
pcpp::HttpRequestFirstLine::setVersion
void setVersion(HttpVersion newVersion)
pcpp::HttpResponseLayer::Http409Conflict
@ Http409Conflict
Definition: HttpLayer.h:301
pcpp::HttpResponseLayer::setContentLength
HeaderField * setContentLength(int contentLength, const std::string prevFieldName="")
pcpp::HttpRequestLayer::getFirstLine
HttpRequestFirstLine * getFirstLine() const
Definition: HttpLayer.h:190
pcpp::HttpResponseLayer::Http415UnsupportedMediaType
@ Http415UnsupportedMediaType
Definition: HttpLayer.h:313
pcpp::HttpResponseLayer::Http428PreconditionRequired
@ Http428PreconditionRequired
Definition: HttpLayer.h:333
pcpp::HttpVersionUnknown
@ HttpVersionUnknown
Definition: HttpLayer.h:29
pcpp::HttpResponseLayer::Http503ServiceUnavailable
@ Http503ServiceUnavailable
Definition: HttpLayer.h:367
pcpp::HttpMessage::getOsiModelLayer
OsiModelLayer getOsiModelLayer() const
Definition: HttpLayer.h:89
pcpp::HttpRequestLayer::HttpMethodUnknown
@ HttpMethodUnknown
Definition: HttpLayer.h:151
pcpp::HttpRequestFirstLine::setUri
bool setUri(std::string newUri)
pcpp::HttpRequestFirstLine::getMethod
HttpRequestLayer::HttpMethod getMethod() const
Definition: HttpLayer.h:497
pcpp::HttpResponseLayer::Http420
@ Http420
Definition: HttpLayer.h:323
pcpp::HttpResponseLayer::Http301MovedPermanently
@ Http301MovedPermanently
Definition: HttpLayer.h:267
pcpp::HttpMessage
Definition: HttpLayer.h:70
pcpp::HttpResponseLayer::Http226IMUsed
@ Http226IMUsed
Definition: HttpLayer.h:263
pcpp::HttpResponseLayer::Http511NetworkAuthenticationRequired
@ Http511NetworkAuthenticationRequired
Definition: HttpLayer.h:383
pcpp::HttpResponseLayer::Http495CertError
@ Http495CertError
Definition: HttpLayer.h:351
pcpp::HttpResponseLayer::Http408RequestTimeout
@ Http408RequestTimeout
Definition: HttpLayer.h:299
pcpp::HttpRequestLayer::HttpPATCH
@ HttpPATCH
Definition: HttpLayer.h:149
pcpp::HttpResponseFirstLine::HttpResponseFirstLineException
Definition: HttpLayer.h:668
pcpp::HttpResponseLayer::Http510NotExtended
@ Http510NotExtended
Definition: HttpLayer.h:381
pcpp::HttpRequestFirstLine::HttpRequestFirstLineException
Definition: HttpLayer.h:557
pcpp::HttpResponseLayer::Http502BadGateway
@ Http502BadGateway
Definition: HttpLayer.h:365
pcpp::HttpResponseFirstLine
Definition: HttpLayer.h:602
pcpp::HttpResponseLayer::Http413RequestEntityTooLarge
@ Http413RequestEntityTooLarge
Definition: HttpLayer.h:309
pcpp::HttpResponseLayer::toString
std::string toString() const
pcpp::HttpResponseLayer::Http410Gone
@ Http410Gone
Definition: HttpLayer.h:303
pcpp::HttpResponseLayer::Http422UnprocessableEntity
@ Http422UnprocessableEntity
Definition: HttpLayer.h:325
pcpp::HttpResponseLayer::Http497HTTPtoHTTPS
@ Http497HTTPtoHTTPS
Definition: HttpLayer.h:355
pcpp::HttpResponseLayer::getFirstLine
HttpResponseFirstLine * getFirstLine() const
Definition: HttpLayer.h:441
pcpp::HttpResponseLayer::Http599NetworkConnectTimeoutError
@ Http599NetworkConnectTimeoutError
Definition: HttpLayer.h:397
pcpp::HttpResponseFirstLine::getVersion
HttpVersion getVersion() const
Definition: HttpLayer.h:632
pcpp::HttpResponseLayer::getContentLength
int getContentLength() const
pcpp::OneDotOne
@ OneDotOne
Definition: HttpLayer.h:27
pcpp::HttpResponseLayer::Http302
@ Http302
Definition: HttpLayer.h:269
pcpp::HttpResponseLayer::Http523ProxyDeclinedRequest
@ Http523ProxyDeclinedRequest
Definition: HttpLayer.h:391
pcpp::HttpResponseLayer::Http501NotImplemented
@ Http501NotImplemented
Definition: HttpLayer.h:363
pcpp::TextBasedProtocolMessage
Definition: TextBasedProtocol.h:113
pcpp::HttpResponseLayer::Http411LengthRequired
@ Http411LengthRequired
Definition: HttpLayer.h:305
pcpp::HttpRequestFirstLine::getUri
std::string getUri() const
pcpp::HttpResponseLayer::Http400BadRequest
@ Http400BadRequest
Definition: HttpLayer.h:283
pcpp
The main namespace for the PcapPlusPlus lib.
pcpp::HttpResponseLayer::Http440LoginTimeout
@ Http440LoginTimeout
Definition: HttpLayer.h:339
pcpp::HttpResponseLayer::Http304NotModified
@ Http304NotModified
Definition: HttpLayer.h:273
pcpp::HttpResponseFirstLine::setVersion
void setVersion(HttpVersion newVersion)
pcpp::HttpResponseLayer::Http509BandwidthLimitExceeded
@ Http509BandwidthLimitExceeded
Definition: HttpLayer.h:379
pcpp::HttpRequestLayer::HttpCONNECT
@ HttpCONNECT
Definition: HttpLayer.h:147
pcpp::HttpResponseLayer::Http598NetworkReadTimeoutError
@ Http598NetworkReadTimeoutError
Definition: HttpLayer.h:395
pcpp::HttpRequestLayer::toString
std::string toString() const
pcpp::HttpResponseFirstLine::parseStatusCode
static HttpResponseLayer::HttpResponseStatusCode parseStatusCode(char *data, size_t dataLen)
pcpp::HttpResponseLayer::Http204NoContent
@ Http204NoContent
Definition: HttpLayer.h:253
pcpp::HttpResponseLayer::Http303SeeOther
@ Http303SeeOther
Definition: HttpLayer.h:271
pcpp::HttpResponseFirstLine::getSize
int getSize() const
Definition: HttpLayer.h:652
pcpp::HttpResponseLayer::HttpStatusCodeUnknown
@ HttpStatusCodeUnknown
Definition: HttpLayer.h:399
pcpp::HttpResponseFirstLine::setStatusCode
bool setStatusCode(HttpResponseLayer::HttpResponseStatusCode newStatusCode, std::string statusCodeString="")
pcpp::HttpResponseLayer::Http407ProxyAuthenticationRequired
@ Http407ProxyAuthenticationRequired
Definition: HttpLayer.h:297
pcpp::Layer
Definition: Layer.h:70
pcpp::HttpResponseLayer::Http205ResetContent
@ Http205ResetContent
Definition: HttpLayer.h:255
pcpp::HttpResponseLayer::Http207MultiStatus
@ Http207MultiStatus
Definition: HttpLayer.h:259
pcpp::HttpResponseLayer::Http508LoopDetected
@ Http508LoopDetected
Definition: HttpLayer.h:377
pcpp::HeaderField
Definition: TextBasedProtocol.h:31
pcpp::HttpResponseFirstLine::isComplete
bool isComplete() const
Definition: HttpLayer.h:660
pcpp::HttpResponseFirstLine::getStatusCodeAsInt
int getStatusCodeAsInt() const
pcpp::HttpResponseLayer::Http524aTimeoutOccurred
@ Http524aTimeoutOccurred
Definition: HttpLayer.h:393
pcpp::HttpResponseLayer::Http507InsufficientStorage
@ Http507InsufficientStorage
Definition: HttpLayer.h:375
pcpp::HttpResponseLayer::Http208AlreadyReported
@ Http208AlreadyReported
Definition: HttpLayer.h:261
pcpp::HttpRequestFirstLine::getSize
int getSize() const
Definition: HttpLayer.h:541
pcpp::HttpRequestLayer::HttpDELETE
@ HttpDELETE
Definition: HttpLayer.h:141
pcpp::HttpResponseLayer::Http450BlockedByWindowsParentalControls
@ Http450BlockedByWindowsParentalControls
Definition: HttpLayer.h:345
pcpp::HttpResponseLayer::Http101SwitchingProtocols
@ Http101SwitchingProtocols
Definition: HttpLayer.h:241
pcpp::HttpResponseLayer::Http520OriginError
@ Http520OriginError
Definition: HttpLayer.h:385
TextBasedProtocol.h
pcpp::HttpRequestLayer
Definition: HttpLayer.h:123
pcpp::HttpResponseLayer::Http424FailedDependency
@ Http424FailedDependency
Definition: HttpLayer.h:329
pcpp::HttpResponseLayer::HttpResponseStatusCode
HttpResponseStatusCode
Definition: HttpLayer.h:236
pcpp::HttpResponseLayer::Http494RequestHeaderTooLarge
@ Http494RequestHeaderTooLarge
Definition: HttpLayer.h:349
pcpp::HttpResponseLayer::Http496NoCert
@ Http496NoCert
Definition: HttpLayer.h:353
pcpp::HttpResponseLayer::Http404NotFound
@ Http404NotFound
Definition: HttpLayer.h:291
pcpp::HttpResponseLayer::Http102Processing
@ Http102Processing
Definition: HttpLayer.h:243
pcpp::HttpResponseLayer::Http426UpgradeRequired
@ Http426UpgradeRequired
Definition: HttpLayer.h:331
pcpp::HttpResponseLayer::Http500InternalServerError
@ Http500InternalServerError
Definition: HttpLayer.h:361
pcpp::HttpResponseLayer::Http305UseProxy
@ Http305UseProxy
Definition: HttpLayer.h:275
pcpp::HttpRequestLayer::HttpOPTIONS
@ HttpOPTIONS
Definition: HttpLayer.h:145
pcpp::HttpRequestLayer::HttpTRACE
@ HttpTRACE
Definition: HttpLayer.h:143
pcpp::HttpResponseLayer::Http449RetryWith
@ Http449RetryWith
Definition: HttpLayer.h:343
pcpp::HttpResponseLayer::operator=
HttpResponseLayer & operator=(const HttpResponseLayer &other)
pcpp::ZeroDotNine
@ ZeroDotNine
Definition: HttpLayer.h:23
pcpp::HttpResponseLayer::Http429TooManyRequests
@ Http429TooManyRequests
Definition: HttpLayer.h:335
pcpp::HttpVersion
HttpVersion
Definition: HttpLayer.h:20
pcpp::HttpResponseLayer::Http308PermanentRedirect
@ Http308PermanentRedirect
Definition: HttpLayer.h:281
pcpp::HttpRequestLayer::HttpPUT
@ HttpPUT
Definition: HttpLayer.h:139
pcpp::HttpResponseLayer::Http504GatewayTimeout
@ Http504GatewayTimeout
Definition: HttpLayer.h:369
pcpp::HttpMessage::insertField
virtual HeaderField * insertField(HeaderField *prevField, const std::string &fieldName, const std::string &fieldValue)