mirror of
				https://github.com/yggdrasil-network/yggdrasil-go.git
				synced 2025-11-04 03:05:07 +03:00 
			
		
		
		
	Define Adapter base type/interface
This commit is contained in:
		
							parent
							
								
									8045cb4dc3
								
							
						
					
					
						commit
						f9dc300787
					
				
					 3 changed files with 29 additions and 12 deletions
				
			
		
							
								
								
									
										25
									
								
								src/yggdrasil/adapter.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								src/yggdrasil/adapter.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,25 @@
 | 
				
			||||||
 | 
					package yggdrasil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Defines the minimum required functions for an adapter type.
 | 
				
			||||||
 | 
					type AdapterInterface interface {
 | 
				
			||||||
 | 
						init(core *Core, send chan<- []byte, recv <-chan []byte)
 | 
				
			||||||
 | 
						read() error
 | 
				
			||||||
 | 
						write() error
 | 
				
			||||||
 | 
						close() error
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Defines the minimum required struct members for an adapter type (this is
 | 
				
			||||||
 | 
					// now the base type for tunAdapter in tun.go)
 | 
				
			||||||
 | 
					type Adapter struct {
 | 
				
			||||||
 | 
						AdapterInterface
 | 
				
			||||||
 | 
						core *Core
 | 
				
			||||||
 | 
						send chan<- []byte
 | 
				
			||||||
 | 
						recv <-chan []byte
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Initialises the adapter.
 | 
				
			||||||
 | 
					func (adapter *Adapter) init(core *Core, send chan<- []byte, recv <-chan []byte) {
 | 
				
			||||||
 | 
						adapter.core = core
 | 
				
			||||||
 | 
						adapter.send = send
 | 
				
			||||||
 | 
						adapter.recv = recv
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -30,12 +30,6 @@ import (
 | 
				
			||||||
	"golang.org/x/net/ipv6"
 | 
						"golang.org/x/net/ipv6"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type adapter struct {
 | 
					 | 
				
			||||||
	core *Core
 | 
					 | 
				
			||||||
	send chan<- []byte
 | 
					 | 
				
			||||||
	recv <-chan []byte
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// The router struct has channels to/from the tun/tap device and a self peer (0), which is how messages are passed between this node and the peers/switch layer.
 | 
					// The router struct has channels to/from the tun/tap device and a self peer (0), which is how messages are passed between this node and the peers/switch layer.
 | 
				
			||||||
// The router's mainLoop goroutine is responsible for managing all information related to the dht, searches, and crypto sessions.
 | 
					// The router's mainLoop goroutine is responsible for managing all information related to the dht, searches, and crypto sessions.
 | 
				
			||||||
type router struct {
 | 
					type router struct {
 | 
				
			||||||
| 
						 | 
					@ -46,7 +40,7 @@ type router struct {
 | 
				
			||||||
	out       func([]byte)           // packets we're sending to the network, link to peer's "in"
 | 
						out       func([]byte)           // packets we're sending to the network, link to peer's "in"
 | 
				
			||||||
	toRecv    chan router_recvPacket // packets to handle via recvPacket()
 | 
						toRecv    chan router_recvPacket // packets to handle via recvPacket()
 | 
				
			||||||
	tun       tunAdapter             // TUN/TAP adapter
 | 
						tun       tunAdapter             // TUN/TAP adapter
 | 
				
			||||||
	adapters  []adapter              // Other adapters
 | 
						adapters  []Adapter              // Other adapters
 | 
				
			||||||
	recv      chan<- []byte          // place where the tun pulls received packets from
 | 
						recv      chan<- []byte          // place where the tun pulls received packets from
 | 
				
			||||||
	send      <-chan []byte          // place where the tun puts outgoing packets
 | 
						send      <-chan []byte          // place where the tun puts outgoing packets
 | 
				
			||||||
	reset     chan struct{}          // signal that coords changed (re-init sessions/dht)
 | 
						reset     chan struct{}          // signal that coords changed (re-init sessions/dht)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,7 +18,7 @@ const tun_ETHER_HEADER_LENGTH = 14
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Represents a running TUN/TAP interface.
 | 
					// Represents a running TUN/TAP interface.
 | 
				
			||||||
type tunAdapter struct {
 | 
					type tunAdapter struct {
 | 
				
			||||||
	adapter
 | 
						Adapter
 | 
				
			||||||
	icmpv6 icmpv6
 | 
						icmpv6 icmpv6
 | 
				
			||||||
	mtu    int
 | 
						mtu    int
 | 
				
			||||||
	iface  *water.Interface
 | 
						iface  *water.Interface
 | 
				
			||||||
| 
						 | 
					@ -35,10 +35,8 @@ func getSupportedMTU(mtu int) int {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Initialises the TUN/TAP adapter.
 | 
					// Initialises the TUN/TAP adapter.
 | 
				
			||||||
func (tun *tunAdapter) init(core *Core, send chan<- []byte, recv <-chan []byte) {
 | 
					func (tun *tunAdapter) init(core *Core, send chan<- []byte, recv <-chan []byte) {
 | 
				
			||||||
	tun.core = core
 | 
						tun.Adapter.init(core, send, recv)
 | 
				
			||||||
	tun.icmpv6.init(tun)
 | 
						tun.icmpv6.init(tun)
 | 
				
			||||||
	tun.send = send
 | 
					 | 
				
			||||||
	tun.recv = recv
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Starts the setup process for the TUN/TAP adapter, and if successful, starts
 | 
					// Starts the setup process for the TUN/TAP adapter, and if successful, starts
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue