Abro este hilo porque como aquí hay algunos genios de la programación, seguro que me pueden ayudar y dan con el problema.
Yo tengo un switch entre mi LAN y mi router que tiene IGMP snooping. Y funciona.
Pero para hacer unas pruebas se me ocurrió conectar un punto WiFi al router (Comternd 5813n) y descubrí que el IGMP snooping, aunque estaba bien configurado, no funcionaba. No sé si el problema viene de versiones anteriores de Openwrt, lo he detectado en una de las más recientes.
He abierto un ticket en Openwrt:
https://dev.openwrt.org/ticket/17954He seguido investigando y he añadido un par de comentarios al ticket:
Encontré
una página donde decía que el código de bridge de Ubuntu 12 tenía un bug por el que sólo consideraba multicast las direcciones 224.0.0.x
Y luego buscando en el código de Openwrt encontré dos archivos in.h en include/linux/in.h y en include/netinet/in.h donde venían estas definiciones:
/* Defines for Multicast INADDR. */
#define INADDR_UNSPEC_GROUP ((in_addr_t) 0xe0000000) /* 224.0.0.0 */
#define INADDR_ALLHOSTS_GROUP ((in_addr_t) 0xe0000001) /* 224.0.0.1 */
#define INADDR_ALLRTRS_GROUP ((in_addr_t) 0xe0000002) /* 224.0.0.2 */
#define INADDR_MAX_LOCAL_GROUP ((in_addr_t) 0xe00000ff) /* 224.0.0.255 */
A mí me parece que lo correcto sería que la última línea fuese:
#define INADDR_MAX_LOCAL_GROUP ((in_addr_t) 0xefffffff) /* 239.255.255.255 */
Los canales de imagenio son todos 239.0.x.y, pero no sé si el problema está ahí y no quisiera dejar el router frito con un experimento como éste.
La pregunta: quizá alguien que sepa más de esto me pueda explicar si esa constante INADDR_MAX_LOCAL_GROUP tiene que tener el valor que tiene y por qué.
Una idea: quizá alguien tenga el Openwrt sobre una máquina virtual o algo así y pueda hacer una prueba sin cargarse nada.
Gracias por vuestra ayuda.