From 7328021a7c3ede2399fb7bb7654be49f2bd7a75d Mon Sep 17 00:00:00 2001 From: Anton Evangelatov Date: Fri, 9 Mar 2018 14:32:49 +0100 Subject: [PATCH] p2p/sim: fix comment and update ExternalIP --- p2p/simulations/adapters/docker.go | 2 +- p2p/simulations/adapters/exec.go | 28 +++++++++------------------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/p2p/simulations/adapters/docker.go b/p2p/simulations/adapters/docker.go index 6cdeec7b5b..d145c46b3a 100644 --- a/p2p/simulations/adapters/docker.go +++ b/p2p/simulations/adapters/docker.go @@ -99,7 +99,7 @@ func (d *DockerAdapter) NewNode(config *NodeConfig) (Node, error) { conf.Stack.P2P.NAT = nil conf.Stack.NoUSB = true - // listen on a localhost port, which we set when we + // listen on all interfaces on a given port, which we set when we // initialise NodeConfig (usually a random port) conf.Stack.P2P.ListenAddr = fmt.Sprintf(":%d", config.Port) diff --git a/p2p/simulations/adapters/exec.go b/p2p/simulations/adapters/exec.go index 185123206c..a147e1e7b0 100644 --- a/p2p/simulations/adapters/exec.go +++ b/p2p/simulations/adapters/exec.go @@ -340,27 +340,17 @@ type execNodeConfig struct { // ExternalIP gets an external IP address so that Enode URL is usable func ExternalIP() net.IP { - //addrs, err := net.InterfaceAddrs() - //if err != nil { - //log.Crit("error getting IP address", "err", err) - //} - //for _, addr := range addrs { - //if ip, ok := addr.(*net.IPNet); ok && !ip.IP.IsLoopback() { - //return ip.IP - //} - //} - //log.Crit("unable to determine explicit IP address") - //return net.IP{127, 0, 0, 1} - - conn, err := net.Dial("udp", "8.8.8.8:80") + addrs, err := net.InterfaceAddrs() if err != nil { - panic(err) + log.Crit("error getting IP address", "err", err) } - defer conn.Close() - - localAddr := conn.LocalAddr().(*net.UDPAddr) - - return localAddr.IP + for _, addr := range addrs { + if ip, ok := addr.(*net.IPNet); ok && !ip.IP.IsLoopback() && !ip.IP.IsLinkLocalUnicast() { + return ip.IP + } + } + log.Crit("unable to determine explicit IP address") + return net.IP{127, 0, 0, 1} } // execP2PNode starts a devp2p node when the current binary is executed with