Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756188AbdLOS1b (ORCPT ); Fri, 15 Dec 2017 13:27:31 -0500 Received: from shards.monkeyblade.net ([184.105.139.130]:54532 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755409AbdLOS1a (ORCPT ); Fri, 15 Dec 2017 13:27:30 -0500 Date: Fri, 15 Dec 2017 13:27:28 -0500 (EST) Message-Id: <20171215.132728.1988249158186497781.davem@davemloft.net> To: redmcg@redmandi.dyndns.org Cc: eric.dumazet@gmail.com, marcelo.leitner@gmail.com, kuznet@ms2.inr.ac.ru, yoshfuji@linux-ipv6.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCHv2] ipv6: ip6mr: Recalc UDP checksum before forwarding From: David Miller In-Reply-To: <1513251423-4166-1-git-send-email-redmcg@redmandi.dyndns.org> References: <1513187564.25033.65.camel@gmail.com> <1513251423-4166-1-git-send-email-redmcg@redmandi.dyndns.org> X-Mailer: Mew version 6.7 on Emacs 25.3 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.5.12 (shards.monkeyblade.net [149.20.54.216]); Fri, 15 Dec 2017 10:27:30 -0800 (PST) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1250 Lines: 31 From: Brendan McGrath Date: Thu, 14 Dec 2017 22:37:03 +1100 > Currently, when forwarding a multicast packet originating from a > Virtual Interface on a Multicast Router to one of its Physical > Interfaces, ip_summed is set to a value of CHECKSUM_UNNECESSARY and > the UDP checksum is not calculated. > > The checksum value of the forwarded packet is left as is and > therefore rejected by the receiving machine(s). > > This patch ensures the checksum is recalculated before forwarding. > > Signed-off-by: Brendan McGrath I still don't like this, UDP can't be the only protocol that goes over multicast and might therefore have this problem. Actually, I'm still also having trouble figuring out how this happens in the first place. Please draw a specific detailed network diagram, show the exact configuration of each interface and exactly what driver runs that interface, and show where the packet comes from, who creates it, and where these checksum settings are done that lead to this problem. Like Eric, I'm very suspicious and I think that there is some problem with whoever builds or modifies this packet, and the code you are touching has no business "fixing it up" Thank you.