qemu-patch-raspberry4/slirp
Jan Kiszka e3078bf40a slirp: Fix queue walking in if_start
Another attempt to get this right: We need to carefully walk both the
fastq and the batchq in if_start while trying to send packets to
possibly not yet resolved hosts on the virtual network.

So far we just requeued a delayed packet where it was and then started
walking the queues from the top again - that couldn't work. Now we pre-
calculate the next packet in the queue so that the current one can
safely be removed if it was sent successfully. We also need to take into
account that the next packet can be from the same session if the current
one was sent and there are no other sessions.

CC: Fabien Chouteau <chouteau@adacore.com>
CC: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
CC: Stefan Weil <sw@weilnetz.de>
Tested-by: Stefan Weil <sw@weilnetz.de>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
2012-03-13 14:05:48 +01:00
..
arp_table.c slirp: Fix types of IP address parameters 2011-08-05 12:51:11 +02:00
bootp.c slirp: Fix assertion failure on rejected DHCP requests 2012-02-27 14:55:07 +01:00
bootp.h slirp: Factor out internal state structure 2009-06-29 08:52:49 -05:00
cksum.c slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
COPYRIGHT Remove the advertising clause from the slirp license 2009-01-26 19:37:41 +00:00
debug.h slirp: Cleanup and basic reanimation of debug code 2009-06-29 08:52:46 -05:00
if.c slirp: Fix queue walking in if_start 2012-03-13 14:05:48 +01:00
if.h slirp: Clean up ifs_init 2012-02-27 14:54:49 +01:00
ip.h Use new macro QEMU_PACKED for packed structures 2011-09-03 10:45:59 +00:00
ip_icmp.c slirp: Prevent sending ICMP error replies to source-only addresses 2012-02-08 10:07:54 +01:00
ip_icmp.h slirp: Forward ICMP echo requests via unprivileged sockets 2011-07-23 10:19:50 -05:00
ip_input.c slirp: Fix unusual "comments" in unused code 2011-07-27 10:10:17 +01:00
ip_output.c slirp: Replace m_freem with m_free 2011-07-23 10:19:49 -05:00
libslirp.h main-loop: create main-loop.c 2011-10-21 18:14:30 +02:00
main.h Delayed IP packets 2011-08-03 12:57:11 +02:00
mbuf.c Delayed IP packets 2011-08-03 12:57:11 +02:00
mbuf.h slirp: Clean up ifs_init 2012-02-27 14:54:49 +01:00
misc.c slirp/misc: fix gcc __warn_memset_zero_len warnings 2012-02-24 13:24:42 +00:00
misc.h slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
sbuf.c slirp: Drop dead code 2009-06-29 08:52:46 -05:00
sbuf.h Fix breakage by obsolete _P() for good 2009-07-01 19:11:17 +00:00
slirp.c char: rename qemu_chr_write() -> qemu_chr_fe_write() 2011-08-22 10:17:15 -05:00
slirp.h slirp: Prevent recursion of if_start 2012-03-13 14:05:48 +01:00
slirp_config.h slirp: Remove unused code for bad sprintf 2010-11-21 09:16:57 -06:00
socket.c Wrap recv to avoid warnings 2011-07-25 14:38:56 +00:00
socket.h slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
tcp.h slirp: Fix bit field types in IP header structs 2011-08-14 23:34:44 -07:00
tcp_input.c slirp: Fix use after release on tcp_input 2011-09-28 13:10:22 +02:00
tcp_output.c slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
tcp_subr.c Remove blanks before \n in output strings 2011-09-16 08:25:56 -05:00
tcp_timer.c More NULL pointer fixes 2009-08-01 10:13:20 +00:00
tcp_timer.h Fix breakage by obsolete _P() for good 2009-07-01 19:11:17 +00:00
tcp_var.h slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
tcpip.h Remove the advertising clause from the slirp license 2009-01-26 19:37:41 +00:00
tftp.c Use glib memory allocation and free functions 2011-08-20 23:01:08 -05:00
tftp.h slirp: Remove some type casts caused by bad declaration of x.tp_buf 2011-02-25 15:58:59 +00:00
udp.c slirp: Replace m_freem with m_free 2011-07-23 10:19:49 -05:00
udp.h slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00