Goodday,
I am working on an implementation of lwip netconn api in combination with
FreeRTOS. I use lwip version 2.0.0 on an STM32F7 microcontroller with
FreeRTOS V9.0.0
I want to use lwip to receive UDP packets from a mullticast adress.
239.0.0.0 in this case.
The system running lwip is assigned a static ip adress, being
192.169.123.109.
When sending UDP packets to 192.169.123.109 directly I can process them and
echo them back. However, I need to be able to read UDP packets send to the
multicast ip adress 239.0.0.0. To accomplish this I use the following task:
static void vUDPnetconnTask(void *pvParameters)
{
static struct netconn *conn;
static struct netbuf *buf;
ip_addr_t DestIPaddr, OwnAddr;
err_t err, recv_err;
LWIP_UNUSED_ARG(pvParameters);
netif_default->flags = NETIF_FLAG_UP | NETIF_FLAG_BROADCAST |
NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP | NETIF_FLAG_IGMP;
IP4_ADDR(&MulticastIPaddr, 239, 0, 0, 0);
IP4_ADDR(&OwnAddr, 192, 168, 123, 109);
conn = netconn_new(NETCONN_UDP);
if (conn!= NULL)
{
netconn_bind(conn, IP_ADDR_ANY, 60004); // returns ERR_OK
err = netconn_join_leave_group(conn, &MulticastIPaddr, &OwnAddr,
NETCONN_JOIN); // returns ERR_OK
if (err == ERR_OK)
{
while (1)
{
recv_err = netconn_recv(conn, &buf);
if (recv_err == ERR_OK)
{
// process the packet
}
}
}
else
{
netconn_delete(conn);
}
}
}
So, I bind to IP_ADDR_ANY using port 60004 (this is the port that the
multicast address receives UDP packets on) and I use the function
netconn_join_leave_group() to subribe to the multicast address.
I do not get any error returns but I do not receive any UDP packets send to
293.0.0.0.
I have been trying for a long time to get this to work but feel like I am
missing something fundamental. Is there a way to accomplish what I need?
Help is very much appriciated!
Greetings,
Maarten
_______________________________________________
lwip-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/lwip-users