coppino/ipv6.h

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