49 lines
1.0 KiB
C++
49 lines
1.0 KiB
C++
#ifndef COPPINO_IPV6_H
|
|
#define COPPINO_IPV6_H
|
|
|
|
namespace ipv6 {
|
|
|
|
const uint8_t LEN = 128;
|
|
|
|
class IPv6Addr {
|
|
private:
|
|
char address[16];
|
|
public:
|
|
IPv6Addr();
|
|
IPv6Addr(const char* address);
|
|
void deserialize(const char* address);
|
|
const char* serialize();
|
|
};
|
|
|
|
extern IPv6Addr ALL_NODES_ADDRESS;
|
|
|
|
struct ipv6_packet_header {
|
|
char field[4];
|
|
char len[2];
|
|
char next_header;
|
|
char hop_limit;
|
|
IPv6Addr src_addr;
|
|
IPv6Addr dst_addr;
|
|
}__attribute__((packed));
|
|
|
|
class IPv6Packet {
|
|
private:
|
|
char packet[LEN];
|
|
public:
|
|
void setSrcAddress(IPv6Addr& address);
|
|
void setDstAddress(IPv6Addr& address);
|
|
void setNextHeader(uint8_t next_header);
|
|
void setPayload(char* payload, uint8_t len);
|
|
|
|
char* serialize();
|
|
void deserialize(const char*, uint8_t len);
|
|
|
|
void doAction();
|
|
};
|
|
|
|
/* Note: content of message may be changed */
|
|
void handleICMP(const char* src, const char* dst, char* message, int len);
|
|
}
|
|
|
|
#endif
|