IPv6 packet constructor engineered

This commit is contained in:
giomba 2019-12-24 10:01:27 +01:00
parent c07807fc86
commit 3eb51a7442
1 changed files with 9 additions and 11 deletions

View File

@ -53,7 +53,9 @@ IPv6Addr::IPv6Addr(const char* address) {
/******** IPv6Packet ********/
IPv6Packet::IPv6Packet() {
;
memset(packet, 0, LEN);
*(packet) = 0x60; /* IP version 6 */
*(packet + 7) = 64; /* hop limit / ttl */
}
IPv6Packet::IPv6Packet(const char* buffer, int len) {
@ -80,16 +82,12 @@ void IPv6Packet::setFlow(const char* flow) {
}
void IPv6Packet::setPayload(char* payload, int len) {
memset(packet, 0, LEN);
*(packet) = 0x60; /* IP version 6 */
*(packet + 4 + 1) = len & 0xff; /* length */
*(packet + 7) = 64; /* hop limit / ttl */
*(packet + 4 + 0) = len >> 8;
*(packet + 4 + 1) = len & 0xff;
memcpy(packet + 40, payload, len); /* payload */
}
memcpy(packet + 40, payload, len); /* actual payload */
}
void IPv6Packet::doAction() {
void IPv6Packet::doAction() {
/* if destination is my address, or destination is "all nodes" address, then... */
if ((memcmp(&(ALL_NODES_ADDRESS), packet + 24, 16) == 0) || (memcmp(&(coppino::address), packet + 24, 16) == 0)) {
int len = ((*(packet + 4)) << 8) + (*(packet + 5));
@ -106,7 +104,7 @@ void IPv6Packet::setPayload(char* payload, int len) {
break;
}
}
}
}
void handleICMP(const char* src_addr, const char* dst_addr, const char* flow, char* packet, int len) {
uint8_t type = *(packet);