diff options
author | blueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162> | 2009-01-13 19:48:42 +0000 |
---|---|---|
committer | blueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162> | 2009-01-13 19:48:42 +0000 |
commit | c11b407804272b71e5bdd7a2a9181c64c7a594ed (patch) | |
tree | 9e9e7762cebbdce72bfe557dfc36c39a7f6a0447 /tcp_subr.c | |
parent | 5c9505f9dd23cc70dce30d575056d8277bcfdfd3 (diff) | |
download | slirp-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.c | 16 |
1 files changed, 8 insertions, 8 deletions
@@ -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 */ |