loopbackIP returns the first loopback IP address sniffing network interfaces or nil if none is found.
()
| 121 | // loopbackIP returns the first loopback IP address sniffing network |
| 122 | // interfaces or nil if none is found. |
| 123 | func loopbackIP() net.IP { |
| 124 | interfaces, err := net.Interfaces() |
| 125 | if err != nil { |
| 126 | return nil |
| 127 | } |
| 128 | for _, inf := range interfaces { |
| 129 | const flagUpLoopback = net.FlagUp | net.FlagLoopback |
| 130 | if inf.Flags&flagUpLoopback == flagUpLoopback { |
| 131 | addrs, _ := inf.Addrs() |
| 132 | for _, addr := range addrs { |
| 133 | ip, _, err := net.ParseCIDR(addr.String()) |
| 134 | if err == nil && ip.IsLoopback() { |
| 135 | return ip |
| 136 | } |
| 137 | } |
| 138 | } |
| 139 | } |
| 140 | return nil |
| 141 | } |
| 142 | |
| 143 | // RandPort returns a random port to listen on. |
| 144 | func RandPort() (int, error) { |