#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
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;
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;