Pregunta

No he podido recibir la multidifusión UDP bajo VxWorks 5.5. Me he unido al grupo de multidifusión:

setsockopt(soc, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *) &ipMreq, sizeof (ipMreq));

Un código similar en una máquina Windows adyacente recibe multidifusión. Puedo enviar multidifusión desde VxWorks; ifShow () indica que la interfaz es capaz de multidifusión; MCAST_ROUTING está habilitado en la configuración del kernel, pero aún no puede recibir multidifusión.

Editar : necesitaba establecer un bit en el registro de configuración de RX de la unidad Ethernet de RealTek para permitir que la multidifusión pasara a la capa de aplicación.

#define RTL_RXCG_AM           0x04      /* Accept Multicast */
¿Fue útil?

Solución

¿Está verificando el valor de retorno en la llamada Join setsockopt () para asegurarse de que esté teniendo éxito? Tuve un problema específico con VxWorks 5.5 en el pasado donde mis uniones de multidifusión fallaron cuando no deberían. Creo que tuvimos que obtener nuevas bibliotecas de WindRiver para solucionar el problema.

Editar: No hay ningún truco específico que conozca para que la multidifusión funcione con VxWorks. Debe utilizar las operaciones estándar de sockets BSD. Si la interfaz puede recibir el tráfico de unidifusión correctamente, y un analizador de red (Wireshark, por ejemplo) muestra que se están enviando los JOIN de multidifusión y que los paquetes de multidifusión entrantes están formados correctamente, sospecho que hay un problema con el controlador. El soporte de WindRiver ha sido muy útil para nosotros en el pasado con este tipo de problemas; No sé si tiene un contrato de asistencia con ellos para obtener ese nivel de asistencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top