1
0
mirror of https://github.com/fumiama/WireGold.git synced 2026-06-22 19:40:35 +08:00

add 分片

This commit is contained in:
fumiama
2021-12-31 12:34:54 +08:00
parent 7a30bfb1e6
commit d108bb81b4
11 changed files with 336 additions and 147 deletions

View File

@@ -21,24 +21,36 @@ type Tunnel struct {
mtu uint16
}
func Create(me *link.Me, peer string, srcport, destport, mtu uint16) (s Tunnel, err error) {
logrus.Infoln("[tunnel] create from", srcport, "to", destport)
func Create(me *link.Me, peer string) (s Tunnel, err error) {
s.l, err = me.Connect(peer)
if err == nil {
s.in = make(chan []byte, 4)
s.out = make(chan []byte, 4)
s.peerip = net.ParseIP(peer)
s.src = srcport
s.dest = destport
s.mtu = mtu
go s.handleWrite()
go s.handleRead()
} else {
logrus.Errorln("[tunnel] create err:", err)
}
return
}
func (s *Tunnel) Start(srcport, destport, mtu uint16) {
logrus.Infoln("[tunnel] start from", srcport, "to", destport)
s.src = srcport
s.dest = destport
s.mtu = mtu
go s.handleWrite()
go s.handleRead()
}
func (s *Tunnel) Run(srcport, destport, mtu uint16) {
logrus.Infoln("[tunnel] start from", srcport, "to", destport)
s.src = srcport
s.dest = destport
s.mtu = mtu
go s.handleWrite()
s.handleRead()
}
func (s *Tunnel) Write(p []byte) (int, error) {
s.in <- p
return len(p), nil
@@ -63,10 +75,9 @@ func (s *Tunnel) Read(p []byte) (int, error) {
return 0, errors.New("reading reaches nil")
}
func (s *Tunnel) Close() error {
func (s *Tunnel) Stop() {
s.l.Close()
close(s.in)
return nil
}
func (s *Tunnel) handleWrite() {

View File

@@ -27,18 +27,20 @@ func TestTunnel(t *testing.T) {
t.Log("peer priv key:", hex.EncodeToString(peerpk.Private()[:]))
t.Log("peer publ key:", hex.EncodeToString(peerpk.Public()[:]))
m := link.NewMe(selfpk.Private(), "192.168.1.2/32", "127.0.0.1:1236", false)
m := link.NewMe(selfpk.Private(), "192.168.1.2/32", "127.0.0.1:1236", false, 1, 1, 4096)
m.AddPeer("192.168.1.3", peerpk.Public(), "127.0.0.1:1237", []string{"192.168.1.3/32"}, 0, false, false)
p := link.NewMe(peerpk.Private(), "192.168.1.3/32", "127.0.0.1:1237", false)
p := link.NewMe(peerpk.Private(), "192.168.1.3/32", "127.0.0.1:1237", false, 1, 1, 4096)
p.AddPeer("192.168.1.2", selfpk.Public(), "127.0.0.1:1236", []string{"192.168.1.2/32"}, 0, false, false)
tunnme, err := Create(&m, "192.168.1.3", 1, 1, 4096)
tunnme, err := Create(&m, "192.168.1.3")
if err != nil {
t.Fatal(err)
}
tunnpeer, err := Create(&p, "192.168.1.2", 1, 1, 4096)
tunnme.Start(1, 1, 4096)
tunnpeer, err := Create(&p, "192.168.1.2")
if err != nil {
t.Fatal(err)
}
tunnpeer.Start(1, 1, 4096)
sendb := ([]byte)("1234")
tunnme.Write(sendb)
@@ -68,4 +70,7 @@ func TestTunnel(t *testing.T) {
if string(sendb) != string(buf) {
t.Fatal("error: recv 131072 bytes data")
}
tunnme.Stop()
tunnpeer.Stop()
}