On 27/07/2011 11:30, Jan Kiszka wrote: > On 2011-07-26 18:21, Fabien Chouteau wrote: >> In the current implementation, if Slirp tries to send an IP packet to a >> client >> with an unknown hardware address, the packet is simply dropped and an ARP >> request is sent (if_encap in slirp/slirp.c). >> >> This patch adds a list of delayed IP packets to handle such cases. If the >> hardware address is unknown, Slirp inserts the packet in delayed list and >> sends >> an ARP request. Each time the ARP table is updated Slirp retries to send the >> packet. > > Haven't looked at details yet, just two general thoughts so far: > > We already have queues for outgoing packets, why can't we reuse that > infrastructure? That would also avoid additional memory allocations. > Delayed packets should be requeued at the end and only one attempt to > send them should be performed per queue flush.
Sure, I didn't know about these queues. Where are they implemented? > > I think we need some timeout for the delayed packets. If invalid or > non-reactive clients are addressed, we will otherwise pile them up until > qemu terminates, right? Yes that's a good idea. Regards, -- Fabien Chouteau