From patchwork Fri Apr 22 07:19:03 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Fernando_Luis_V=C3=A1zquez_Cao?= X-Patchwork-Id: 92502 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 8F549B6F65 for ; Fri, 22 Apr 2011 17:19:11 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751922Ab1DVHTH (ORCPT ); Fri, 22 Apr 2011 03:19:07 -0400 Received: from serv2.oss.ntt.co.jp ([222.151.198.100]:58691 "EHLO serv2.oss.ntt.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751746Ab1DVHTF (ORCPT ); Fri, 22 Apr 2011 03:19:05 -0400 X-Greylist: delayed 984 seconds by postgrey-1.27 at vger.kernel.org; Fri, 22 Apr 2011 03:19:04 EDT Received: from serv2.oss.ntt.co.jp (localhost [127.0.0.1]) by serv2.oss.ntt.co.jp (Postfix) with ESMTP id 0CF282482A6; Fri, 22 Apr 2011 16:19:04 +0900 (JST) Received: from serv1.oss.ntt.co.jp (serv1.oss.ntt.co.jp [172.19.0.2]) by serv2.oss.ntt.co.jp (Postfix) with ESMTP id EEDC32481E9; Fri, 22 Apr 2011 16:19:03 +0900 (JST) Received: from [172.17.2.23] (unknown [172.17.2.23]) by serv1.oss.ntt.co.jp (Postfix) with ESMTP id D5B3C260423; Fri, 22 Apr 2011 16:19:03 +0900 (JST) Subject: [PATCH] netfilter/IPv6: initialize TOS field in REJECT target module From: Fernando Luis Vazquez Cao To: netfilter-devel@vger.kernel.org Cc: netdev@vger.kernel.org, yoshfuji@linux-ipv6.org, jengelh@medozas.de, davem@davemloft.net In-Reply-To: <1303455759.2023.39.camel@nausicaa> References: <1303455759.2023.39.camel@nausicaa> Organization: =?iso-2022-jp?Q?NTT=1B$B%*!=3C%W%s%=3D!=3C%9=1B=28B?= =?iso-2022-jp?Q?=1B$B%=3D%U%H%&%'%=22%=3B%s=1B=28B?= =?iso-2022-jp?Q?=1B$B%=3F=1B=28B?= Date: Fri, 22 Apr 2011 16:19:03 +0900 Message-ID: <1303456743.2023.55.camel@nausicaa> Mime-Version: 1.0 X-Mailer: Evolution 2.30.3 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The IPv6 header is not zeroed out in alloc_skb so we must initialize it properly unless we want to see IPv6 packets with random TOS fields floating around. The current implementation resets the flow label but this could be changed if deemed necessary. We stumbled upon this issue when trying to apply a mangle rule to the RST packet generated by the REJECT target module. Signed-off-by: Fernando Luis Vazquez Cao Acked-by: Eric Dumazet --- -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff -urNp linux-2.6.38.4-orig/net/ipv6/netfilter/ip6t_REJECT.c linux-2.6.38.4/net/ipv6/netfilter/ip6t_REJECT.c --- linux-2.6.38.4-orig/net/ipv6/netfilter/ip6t_REJECT.c 2011-03-15 10:20:32.000000000 +0900 +++ linux-2.6.38.4/net/ipv6/netfilter/ip6t_REJECT.c 2011-04-22 15:00:30.695373543 +0900 @@ -45,6 +45,8 @@ static void send_reset(struct net *net, int tcphoff, needs_ack; const struct ipv6hdr *oip6h = ipv6_hdr(oldskb); struct ipv6hdr *ip6h; +#define DEFAULT_TOS_VALUE 0x0U + const __u8 tclass = DEFAULT_TOS_VALUE; struct dst_entry *dst = NULL; u8 proto; struct flowi fl; @@ -123,7 +125,7 @@ static void send_reset(struct net *net, skb_put(nskb, sizeof(struct ipv6hdr)); skb_reset_network_header(nskb); ip6h = ipv6_hdr(nskb); - ip6h->version = 6; + *(__be32 *)ip6h = htonl(0x60000000 | (tclass << 20)); ip6h->hop_limit = ip6_dst_hoplimit(dst); ip6h->nexthdr = IPPROTO_TCP; ipv6_addr_copy(&ip6h->saddr, &oip6h->daddr);