Checksum forwarding issue on XEN

Larry Baird lab at gta.com
Tue Nov 3 20:12:54 UTC 2015


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: lab at gta.com                 		| TEL 407-380-0220


More information about the freebsd-xen mailing list