#ifndef COMMON_HEADER_HPP_SEFIWCT4 #define COMMON_HEADER_HPP_SEFIWCT4 #include #include #include #include #include #include #include namespace vanetza { namespace geonet { struct Area; struct DataRequest; struct ShbDataRequest; class LocationTable; enum class NextHeaderCommon { Any = 0, BTP_A = 1, BTP_B = 2, IPv6 = 3 }; struct CommonHeader { public: CommonHeader(); CommonHeader(const MIB&); CommonHeader(const DataRequest&, const MIB&); CommonHeader(const ShbDataRequest&, const MIB&); static constexpr std::size_t length_bytes = 8; NextHeaderCommon next_header; // 4 bit BitNumber reserved1; HeaderType header_type; TrafficClass traffic_class; uint8_t flags; // Bit 0: itsGnIsMobile uint16_t payload; // number of octets following whole GeoNet header uint8_t maximum_hop_limit; uint8_t reserved2; }; void serialize(const CommonHeader&, OutputArchive&); void deserialize(CommonHeader&, InputArchive&); } // namespace geonet } // namespace vanetza #endif /* COMMON_HEADER_HPP_SEFIWCT4 */