Hello,
I am using the IMQ with iptables (latest versions) and asking all packets to be enqueued to IMQ0 from both prerouting and postrouting (using different iptables rules to mark different streams). When I do this I get the kernel saying:
"Dead loop on netdevice imq0, fix it urgently!" and communications stop intermittently. If I remove the jump from either preroute or postroute it works fine but won't work together.
Is this what is mean't to happen, because as far as I can see there is no loop happening here?
You probably forward packets. The loop happening ist
input-device -> prerouting -> imq (xmit_lock locked) -> reinject -> ... -> postrouting -> imq (LOCKED!!)
To avoid this one has to drop xmit_lock in imq_xmit function before reinjecteing and grab it back afterwards.
unfortunately this allows for endless recursion which is not possible in the kernel due to limited stack space.
I've completed a version which should hopefully fix this as many people requested such a feature.
I haven't released it yet because i have to do alot for my university atm and haven't got the time for testing
although i promised the new version to some people for january ;(
In about two weeks my semester-vacation start, i hope to release the new version very quickly afterwards.
Thanks for your patience, Patrick