Has anybody made any progress on "Bug 188261 - [xen] FreeBSD DomU PVHVM
guests cannot 'route' traffic for other Xen PV guests on same Dom0 Host."
(https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=188261)?

The code for checksum calculation in the function xnb_add_mbuf_cksum() looks
suspect.

        switch (iph->ip_p) {
        case IPPROTO_TCP:
                if (mbufc->m_pkthdr.csum_flags & CSUM_IP_VALID) {
                        size_t tcplen = ntohs(iph->ip_len) - sizeof(struct ip);
                        struct tcphdr *th = (struct tcphdr*)(iph + 1);
                        th->th_sum = in_pseudo(iph->ip_src.s_addr,
                            iph->ip_dst.s_addr, htons(IPPROTO_TCP + tcplen));
                        th->th_sum = in_cksum_skip(mbufc,
                            sizeof(struct ether_header) + ntohs(iph->ip_len),
                            sizeof(struct ether_header) + (iph->ip_hl << 2));
                }
                break;
        case IPPROTO_UDP:
                if (mbufc->m_pkthdr.csum_flags & CSUM_IP_VALID) {
                        size_t udplen = ntohs(iph->ip_len) - sizeof(struct ip);
                        struct udphdr *uh = (struct udphdr*)(iph + 1);
                        uh->uh_sum = in_pseudo(iph->ip_src.s_addr,
                            iph->ip_dst.s_addr, htons(IPPROTO_UDP + udplen));
                        uh->uh_sum = in_cksum_skip(mbufc,
                            sizeof(struct ether_header) + ntohs(iph->ip_len),
                            sizeof(struct ether_header) + (iph->ip_hl << 2));
                }
                break;
        default:
                break;
        }


Both in_pseudo() and in_cksum_skip() set the same checksum. Does this
make since to anybody?

Larry


-- 
------------------------------------------------------------------------
Larry Baird
Global Technology Associates, Inc. 1992-2012    | http://www.gta.com
Celebrating Twenty Years of Software Innovation | Orlando, FL
Email: l...@gta.com                             | TEL 407-380-0220
_______________________________________________
freebsd-xen@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-xen
To unsubscribe, send any mail to "freebsd-xen-unsubscr...@freebsd.org"

Reply via email to