]> git.proxmox.com Git - mirror_qemu.git/blobdiff - slirp/tcp_output.c
Merge remote-tracking branch 'remotes/thibault/tags/samuel-thibault' into staging
[mirror_qemu.git] / slirp / tcp_output.c
index eec890246642b0193841b022176c0c37c4b896cf..99b0a9b1cb43c9cbe36d8d3b6ba73385d4278a4a 100644 (file)
@@ -63,6 +63,7 @@ tcp_output(struct tcpcb *tp)
        register struct mbuf *m;
        register struct tcpiphdr *ti, tcpiph_save;
        struct ip *ip;
+       struct ip6 *ip6;
        u_char opt[MAX_TCPOPTLEN];
        unsigned optlen, hdrlen;
        int idle, sendalot;
@@ -468,6 +469,21 @@ send:
            error = ip_output(so, m);
            break;
 
+       case AF_INET6:
+           m->m_data += sizeof(struct tcpiphdr) - sizeof(struct tcphdr)
+                                                - sizeof(struct ip6);
+           m->m_len  -= sizeof(struct tcpiphdr) - sizeof(struct tcphdr)
+                                                - sizeof(struct ip6);
+           ip6 = mtod(m, struct ip6 *);
+
+           ip6->ip_pl = tcpiph_save.ti_len;
+           ip6->ip_dst = tcpiph_save.ti_dst6;
+           ip6->ip_src = tcpiph_save.ti_src6;
+           ip6->ip_nh = tcpiph_save.ti_nh6;
+
+           error = ip6_output(so, m, 0);
+           break;
+
        default:
            g_assert_not_reached();
        }