Cybersecurity-Projects/PROJECTS/beginner/network-traffic-analyzer/cpp/include/packet/packet.hpp

60 lines
1.2 KiB
C++

#ifndef PACKET_HPP
#define PACKET_HPP
#include <cstdint>
#include <utility>
#include <string>
enum IPVersion {
v4, v6,
};
enum class TransportProtocol {
TCP = 1,
UDP = 2,
ICMP = 3,
ICMP6 = 4,
IGMP = 5,
UNKNOWN = -1,
};
enum class ApplicationProtocol {
HTTP,
HTTPS,
DNS,
FTP,
SSH,
SMTP,
QUIC,
NTP,
UNKNOWN,
};
struct Packet {
IPVersion ip_version;
TransportProtocol transport_protocol;
ApplicationProtocol application_protocol;
//src address
std::string src;
//dest address
std::string dst;
uint16_t src_port;
uint16_t dst_port;
uint32_t total_len;
uint16_t payload_len;
const uint8_t* payload_ptr;
Packet(IPVersion version, TransportProtocol protocol, std::string src, std::string dst,
uint16_t src_port, uint16_t dst_port, uint32_t total_len, uint16_t payload, const uint8_t* payload_ptr) : ip_version(version), transport_protocol(protocol),
src(std::move(src)), dst(std::move(dst)), src_port(src_port), dst_port(dst_port), total_len(total_len), payload_len(payload),
payload_ptr(payload_ptr)
{
this->application_protocol = get_application_protocol();
}
Packet() { }
private:
ApplicationProtocol get_application_protocol();
};
#endif //PACKET_HPP