Multicast Registrierung schlaegt fehl

29/10/2007 - 08:41 von Stephan Menzel | Report spam
Hi zusammen,

wie koennten die Gruende sein, dass die Registrierung eines Sockets fuer
eine Multicastgruppe fehlschlaegt? (Debian x86, kernel 2.6.20)

Ich habe hier zwei Daemons auf einer Kiste mit 2 NICs. Beide Daemons
basieren auf einer lib die eine Multicastregistrierung durchfuehrt. Das
sieht ungefaehr so aus:

struct ip_mreqn mreq;
inet_aton(groups, &mreq.imr_multiaddr);
mreq.imr_address.s_addr = INADDR_ANY;
setsockopt(sock, SOL_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq));

Nun klappt das bei einem der beiden Daemons problemlos, bei dem anderen
jedoch nicht. Dort bekomme ich vom setsockopt den Fehler "No such device".
Und netstat -ang zeigt mir die registrierten Gruppen von Daemon 1 (auf
beiden Interfaces) und nicht die von Dameon 2.
Routes sind OK.

Wie gesagt, das einzige was ich sehen kann das verschieden ist, ist die
Gruppe selbst, aber Daemon 1 kann sich auch an die Gruppe von Dameon 2
registrieren und Daemon 2 nicht an die von Daemon 1, also glaube ich nicht
dass es daran liegt.
Ich hab' mir das wieder und wieder angeschaut und kann keine Unterschiede
erkennen die sowas erklaeren wuerden. Irgend eine Idee?

Vielen Dank und Gruesse...

Stephan

PS: Das Crosspost ist beabsichtigt.
Fup2 dcoup


Freedom isn't lost in one big step when the storm-troopers
show up at your door. It is lost in little pieces, each
so small that they tend to be ignored.
Richard B. Johnson
 

Lesen sie die antworten

#1 Enrik Berkhan
29/10/2007 - 09:42 | Warnen spam
In de.comm.protocols.tcp-ip Stephan Menzel wrote:
struct ip_mreqn mreq;
inet_aton(groups, &mreq.imr_multiaddr);
mreq.imr_address.s_addr = INADDR_ANY;
setsockopt(sock, SOL_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq));



Kann es sein, das mreq.imr_ifindex nicht korrekt initialisiert ist?

Was sagt strace?

Gruß,
Enrik

Ähnliche fragen