ref: 3b7f73ccffe1c053ba6fa1cd931ecdd07cd276ba
parent: 21b5656d899728c7998436a74b157d86415184d4
author: cinap_lenrek <[email protected]>
date: Wed Dec 20 23:11:02 EST 2017
ip/tinc: handle and set ethertype for ipv6
--- a/sys/src/cmd/ip/tinc.c
+++ b/sys/src/cmd/ip/tinc.c
@@ -1019,7 +1019,8 @@
memmove(p+4, p, 2*Eaddrlen);
p += 4, n -= 4;
goto Ether;
- case 0x0800: /* IP */
+ case 0x0800: /* IPv4 */
+ case 0x86DD: /* IPv6 */
break;
}
switch(p[EtherHdr] & 0xF0){
@@ -1534,8 +1535,13 @@
localip, localmask);
while((n = read(ipdfd, buf+EtherHdr, sizeof buf-EtherHdr)) > 0){
memset(buf, 0, 2*Eaddrlen);
- buf[EtherType+0] = 0x08;
- buf[EtherType+1] = 0x00;
+ if((buf[EtherHdr]&0xF0) == 0x60){
+ buf[EtherType+0] = 0x86;
+ buf[EtherType+1] = 0xDD;
+ } else{
+ buf[EtherType+0] = 0x08;
+ buf[EtherType+1] = 0x00;
+ }
routepkt(myhost, buf, n+EtherHdr);
}
}