udp multicast support in fhem

Begonnen von justme1968, 18 Februar 2022, 21:56:52

Vorheriges Thema - Nächstes Thema

erwin

#30
Ich habe den Verdacht, daß das Problem am schon am IPV6 liegt, (und an den Konstanten, die dort definiert sind...)
jedenfalls zeigt sich bei mir ein ähnlicher Fehler mit einer simplen test.pl, die ein new versucht...
my $hash->{SERVERSOCKET} = IO::Socket::INET6->new(%opts);
Can't locate object method "new" via package "IO::Socket::INET6" (perhaps you forgot to load "IO::Socket::INET6"?) at ./testMC.pl

und es gibt kein INC IO::Socket::INET6 auf dem system!
System:
cat /etc/*release
PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)"
NAME="Raspbian GNU/Linux"
VERSION_ID="7"
VERSION="7 (wheezy)"
ID=raspbian
ID_LIKE=debian
ANSI_COLOR="1;31"

perl version = 5.14

...ich hab eine alte sd-card herausgekramt und auf einem pi-1 gestartet....
Die folgenden Konstanten werden aufgelöst:
Socket::IPPROTO_IP
Socket::IP_MULTICAST_LOOP
Socket::IP_ADD_MEMBERSHIP
Socket::IPV6_ADD_MEMBERSHIP
Socket::IPV6_MULTICAST_LOOP
Socket::IPPROTO_IPV6

Aber diese NICHT:
Socket::IPV6_JOIN_GROUP
Socket::IPV6_LEAVE_GROUP

Falls ich was testen soll, jederzeit! (Auf dem Ding läuft allerdings kein FHEM!)
l-g- erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

erwin

Ad: TcpServerUtils auf wheezy....
So, oder so ähnlich könnte es gehen... Ist zwar nicht wirklich elegant aber compiliert auf wheezy und buster.
IPV6 kann ich nicht testen!
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

rudolfkoenig

@erwin: konntest Du deine Aenderungen testen? Eine initialize Funktion wird bei "use TcpServerUtils.pm" nicht aufgerufen.

Ich habe jetzt bei mir perl-5.16.3 installiert (ist gar nicht so trivial, gcc-11 uebersetzt sie nicht mehr, ich musste erst gcc-9 besorgen), und TcpServerUtils.pm solange bearbeitet, bis ein fhem.cfg mit telnet und FHEMWEB gestartet werden konnte.

Waere gut, wenn jemand Multicast mit der angehaengten Datei testet, dann wuerde ich das einchecken.

erwin

@Rudi: ich hab jetzt dein Modul getestet, naja Testen ist der falsche Ausdruck-
Unter wheezy hab ich nicht mehr machen können, als ein use TcpServerUtils -  und ein TcpServerOpen - mit Hilfe einer test.pl
Im Gegensatz zur SVN Version kompiliert das Modul fehlerfrei. - sprich FHEM sollte damit nicht mehr bei einem use... abstürzen. Ob multicast funktionell ist unter wheezy- sicher nicht!
das open steigt aus mit der FehlerMeldung:
Zitatmulticast not supported without SO_REUSEPORT
, weil  &SO_REUSEPORT nicht definiert ist, und das ist gut so!

Im Prinzip gehts um diese beiden Variablen aus meinem diff, die untere wheezy nicht definiert sind, und einen fatal error (Bareword) beim kompilieren machen. Du hast jetzt konsequenterweise alle "predefined".

Funktionstest (mit IPV4) -multicast mit FHEM hab ich auf Buster gemacht. - Evtl. könnte das noch wer anderer verifizieren. Mit IPV6 kann ich nicht dienen...
Ich würde die Log - msg weglassen/ändern, weil die kommt ja jedesmal wenn wer use TcpServerUtils schreibt und gar nichts mit multicast oder IPV6 im Sinn hat - unter wheezy.....(Vorschlag: "you are using an outdated operating system, this function ist not supported.."  8)
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

rudolfkoenig

Ich habe diese Version eingecheckt, ohne die Log-Ausgabe.

Zitat, weil  &SO_REUSEPORT nicht definiert ist, und das ist gut so!
Diesen Teil habe nicht verstanden: wer verwendet SO_REUSEPORT, wieso koennte man das nicht auch setzen, und warum ist das gut, wenn wheezy kein multicast kriegt?

erwin

ZitatDiesen Teil habe nicht verstanden
Das hat Andre eingeführt, multicast braucht reuse-port support (von perl bzw. OS) falls das nicht da ist, schlägt ein MC-open fehl!
Ich hab kein Problem damit, das MC auf wheezy nicht funktioniert (das hat es bisher auch nicht gegeben), was du jetzt gemacht hast verhindert  nur das fehlschlagen des use unter wheezy - Soll heissen, was bisher funktionierte, geht auch weiterhin! Neue Funktionen für wheezy zu implementieren halte ich für kontraproduktiv.
Danke für die Unterstützung!
erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...