Ehhhm. Alan, I once implemented delaying packets (I problably
misplaced the patch), and it wasn't that hard:
delay = ipfw (GET_DELAY)
if (delay) {
pktdesc = kmalloc (...);
pktdesc.timer.func = continue_sending;
pktdesc.timer.time = jiffies + delay;
pktdesc.timer.data = (long) pktdesc;
pktdesc.packet = skb;
add_timer (pktdesc.timer);
return;
}
output_packet (skb);
[...]
continue_sending (pktdesc)
{
output_packet (pktdesc.skb);
kfree (pktdesc);
}
Note that the timer support functions are written to allow me to kfree
the memory in the timer function itself....
Roger.