提交 08f44282 编写于 作者: S Stefan Hajnoczi

Merge remote-tracking branch 'sthibault/tags/samuel-thibault' into staging

slirp updates

# gpg: Signature made Sat 27 May 2017 10:36:33 PM BST
# gpg:                using RSA key 0xB0A51BF58C9179C5
# gpg: Good signature from "Samuel Thibault <samuel.thibault@aquilenet.fr>"
# gpg:                 aka "Samuel Thibault <sthibault@debian.org>"
# gpg:                 aka "Samuel Thibault <samuel.thibault@gnu.org>"
# gpg:                 aka "Samuel Thibault <samuel.thibault@inria.fr>"
# gpg:                 aka "Samuel Thibault <samuel.thibault@labri.fr>"
# gpg:                 aka "Samuel Thibault <samuel.thibault@ens-lyon.org>"
# gpg:                 aka "Samuel Thibault <samuel.thibault@u-bordeaux.fr>"
# Primary key fingerprint: 900C B024 B679 31D4 0F82  304B D017 8C76 7D06 9EE6
#      Subkey fingerprint: AEBF 7448 FAB9 453A 4552  390E B0A5 1BF5 8C91 79C5

* sthibault/tags/samuel-thibault:
  Fix total IP header length in forwarded TCP packets
  slirp: fix leak
  slirp: Fix wrong mss bug.
Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
...@@ -100,6 +100,9 @@ sofree(struct socket *so) ...@@ -100,6 +100,9 @@ sofree(struct socket *so)
if(so->so_next && so->so_prev) if(so->so_next && so->so_prev)
remque(so); /* crashes if so is not in a queue */ remque(so); /* crashes if so is not in a queue */
if (so->so_tcpcb) {
free(so->so_tcpcb);
}
free(so); free(so);
} }
......
...@@ -1587,11 +1587,11 @@ tcp_mss(struct tcpcb *tp, u_int offer) ...@@ -1587,11 +1587,11 @@ tcp_mss(struct tcpcb *tp, u_int offer)
switch (so->so_ffamily) { switch (so->so_ffamily) {
case AF_INET: case AF_INET:
mss = MIN(IF_MTU, IF_MRU) - sizeof(struct tcphdr) mss = MIN(IF_MTU, IF_MRU) - sizeof(struct tcphdr)
+ sizeof(struct ip); - sizeof(struct ip);
break; break;
case AF_INET6: case AF_INET6:
mss = MIN(IF_MTU, IF_MRU) - sizeof(struct tcphdr) mss = MIN(IF_MTU, IF_MRU) - sizeof(struct tcphdr)
+ sizeof(struct ip6); - sizeof(struct ip6);
break; break;
default: default:
g_assert_not_reached(); g_assert_not_reached();
......
...@@ -204,7 +204,7 @@ tcp_respond(struct tcpcb *tp, struct tcpiphdr *ti, struct mbuf *m, ...@@ -204,7 +204,7 @@ tcp_respond(struct tcpcb *tp, struct tcpiphdr *ti, struct mbuf *m,
m->m_len -= sizeof(struct tcpiphdr) - sizeof(struct tcphdr) m->m_len -= sizeof(struct tcpiphdr) - sizeof(struct tcphdr)
- sizeof(struct ip); - sizeof(struct ip);
ip = mtod(m, struct ip *); ip = mtod(m, struct ip *);
ip->ip_len = tlen; ip->ip_len = m->m_len;
ip->ip_dst = tcpiph_save.ti_dst; ip->ip_dst = tcpiph_save.ti_dst;
ip->ip_src = tcpiph_save.ti_src; ip->ip_src = tcpiph_save.ti_src;
ip->ip_p = tcpiph_save.ti_pr; ip->ip_p = tcpiph_save.ti_pr;
...@@ -224,7 +224,7 @@ tcp_respond(struct tcpcb *tp, struct tcpiphdr *ti, struct mbuf *m, ...@@ -224,7 +224,7 @@ tcp_respond(struct tcpcb *tp, struct tcpiphdr *ti, struct mbuf *m,
m->m_len -= sizeof(struct tcpiphdr) - sizeof(struct tcphdr) m->m_len -= sizeof(struct tcpiphdr) - sizeof(struct tcphdr)
- sizeof(struct ip6); - sizeof(struct ip6);
ip6 = mtod(m, struct ip6 *); ip6 = mtod(m, struct ip6 *);
ip6->ip_pl = tlen; ip6->ip_pl = tcpiph_save.ti_len;
ip6->ip_dst = tcpiph_save.ti_dst6; ip6->ip_dst = tcpiph_save.ti_dst6;
ip6->ip_src = tcpiph_save.ti_src6; ip6->ip_src = tcpiph_save.ti_src6;
ip6->ip_nh = tcpiph_save.ti_nh6; ip6->ip_nh = tcpiph_save.ti_nh6;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册