extended ICMP packet dumping to parts after packet creation
[pingcheck] / src / ip / ipheader.h
index 66175d7..2911b53 100644 (file)
 #define IPHEADER_H
 
 #include <stdint.h>
+#include <ostream>
 #include <boost/shared_ptr.hpp>
 #include <boost/asio/ip/address.hpp>
+#include "host/messagepayload.h"
 
 /**
  * abstract base class of IPv4Header and IPv6Header
@@ -33,6 +35,7 @@
 class IpHeader
 {
 public:
+    IpHeader(const size_t payload_size);
     virtual boost::asio::ip::address get_source_address() const = 0;
     virtual boost::asio::ip::address get_destination_address() const = 0;
     virtual uint8_t get_version() const = 0;
@@ -43,6 +46,11 @@ public:
     virtual ~IpHeader() {}
 
     virtual std::string to_string() const;
+
+    virtual std::ostream& write(std::ostream &os) const;
+
+protected:
+    MessagePayload Payload;
 };
 
 typedef boost::shared_ptr<IpHeader> IpHeaderPtr;