I’m trying to set up a FreeRTOS+TCP project, with some multicast capabilities. To do that you need to “join a multicast group”:
setsockopt(socket, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&mreq, sizeof(mreq))
To do that you need to send out an IGMP package. This thread: https://sourceforge.net/p/freertos/discussion/382005/thread/6835a411/
… claims it to be an easy feat. It isn’t though. I’ve implemented it. And it’s very intrusive to the original code. The problem is that the stack considers all outgoing traffic (event: eStackTxEvent, function: vProcessGeneratedUDPPacket) to be UDP traffic. Not all traffic is though, so what happens is that the vProcessGeneratedUDPPacket function contains all kinds of exceptions, that remoddels the packages back into other package types. It’s rather messy.
This means that if you implement lower level package types, like IGMP, it will add a lot of changes to the FreeRTOS+TCP code and will thereby prevent future merges from upstream.
I’m willing to join the developers in this regard, if you like. (But for now, I’m going to revert all my changes and live without multicast.)