1
0
mirror of https://github.com/fumiama/WireGold.git synced 2026-06-08 09:36:24 +08:00

fix recv non-ip packet

This commit is contained in:
fumiama
2021-12-30 13:01:50 +08:00
parent 36de57484d
commit a4036a76bb
3 changed files with 5 additions and 39 deletions

1
go.mod
View File

@@ -9,6 +9,5 @@ require (
github.com/fumiama/water v0.0.0-20211229155341-82646596a427
github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1
github.com/sirupsen/logrus v1.8.1
golang.zx2c4.com/wintun v0.0.0-20211104114900-415007cec224 // indirect
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
)

30
go.sum
View File

@@ -10,36 +10,8 @@ github.com/fumiama/go-x25519 v1.0.0 h1:hiGg9EhseVmGCc8T1jECVkj8Keu/aJ1ZK05RM8Vua
github.com/fumiama/go-x25519 v1.0.0/go.mod h1:8VOhfyGZzw4IUs4nCjQFqW9cA3V/QpSCtP3fo2dLNg4=
github.com/fumiama/gofastTEA v0.0.6 h1:Yni3MXDbJVa/c4CecgdZDgCJK+fLdvGph+OBqY2mtiI=
github.com/fumiama/gofastTEA v0.0.6/go.mod h1:+sBZ05nCA2skZkursHNvyr8kULlEetrYTM2y5kA4rQc=
github.com/fumiama/water v0.0.0-20211229125942-5b6a70c00f4c h1:ww0Xu5oR+ItCOu/UG5oTZhxemEXac3RDW6dZHv+Hbkw=
github.com/fumiama/water v0.0.0-20211229125942-5b6a70c00f4c/go.mod h1:n7jB3H3AVzelGQJA+9r06R4XlGF4P1SVtcpvyLw5p+k=
github.com/fumiama/water v0.0.0-20211229134828-67285c9b6731 h1:V4+UIuj2gIG3HDU7lKOaC7JDu59Kr42trJ/pdhB0mj0=
github.com/fumiama/water v0.0.0-20211229134828-67285c9b6731/go.mod h1:2TP+zWbGdQhV8LgKMkltYUX7q6KqGoRUHIPKrUmsgxQ=
github.com/fumiama/water v0.0.0-20211229135330-90abaa32e415 h1:LipchbWUx40wYqE2eOOE/HU5t6atlphAYaOFTFDt6QA=
github.com/fumiama/water v0.0.0-20211229135330-90abaa32e415/go.mod h1:2TP+zWbGdQhV8LgKMkltYUX7q6KqGoRUHIPKrUmsgxQ=
github.com/fumiama/water v0.0.0-20211229140044-a18737bcce9e h1:4PUm9m0cT4caVf9oGF9DKrIzjyzCSP6CFuPVID/f2Z8=
github.com/fumiama/water v0.0.0-20211229140044-a18737bcce9e/go.mod h1:2TP+zWbGdQhV8LgKMkltYUX7q6KqGoRUHIPKrUmsgxQ=
github.com/fumiama/water v0.0.0-20211229140409-29e50756f779 h1:lyAFI9rSTdTDiIOYdCWbe21yAyUUiNoWD6SVV7Vv/ps=
github.com/fumiama/water v0.0.0-20211229140409-29e50756f779/go.mod h1:2TP+zWbGdQhV8LgKMkltYUX7q6KqGoRUHIPKrUmsgxQ=
github.com/fumiama/water v0.0.0-20211229143618-2e6a6e7c8734 h1:0HpMmtsfBphCjpDclBy/tprImRjXfBYtOLg2lif/jlk=
github.com/fumiama/water v0.0.0-20211229143618-2e6a6e7c8734/go.mod h1:2TP+zWbGdQhV8LgKMkltYUX7q6KqGoRUHIPKrUmsgxQ=
github.com/fumiama/water v0.0.0-20211229150150-f6779d7a5809 h1:aWzKgNIJBlUB75Xa1PoObKixPhQUMw8D23UDlIDyXjw=
github.com/fumiama/water v0.0.0-20211229150150-f6779d7a5809/go.mod h1:2TP+zWbGdQhV8LgKMkltYUX7q6KqGoRUHIPKrUmsgxQ=
github.com/fumiama/water v0.0.0-20211229151111-67ffd8a6cc33 h1:1s2DyitGTKCVhFvQrlfXLNS9JBKhyrzzj1lZVzs8Szk=
github.com/fumiama/water v0.0.0-20211229151111-67ffd8a6cc33/go.mod h1:2TP+zWbGdQhV8LgKMkltYUX7q6KqGoRUHIPKrUmsgxQ=
github.com/fumiama/water v0.0.0-20211229152420-ea1778e8a8fe h1:RHlAMWsIRaEhl6O6fkYZIy9NFX3SLCvNRf1zfgl62zE=
github.com/fumiama/water v0.0.0-20211229152420-ea1778e8a8fe/go.mod h1:XiHGWg8Lgc6+ZENjj9+qQinTraD+FFoJM9uiOs94PR4=
github.com/fumiama/water v0.0.0-20211229152936-c7837c176989 h1:ftaxOPIang127djF2u83QQqLV38yBeqJN/V6jDr29pY=
github.com/fumiama/water v0.0.0-20211229152936-c7837c176989/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo=
github.com/fumiama/water v0.0.0-20211229153125-4158c133a4d8 h1:nqcrKTt6+4AO+CXlyz/cqdANke8UOVSLZ50uoofcI0g=
github.com/fumiama/water v0.0.0-20211229153125-4158c133a4d8/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo=
github.com/fumiama/water v0.0.0-20211229153704-aca20df16f4f h1:iUInIzt++weOzl5Rx0qdzQuvDPWbBKn0kUzbLnsbo5I=
github.com/fumiama/water v0.0.0-20211229153704-aca20df16f4f/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo=
github.com/fumiama/water v0.0.0-20211229155016-ed08eb9b3569 h1:UBzWLI/pnCQDfIDvB/P6kmuipkS6WM0jKpP4ZpwzHAs=
github.com/fumiama/water v0.0.0-20211229155016-ed08eb9b3569/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo=
github.com/fumiama/water v0.0.0-20211229155341-82646596a427 h1:6T/Y1o2wrNzJKjhjOsCVkKJwIlU8jfUBfRYFYQ9r3Uc=
github.com/fumiama/water v0.0.0-20211229155341-82646596a427/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo=
github.com/fumiama/wintun v0.0.0-20211229152127-c33dd13d28a5 h1:pkMNtWnrMuqsy+o4y6ur0+lu8gw96I3If61k+9n0sK4=
github.com/fumiama/wintun v0.0.0-20211229152127-c33dd13d28a5/go.mod h1:dPOG7Af/ArO62RgBz2JJTNFByBn/IXWLo/1kZKcLSe8=
github.com/fumiama/wintun v0.0.0-20211229152851-8bc97c8034c0 h1:WfrSFlIlCAtg6Rt2IGna0HhJYSDE45YVHiYqO4wwsEw=
github.com/fumiama/wintun v0.0.0-20211229152851-8bc97c8034c0/go.mod h1:dPOG7Af/ArO62RgBz2JJTNFByBn/IXWLo/1kZKcLSe8=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@@ -104,8 +76,6 @@ golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.zx2c4.com/wintun v0.0.0-20211104114900-415007cec224 h1:Ug9qvr1myri/zFN6xL17LSCBGFDnphBBhzmILHsM5TY=
golang.zx2c4.com/wintun v0.0.0-20211104114900-415007cec224/go.mod h1:deeaetjYA+DHMHg+sMSMI58GrEteJUUzzw7en6TJQcI=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=

