I'm implementing an application using MQX RTCS when I need to receive broadcast frames, process then and response with the data to the requeter.
All it's working ok, I register a ethertype with Enet_open() and I'm receiving and sending frames normally.
But the problem is: When the client starts sending several broadcast frames in the network the MQX becomes very slow and other task stop working (the only task thats work is the task that receive ethernet broadcasts).
This behavior is dangerous, it can cause a DENIAL of Service in my Network if a hacker for example generate several broadcasts to stop my devices that runs MQX.
I've several tasks in my project:
- Manage web interface
- Manage configurations
- Manage Serial communications (with RS-232 polling)
- Manage SNMP task
and finnaly a Task that receive broadcasts for communication.
How can I solve and avoid that my task that receive broadcasts (with a callback in Enet_open) , catchs 100% of CPU for itself?
How can I avoid and discart for example another all broadcasts frames that I receive more than 2 in a second for example?