diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-12-21 04:11:02 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-12-21 04:11:02 +0100 |
commit | 3b7f73ccffe1c053ba6fa1cd931ecdd07cd276ba (patch) | |
tree | ed7c952e9dd895ee093c55f49e60a82e9e724e5b | |
parent | 21b5656d899728c7998436a74b157d86415184d4 (diff) | |
download | plan9front-3b7f73ccffe1c053ba6fa1cd931ecdd07cd276ba.tar.xz |
ip/tinc: handle and set ethertype for ipv6
-rw-r--r-- | sys/src/cmd/ip/tinc.c | 12 |
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); } } |