qemu-e2k/slirp
Thomas Huth 2b44043265 slirp: Fix packet expiration
The two new variables "arp_requested" and "expiration_date" in the mbuf
structure have been added after the variable-sized "m_dat_" array. The
variables have to be added before the m_dat_ array instead.
Without this patch, the expiration_date gets clobbered by code that
accesses the m_dat_ array.
I experienced this problem with the code in slirp/tftp.c: The
tftp_send_data() function created a new packet with the m_get()
function (which fills-in a default expiration_date value). Then the
TFTP code cleared the data section of the packet, which accidentially
also cleared the expiration_date. This zeroed expiration_date then
finally causes the packet to be discarded during if_start(), so that
TFTP packets were not transmitted anymore.

[Jan: added comment as suggested by Fabien ]

CC: Fabien Chouteau <chouteau@adacore.com>
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
2011-09-28 13:11:30 +02:00
..
arp_table.c
bootp.c
bootp.h
cksum.c
COPYRIGHT
debug.h
if.c
if.h
ip_icmp.c
ip_icmp.h
ip_input.c
ip_output.c
ip.h
libslirp.h
main.h
mbuf.c
mbuf.h slirp: Fix packet expiration 2011-09-28 13:11:30 +02:00
misc.c
misc.h
sbuf.c
sbuf.h
slirp_config.h
slirp.c
slirp.h
socket.c
socket.h
tcp_input.c
tcp_output.c
tcp_subr.c
tcp_timer.c
tcp_timer.h
tcp_var.h
tcp.h
tcpip.h
tftp.c
tftp.h
udp.c
udp.h