diff --git a/ipv6.ino b/ipv6.ino index 96ea3ac..0bfc1bb 100644 --- a/ipv6.ino +++ b/ipv6.ino @@ -82,13 +82,11 @@ void IPv6Packet::setDstAddress(IPv6Addr& address) { void IPv6Packet::setPayload(char* payload, int len) { memset(packet, 0, LEN); - ipv6_packet_header* header = (ipv6_packet_header*)packet; - memcpy(header->field, "\x60\x00\x00\x00", 4); - - memcpy(header->len + 1, (char*)&len, 1); - header->hop_limit = 64; + *(packet) = 0x60; /* IP version 6 */ + *(packet + 4 + 1) = len & 0xff; /* length */ + *(packet + 7) = 64; /* hop limit / ttl */ - memcpy(packet + sizeof(ipv6_packet_header), payload, len); + memcpy(packet + 40, payload, len); /* actual payload */ } void IPv6Packet::doAction() {