mirror of
				https://github.com/yggdrasil-network/water.git
				synced 2025-10-31 01:05:10 +03:00 
			
		
		
		
	use embeded elements instead or private field for /dev/net/tun
this makes it possible to get *os.File by using type assertion over ReadWriteCloser. resolves #7
This commit is contained in:
		
							parent
							
								
									4a6164f5ed
								
							
						
					
					
						commit
						6a76f249f6
					
				
					 2 changed files with 5 additions and 19 deletions
				
			
		
							
								
								
									
										18
									
								
								if.go
									
										
									
									
									
								
							
							
						
						
									
										18
									
								
								if.go
									
										
									
									
									
								
							|  | @ -1,13 +1,11 @@ | ||||||
| package water | package water | ||||||
| 
 | 
 | ||||||
| import ( | import "io" | ||||||
| 	"os" |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| // Interface is a TUN/TAP interface. | // Interface is a TUN/TAP interface. | ||||||
| type Interface struct { | type Interface struct { | ||||||
| 	isTAP bool | 	isTAP bool | ||||||
| 	file  *os.File | 	io.ReadWriteCloser | ||||||
| 	name string | 	name string | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -39,15 +37,3 @@ func (ifce *Interface) IsTAP() bool { | ||||||
| func (ifce *Interface) Name() string { | func (ifce *Interface) Name() string { | ||||||
| 	return ifce.name | 	return ifce.name | ||||||
| } | } | ||||||
| 
 |  | ||||||
| // Implement io.Writer interface. |  | ||||||
| func (ifce *Interface) Write(p []byte) (n int, err error) { |  | ||||||
| 	n, err = ifce.file.Write(p) |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Implement io.Reader interface. |  | ||||||
| func (ifce *Interface) Read(p []byte) (n int, err error) { |  | ||||||
| 	n, err = ifce.file.Read(p) |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  | @ -30,7 +30,7 @@ func newTAP(ifName string) (ifce *Interface, err error) { | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 	ifce = &Interface{isTAP: true, file: file, name: name} | 	ifce = &Interface{isTAP: true, ReadWriteCloser: file, name: name} | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -43,7 +43,7 @@ func newTUN(ifName string) (ifce *Interface, err error) { | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 	ifce = &Interface{isTAP: false, file: file, name: name} | 	ifce = &Interface{isTAP: false, ReadWriteCloser: file, name: name} | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Song Gao
						Song Gao