mirror of
				https://github.com/yggdrasil-network/yggdrasil-go.git
				synced 2025-11-04 03:05:07 +03:00 
			
		
		
		
	
						commit
						cee28d11f8
					
				
					 4 changed files with 23 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -299,6 +299,7 @@ func (t *tcp) call(saddr string, options interface{}, sintf string, upgrade *Tcp
 | 
			
		|||
				Timeout: time.Second * 5,
 | 
			
		||||
			}
 | 
			
		||||
			if sintf != "" {
 | 
			
		||||
				dialer.Control = t.getControl(sintf)
 | 
			
		||||
				ief, err := net.InterfaceByName(sintf)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,3 +26,7 @@ func (t *tcp) tcpContext(network, address string, c syscall.RawConn) error {
 | 
			
		|||
		return control
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (t *tcp) getControl(sintf string) func(string, string, syscall.RawConn) error {
 | 
			
		||||
	return t.tcpContext
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,3 +29,17 @@ func (t *tcp) tcpContext(network, address string, c syscall.RawConn) error {
 | 
			
		|||
	// Return nil because errors here are not considered fatal for the connection, it just means congestion control is suboptimal
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (t *tcp) getControl(sintf string) func(string, string, syscall.RawConn) error {
 | 
			
		||||
	return func(network, address string, c syscall.RawConn) error {
 | 
			
		||||
		var err error
 | 
			
		||||
		btd := func(fd uintptr) {
 | 
			
		||||
			err = unix.BindToDevice(int(fd), sintf)
 | 
			
		||||
		}
 | 
			
		||||
		c.Control(btd)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			t.link.core.log.Debugln("Failed to set SO_BINDTODEVICE:", sintf)
 | 
			
		||||
		}
 | 
			
		||||
		return t.tcpContext(network, address, c)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,3 +11,7 @@ import (
 | 
			
		|||
func (t *tcp) tcpContext(network, address string, c syscall.RawConn) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (t *tcp) getControl(sintf string) func(string, string, syscall.RawConn) error {
 | 
			
		||||
	return t.tcpContext
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue