mirror of
				https://github.com/yggdrasil-network/yggdrasil-go.git
				synced 2025-11-04 03:05:07 +03:00 
			
		
		
		
	Wrap conn in Yggdrasil instead, so not necessary to do so in Ironwood
This commit is contained in:
		
							parent
							
								
									5f9616e00d
								
							
						
					
					
						commit
						7242029e43
					
				
					 4 changed files with 34 additions and 19 deletions
				
			
		
							
								
								
									
										2
									
								
								go.mod
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -2,8 +2,6 @@ module github.com/yggdrasil-network/yggdrasil-go
 | 
			
		|||
 | 
			
		||||
go 1.16
 | 
			
		||||
 | 
			
		||||
replace github.com/Arceliar/ironwood => github.com/neilalexander/ironwood v0.0.0-20220130210920-48e68101c869
 | 
			
		||||
 | 
			
		||||
require (
 | 
			
		||||
	github.com/Arceliar/ironwood v0.0.0-20210619124114-6ad55cae5031
 | 
			
		||||
	github.com/Arceliar/phony v0.0.0-20210209235338-dde1a8dca979
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										14
									
								
								go.sum
									
										
									
									
									
								
							
							
						
						
									
										14
									
								
								go.sum
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,3 +1,5 @@
 | 
			
		|||
github.com/Arceliar/ironwood v0.0.0-20210619124114-6ad55cae5031 h1:DZVDfYhVdu+0wAiRHoY1olyNkKxIot9UjBnbQFzuUlM=
 | 
			
		||||
github.com/Arceliar/ironwood v0.0.0-20210619124114-6ad55cae5031/go.mod h1:RP72rucOFm5udrnEzTmIWLRVGQiV/fSUAQXJ0RST/nk=
 | 
			
		||||
github.com/Arceliar/phony v0.0.0-20210209235338-dde1a8dca979 h1:WndgpSW13S32VLQ3ugUxx2EnnWmgba1kCqPkd4Gk1yQ=
 | 
			
		||||
github.com/Arceliar/phony v0.0.0-20210209235338-dde1a8dca979/go.mod h1:6Lkn+/zJilRMsKmbmG1RPoamiArC6HS73xbwRyp3UyI=
 | 
			
		||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
 | 
			
		||||
| 
						 | 
				
			
			@ -6,9 +8,6 @@ github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1o
 | 
			
		|||
github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4=
 | 
			
		||||
github.com/cheggaaa/pb/v3 v3.0.8 h1:bC8oemdChbke2FHIIGy9mn4DPJ2caZYQnfbRqwmdCoA=
 | 
			
		||||
github.com/cheggaaa/pb/v3 v3.0.8/go.mod h1:UICbiLec/XO6Hw6k+BHEtHeQFzzBH4i2/qk/ow1EJTA=
 | 
			
		||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 | 
			
		||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 | 
			
		||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 | 
			
		||||
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
 | 
			
		||||
github.com/fatih/color v1.12.0 h1:mRhaKNwANqRgUBGKmnI5ZxEk7QXmjQeCcuYFMX2bfcc=
 | 
			
		||||
github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
 | 
			
		||||
| 
						 | 
				
			
			@ -32,24 +31,15 @@ github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4
 | 
			
		|||
github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
 | 
			
		||||
github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag=
 | 
			
		||||
github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
 | 
			
		||||
github.com/neilalexander/ironwood v0.0.0-20220130210920-48e68101c869 h1:YLBjFf0shdkRdqvNDAe7NnJeImGUBxUJUz03EWxMo3g=
 | 
			
		||||
github.com/neilalexander/ironwood v0.0.0-20220130210920-48e68101c869/go.mod h1:tToy83o7pWQ23NxJVyROFwVDvp1BkIruTuD3MrXqkDE=
 | 
			
		||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
			
		||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
			
		||||
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
 | 
			
		||||
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
 | 
			
		||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
 | 
			
		||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 | 
			
		||||
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
 | 
			
		||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 | 
			
		||||
github.com/vishvananda/netlink v1.1.0 h1:1iyaYNBLmP6L0220aDnYQpo1QEV4t4hJ+xEEhhJH8j0=
 | 
			
		||||
github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=
 | 
			
		||||
github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU=
 | 
			
		||||
github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f h1:p4VB7kIXpOQvVn1ZaTIVp+3vuYAXFe3OJEvjbUYJLaA=
 | 
			
		||||
github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0=
 | 
			
		||||
github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
 | 
			
		||||
go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
 | 
			
		||||
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 | 
			
		||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
			
		||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
			
		||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,7 @@ package core
 | 
			
		|||
 | 
			
		||||
import (
 | 
			
		||||
	"crypto/ed25519"
 | 
			
		||||
	"sync/atomic"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	//"encoding/hex"
 | 
			
		||||
| 
						 | 
				
			
			@ -80,9 +81,11 @@ func (c *Core) GetPeers() []Peer {
 | 
			
		|||
		if name := names[p.Conn]; name != "" {
 | 
			
		||||
			info.Remote = name
 | 
			
		||||
		}
 | 
			
		||||
		info.RXBytes = p.RXBytes
 | 
			
		||||
		info.TXBytes = p.TXBytes
 | 
			
		||||
		info.Uptime = p.Uptime
 | 
			
		||||
		if linkconn, ok := p.Conn.(*linkConn); ok {
 | 
			
		||||
			info.RXBytes = atomic.LoadUint64(&linkconn.rx)
 | 
			
		||||
			info.TXBytes = atomic.LoadUint64(&linkconn.tx)
 | 
			
		||||
			info.Uptime = time.Since(linkconn.up)
 | 
			
		||||
		}
 | 
			
		||||
		peers = append(peers, info)
 | 
			
		||||
	}
 | 
			
		||||
	return peers
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,8 @@ import (
 | 
			
		|||
	//"sync/atomic"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"sync/atomic"
 | 
			
		||||
 | 
			
		||||
	"github.com/yggdrasil-network/yggdrasil-go/src/address"
 | 
			
		||||
	"github.com/yggdrasil-network/yggdrasil-go/src/util"
 | 
			
		||||
	"golang.org/x/net/proxy"
 | 
			
		||||
| 
						 | 
				
			
			@ -40,7 +42,7 @@ type linkInfo struct {
 | 
			
		|||
type link struct {
 | 
			
		||||
	lname    string
 | 
			
		||||
	links    *links
 | 
			
		||||
	conn     net.Conn
 | 
			
		||||
	conn     *linkConn
 | 
			
		||||
	options  linkOptions
 | 
			
		||||
	info     linkInfo
 | 
			
		||||
	incoming bool
 | 
			
		||||
| 
						 | 
				
			
			@ -124,7 +126,10 @@ func (l *links) call(u *url.URL, sintf string) error {
 | 
			
		|||
func (l *links) create(conn net.Conn, name, linkType, local, remote string, incoming, force bool, options linkOptions) (*link, error) {
 | 
			
		||||
	// Technically anything unique would work for names, but let's pick something human readable, just for debugging
 | 
			
		||||
	intf := link{
 | 
			
		||||
		conn:    conn,
 | 
			
		||||
		conn: &linkConn{
 | 
			
		||||
			Conn: conn,
 | 
			
		||||
			up:   time.Now(),
 | 
			
		||||
		},
 | 
			
		||||
		lname:   name,
 | 
			
		||||
		links:   l,
 | 
			
		||||
		options: options,
 | 
			
		||||
| 
						 | 
				
			
			@ -265,3 +270,22 @@ func (intf *link) close() {
 | 
			
		|||
func (intf *link) name() string {
 | 
			
		||||
	return intf.lname
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type linkConn struct {
 | 
			
		||||
	net.Conn
 | 
			
		||||
	rx uint64
 | 
			
		||||
	tx uint64
 | 
			
		||||
	up time.Time
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *linkConn) Read(p []byte) (n int, err error) {
 | 
			
		||||
	n, err = c.Conn.Read(p)
 | 
			
		||||
	atomic.AddUint64(&c.rx, uint64(n))
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *linkConn) Write(p []byte) (n int, err error) {
 | 
			
		||||
	n, err = c.Conn.Write(p)
 | 
			
		||||
	atomic.AddUint64(&c.tx, uint64(n))
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue