This commit is contained in:
Alec
2022-01-30 21:18:07 -07:00
parent cc4cd1c010
commit c750bc1d92
3 changed files with 9 additions and 21 deletions

View File

@@ -5,7 +5,6 @@ import (
"context"
"errors"
"fmt"
"io"
"log"
"net"
"os"
@@ -23,7 +22,6 @@ import (
"github.com/libp2p/go-libp2p-core/host"
"github.com/libp2p/go-libp2p-core/network"
"github.com/libp2p/go-libp2p-core/peer"
"golang.org/x/net/ipv4"
)
var (
@@ -189,7 +187,7 @@ func UpRun(r *cmd.Root, c *cmd.Sub) {
var plen int
var dst string
for {
plen, err = tunDev.Iface.Read([]byte(packet))
plen, err = tunDev.Iface.Read(packet)
if err != nil {
log.Println(err)
continue
@@ -197,7 +195,7 @@ func UpRun(r *cmd.Root, c *cmd.Sub) {
dst = net.IPv4(packet[16], packet[17], packet[18], packet[19]).String()
stream, ok = activeStreams[dst]
if ok {
_, err = stream.Write([]byte(packet[:plen]))
_, err = stream.Write(packet[:plen])
if err == nil {
continue
}
@@ -205,12 +203,12 @@ func UpRun(r *cmd.Root, c *cmd.Sub) {
ok = false
}
if !ok {
stream, err = host.NewStream(ctx, peerTable[dst])
stream, err = host.NewStream(ctx, peerTable[dst], p2p.Protocol)
if err != nil {
log.Println(err)
continue
}
stream.Write([]byte(packet[:plen]))
stream.Write(packet[:plen])
activeStreams[dst] = stream
}
}
@@ -253,24 +251,17 @@ func streamHandler(stream network.Stream) {
stream.Reset()
return
}
headers := io.LimitReader(stream, 20)
var err error
var header *ipv4.Header
var packetHeader = make([]byte, 20)
var packet = make([]byte, 1420)
var plen int
for {
_, err = headers.Read([]byte(packetHeader))
plen, err = stream.Read(packet)
if err != nil {
log.Println(err)
stream.Close()
return
}
header, err = ipv4.ParseHeader(packetHeader)
if err != nil {
log.Println(err)
continue
}
tunDev.Iface.Write(packetHeader)
io.CopyN(tunDev.Iface.ReadWriteCloser, stream, int64(header.TotalLen))
tunDev.Iface.Write(packet[:plen])
}
}

1
go.mod
View File

@@ -14,7 +14,6 @@ require (
github.com/libp2p/go-libp2p-quic-transport v0.12.0
github.com/libp2p/go-tcp-transport v0.2.8
github.com/multiformats/go-multiaddr v0.3.3
github.com/songgao/packets v0.0.0-20160404182456-549a10cd4091
github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8
github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e
github.com/vishvananda/netlink v1.1.0

2
go.sum
View File

@@ -838,8 +838,6 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/smola/gocompat v0.2.0/go.mod h1:1B0MlxbmoZNo3h8guHp8HztB3BSYR5itql9qtVc0ypY=
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
github.com/songgao/packets v0.0.0-20160404182456-549a10cd4091 h1:1zN6ImoqhSJhN8hGXFaJlSC8msLmIbX8bFqOfWLKw0w=
github.com/songgao/packets v0.0.0-20160404182456-549a10cd4091/go.mod h1:N20Z5Y8oye9a7HmytmZ+tr8Q2vlP0tAHP13kTHzwvQY=
github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8 h1:TG/diQgUe0pntT/2D9tmUCz4VNwm9MfrtPr0SU2qSX8=
github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8/go.mod h1:P5HUIBuIWKbyjl083/loAegFkfbFNx5i2qEP4CNbm7E=
github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=