33 lines
		
	
	
		
			801 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			801 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package discovery
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"net"
 | 
						|
 | 
						|
	"git.loafle.net/overflow/overflow_discovery/api/module/discovery/model"
 | 
						|
	"git.loafle.net/overflow/overflow_discovery/discovery/ipv4"
 | 
						|
	"git.loafle.net/overflow/overflow_discovery/discovery/ipv6"
 | 
						|
)
 | 
						|
 | 
						|
func scanHost(zone *model.Zone, dh *model.DiscoveryHost, resultChan chan interface{}, errChan chan error, doneChan chan<- struct{}, stopChan chan struct{}) {
 | 
						|
	defer func() {
 | 
						|
		doneChan <- struct{}{}
 | 
						|
	}()
 | 
						|
 | 
						|
	_, ipNet, err := net.ParseCIDR(zone.Network)
 | 
						|
	if nil != err {
 | 
						|
		errChan <- err
 | 
						|
		return
 | 
						|
	}
 | 
						|
	switch len(ipNet.IP) {
 | 
						|
	case net.IPv4len:
 | 
						|
		ipv4.ScanHost(zone, dh, resultChan, errChan, stopChan)
 | 
						|
	case net.IPv6len:
 | 
						|
		ipv6.ScanHost(zone, dh, resultChan, errChan, stopChan)
 | 
						|
 | 
						|
	default:
 | 
						|
		errChan <- fmt.Errorf("Discovery: Not supported ip length")
 | 
						|
		return
 | 
						|
	}
 | 
						|
}
 |