On Thu, 2022-02-03 at 23:38 +0100, Benny Pedersen wrote:
> On 2022-02-03 22:31, Brian J. Murrell wrote:
> 
> > Is it really possible that Socket6::gethostbyname2 is not implemented
> > on a modern and recent distro such as Fedora?
> 
> yes

Well, it seems that the gethostbyname*() interfaces are actually
obsolete and as such we should not be surprised to see them start to
disappear.

https://linux.die.net/man/3/gethostbyname2:

   The gethostbyname*() and gethostbyaddr*() functions are obsolete.
   Applications should use getaddrinfo(3) and getnameinfo(3) instead.

The glibc manpage for gethostbyname2 says the same thing:

$ man gethostbyname2
...
DESCRIPTION
       The gethostbyname*(), gethostbyaddr*(), herror(), and hstrerror() 
functions are obsolete.  Applications should use getaddrinfo(3), 
getnameinfo(3), and  gai_str‐
       error(3) instead.

> reported to fedore maintainer ?, its not a shorewall bug

Well, it is, in that shorewall is using obsoleted interfaces.  The perl
package maintainer at RedHat offered up the following patch which works
here:

--- /usr/share/perl5/vendor_perl/Shorewall/IPAddrs.pm.orig      2021-11-05 
11:03:22.000000000 +0000
+++ /usr/share/perl5/vendor_perl/Shorewall/IPAddrs.pm   2022-02-06 
13:28:43.045058966 +0000
@@ -509,7 +509,7 @@ sub validate_6address( $$ ) {
     unless ( valid_6address $addr ) {
        fatal_error "Invalid IPv6 Address ($addr)" unless $allow_name;
        require Socket6;
-       fatal_error "Unknown Host ($addr)" unless (@addrs = 
Socket6::gethostbyname2( $addr, Socket6::AF_INET6()));
+       fatal_error "Unknown Host ($addr)" unless (@addrs = 
Socket6::getaddrinfo( $addr, 0, Socket6::AF_INET6()));
 
        if ( defined wantarray ) {
            shift @addrs for (1..4);
@@ -527,7 +527,7 @@ sub resolve_6dnsname( $ ) {
     my @addrs;
     
     require Socket6;
-    fatal_error "Unknown Host ($net)" unless (@addrs = 
Socket6::gethostbyname2( $net, Socket6::AF_INET6()));
+    fatal_error "Unknown Host ($net)" unless (@addrs = Socket6::getaddrinfo( 
$net, 0, Socket6::AF_INET6()));
 
     shift @addrs for (1..4);
     for ( @addrs ) {

Cheers,
b.




_______________________________________________
Shorewall-users mailing list
Shorewall-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/shorewall-users

Reply via email to