presenced / collectord und IPv6

Begonnen von wtremmel, 25 Januar 2022, 14:38:15

Vorheriges Thema - Nächstes Thema

wtremmel

Nachdem ich mein Heimnetz (bzw. Teile davon) auf IPv6-Only umgestellt hatte, stellte ich fest dass presenced nicht mehr richtig funktionierte.
Die Ursache war schnell gefunden - presenced öffnet seinen Socket nur auf IPv4

Hier ein kleiner Patch um presenced auf IPv6 umzustellen - ich bin in Perl nicht fit genug um "beides" einzubauen, aber vielleicht findet sich ja jemand...

*** presenced 2022-01-25 14:31:21.881377164 +0100
--- /usr/sbin/presenced 2022-01-25 10:19:14.629447486 +0100
***************
*** 29,34 ****
--- 29,35 ----


  use IO::Socket;
+ use IO::Socket::IP -register;
  use IO::Select;
  use File::Basename;
  use Getopt::Long;
***************
*** 118,127 ****
  print PIDFILE $$."\n";
  close PIDFILE;

! $server = new IO::Socket::INET (
                                  LocalPort => $opt_p,
                                  Proto => 'tcp',
                                  Listen => 5,
                                  Reuse => 1,
                                  Type => SOCK_STREAM,
                                  KeepAlive => 1,
--- 119,131 ----
  print PIDFILE $$."\n";
  close PIDFILE;

! $server = new IO::Socket::IP (
                                  LocalPort => $opt_p,
                                  Proto => 'tcp',
+ Domain => PF_INET6,
+ V6Only  => 1,
                                  Listen => 5,
+ LocalHost => "::0",
                                  Reuse => 1,
                                  Type => SOCK_STREAM,
                                  KeepAlive => 1,


Collectord muss ich mir noch anschauen, hat aber wohl ein ähnliches Problem...
FHEM auf Raspi4 mit PoE, FS20, HomeMatic mit CCU2, Hue-Bridge,  Rolläden, Heizungen, Fenster, Licht.

wtremmel

Hier ein Patch für collectord - ganz happy bin ich noch nicht damit, ab und zu startet er nicht...


diff --git a/collectord b/collectord
index 7612c09..59f67a8 100755
--- a/collectord
+++ b/collectord
@@ -29,6 +29,7 @@


use IO::Socket;
+use IO::Socket::IP -register;
use IO::Select;
use POSIX;
#use Data::Dumper;
@@ -164,7 +165,7 @@ open(PIDFILE, ">$opt_P");
print PIDFILE $$."\n";
close PIDFILE;

-$server = new IO::Socket::INET (
+$server = new IO::Socket::IP (
     LocalPort => $opt_p,
     Proto => 'tcp',
     Listen => 5,
@@ -505,7 +506,7 @@ sub doQuery($$$)
     my $previous_state = "absence";
     my $current_state = "absence";

-    $client_socket = new IO::Socket::INET (
+    $client_socket = new IO::Socket::IP (
         PeerHost => $values{address},
         PeerPort => $values{port},
         Proto => 'tcp',
@@ -592,7 +593,7 @@ sub doQuery($$$)
             }

             # now try to re-establish the connection
-            $client_socket = new IO::Socket::INET (
+            $client_socket = new IO::Socket::IP (
                 PeerHost => $values{address},
                 PeerPort => $values{port},
                 Proto => 'tcp',
FHEM auf Raspi4 mit PoE, FS20, HomeMatic mit CCU2, Hue-Bridge,  Rolläden, Heizungen, Fenster, Licht.