aboutsummaryrefslogtreecommitdiff
path: root/tcp_subr.c
diff options
context:
space:
mode:
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2009-01-13 19:48:42 +0000
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2009-01-13 19:48:42 +0000
commitc11b407804272b71e5bdd7a2a9181c64c7a594ed (patch)
tree9e9e7762cebbdce72bfe557dfc36c39a7f6a0447 /tcp_subr.c
parent5c9505f9dd23cc70dce30d575056d8277bcfdfd3 (diff)
downloadslirp-c11b407804272b71e5bdd7a2a9181c64c7a594ed.zip
slirp-c11b407804272b71e5bdd7a2a9181c64c7a594ed.tar.gz
slirp-c11b407804272b71e5bdd7a2a9181c64c7a594ed.tar.bz2
Fix 64 bit issue in slirp
Signed-off-by: Gleb Natapov <gleb@redhat.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6288 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'tcp_subr.c')
-rw-r--r--tcp_subr.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/tcp_subr.c b/tcp_subr.c
index 14ab1ec..e2be252 100644
--- a/tcp_subr.c
+++ b/tcp_subr.c
@@ -70,7 +70,7 @@ void tcp_template(tp) struct tcpcb *tp;
struct socket *so = tp->t_socket;
register struct tcpiphdr *n = &tp->t_template;
- n->ti_next = n->ti_prev = 0;
+ n->ti_mbuf = NULL;
n->ti_x1 = 0;
n->ti_pr = IPPROTO_TCP;
n->ti_len = htons(sizeof(struct tcpiphdr) - sizeof(struct ip));
@@ -157,7 +157,7 @@ int flags;
tlen += sizeof(struct tcpiphdr);
m->m_len = tlen;
- ti->ti_next = ti->ti_prev = 0;
+ ti->ti_mbuf = 0;
ti->ti_x1 = 0;
ti->ti_seq = htonl(seq);
ti->ti_ack = htonl(ack);
@@ -195,7 +195,7 @@ struct tcpcb *tcp_newtcpcb(so) struct socket *so;
return ((struct tcpcb *)0);
memset((char *)tp, 0, sizeof(struct tcpcb));
- tp->seg_next = tp->seg_prev = (tcpiphdrp_32)tp;
+ tp->seg_next = tp->seg_prev = (struct tcpiphdr *)tp;
tp->t_maxseg = TCP_MSS;
tp->t_flags = TCP_DO_RFC1323 ? (TF_REQ_SCALE | TF_REQ_TSTMP) : 0;
@@ -269,11 +269,11 @@ struct tcpcb *tcp_close(tp) register struct tcpcb *tp;
DEBUG_ARG("tp = %lx", (long)tp);
/* free the reassembly queue, if any */
- t = (struct tcpiphdr *)tp->seg_next;
- while (t != (struct tcpiphdr *)tp) {
- t = (struct tcpiphdr *)t->ti_next;
- m = (struct mbuf *)REASS_MBUF((struct tcpiphdr *)t->ti_prev);
- remque_32((struct tcpiphdr *)t->ti_prev);
+ t = tcpfrag_list_first(tp);
+ while (!tcpfrag_list_end(t, tp)) {
+ t = tcpiphdr_next(t);
+ m = tcpiphdr_prev(t)->ti_mbuf;
+ remque(tcpiphdr2qlink(tcpiphdr_prev(t)));
m_freem(m);
}
/* It's static */