summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2017-12-21 04:11:02 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2017-12-21 04:11:02 +0100
commit3b7f73ccffe1c053ba6fa1cd931ecdd07cd276ba (patch)
treeed7c952e9dd895ee093c55f49e60a82e9e724e5b
parent21b5656d899728c7998436a74b157d86415184d4 (diff)
downloadplan9front-3b7f73ccffe1c053ba6fa1cd931ecdd07cd276ba.tar.xz
ip/tinc: handle and set ethertype for ipv6
-rw-r--r--sys/src/cmd/ip/tinc.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/sys/src/cmd/ip/tinc.c b/sys/src/cmd/ip/tinc.c
index 9d4b0bf91..93a5c054c 100644
--- a/sys/src/cmd/ip/tinc.c
+++ b/sys/src/cmd/ip/tinc.c
@@ -1019,7 +1019,8 @@ Ether:
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 @@ ip2tunnel(void)
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);
}
}