foreach my $host (@hosts) {
eval {
$ldap = Net::LDAP->new($host, port => $port,
- scheme => $use_ssl == 1 ? 'ldaps' : 'ldap');
+ scheme => $use_ssl == 1 ? 'ldaps' : 'ldap',
+ inet6 => &should_use_inet6($host));
};
if ($@) {
$err = &text('ldap_econn2',
$port = 636;
}
$ldap = Net::LDAP->new($host, port => $port,
- scheme => $proto);
+ scheme => $proto,
+ inet6 => &should_use_inet6($host));
if (!$ldap) {
$err = &text('ldap_econn',
"<tt>$host</tt>","<tt>$port</tt>");
foreach $host (@hosts) {
$ldap = Net::LDAP->new($host, port => $port,
- scheme => $use_ssl == 1 ? 'ldaps' : 'ldap');
+ scheme => $use_ssl == 1 ? 'ldaps' : 'ldap',
+ inet6 => &should_use_inet6($host));
if (!$ldap) {
$err = &text('ldap_econn',
"<tt>$host</tt>", "<tt>$port</tt>");
return $ldap;
}
+# should_use_inet6(host)
+# Returns 1 if some host has a v6 address but not v4
+sub should_use_inet6
+{
+local ($host) = @_;
+return !&to_ipaddress($host) && &to_ip6address($host);
+}
+
# base_chooser_button(field, node, form)
# Returns HTML for a popup LDAP base chooser button
sub base_chooser_button