code: func (b *Builder) expandIPs(name string, s *string) []*net.IPAddr {
  	if s == nil || *s == "" {
  		return nil
  	}
  
  	addrs := b.expandAddrs(name, s)
  	var x []*net.IPAddr
  	for _, addr := range addrs {
  		switch a := addr.(type) {
  		case *net.IPAddr:
  			x = append(x, a)
  		case *net.UnixAddr:
  			b.err = multierror.Append(b.err, fmt.Errorf("%s cannot be a unix socket", name))
  			return nil
  		default:
  			b.err = multierror.Append(b.err, fmt.Errorf("%s has invalid address type %T", name, a))
  			return nil
  		}
  	}
  	return x
  }
docs: // expandIPs expands the go-sockaddr template in s and returns a list of
  // *net.IPAddr. If one of the expanded addresses is a unix socket
  // address an error is set and nil is returned.