View File

@@ -3,6 +3,7 @@ package lower
import (
"os"
"os/exec"
"strconv"
"github.com/fumiama/water"
"github.com/fumiama/water/waterutil"
@@ -45,16 +46,12 @@ func (nc *NIC) Start(m *link.Me) {
go func() { // 接收到 NIC
for nc.hasstart {
packet := m.Read()
logrus.Infoln("[lower] recv", len(packet.Data), "bytes packet")
if !waterutil.IsIPv4(packet.Data) {
logrus.Warnln("[lower] recv recv non-ipv4 packet")
continue
}
_, err := nc.ifce.Write(packet.Data)
if err != nil {
logrus.Errorln("[lower] recv write to nic err:", err)
break
}
logrus.Infoln("[lower] recv write", len(packet.Data), "bytes packet to nic")
}
}()
buf := make([]byte, 4096)
@@ -70,16 +67,16 @@ func (nc *NIC) Start(m *link.Me) {
}
packet = packet[:n]
if !waterutil.IsIPv4(packet) {
logrus.Warnln("[lower] send recv non-ipv4 packet")
logrus.Warnln("[lower] skip to send", len(packet), "bytes non-ipv4 packet")
continue
}
logrus.Infoln("[lower] send", n, "bytes packet")
dst := waterutil.IPv4Destination(packet)
srcport := waterutil.IPv4SourcePort(packet)
dstport := waterutil.IPv4DestinationPort(packet)
logrus.Infoln("[lower] sending", n, "bytes packet from :"+strconv.Itoa(int(srcport)), "to", dst.String()+":"+strconv.Itoa(int(dstport)))
lnk, err := m.Connect(dst.String())
if err != nil {
logrus.Errorln("[lower] connect to peer err:", err)
logrus.Warnln("[lower] connect to peer", dst.String(), "err:", err)
continue
}
lnk.Write(head.NewPacket(head.ProtoData, srcport, dstport, packet))