Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 3 Nov 2015 15:12:50 -0500
From:      Larry Baird <lab@gta.com>
To:        freebsd-xen@freebsd.org
Subject:   Checksum forwarding issue on XEN
Message-ID:  <20151103201250.GA92469@gta.com>

next in thread | raw e-mail | index | archive | help
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@gta.com                 		| TEL 407-380-0220



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20151103201250.GA92469>