From patchwork Thu May 28 08:25:10 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bernhard Thaler X-Patchwork-Id: 477830 X-Patchwork-Delegate: pablo@netfilter.org Return-Path: Delivered-To: pablo@netfilter.org Received: from domexternos.us.es [193.147.175.220] by salvia.here with POP3 (fetchmail-6.3.21) for (single-drop); Thu, 28 May 2015 12:57:44 +0200 (CEST) Received: (qmail 314 invoked from network); 28 May 2015 08:25:44 -0000 Received: from unknown (HELO mail.us.es) (192.168.3.12) by a6.us.es with SMTP; 28 May 2015 08:25:44 -0000 Received: (qmail 16314 invoked from network); 28 May 2015 10:25:43 +0200 Received: from unknown (HELO us.es) (192.168.2.13) by us.es with SMTP; 28 May 2015 10:25:43 +0200 Received: (qmail 17384 invoked by uid 507); 28 May 2015 08:25:43 -0000 X-Qmail-Scanner-Diagnostics: from 127.0.0.1 by antivirus3 (envelope-from , uid 501) with qmail-scanner-2.10 (clamdscan: 0.98.7/20515. spamassassin: 3.4.0. Clear:RC:1(127.0.0.1):SA:0(-2.6/7.5):. Processed in 4.413949 secs); 28 May 2015 08:25:43 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on antivirus3 X-Spam-Level: X-Spam-Status: No, score=-2.6 required=7.5 tests=BAYES_50, RCVD_IN_DNSWL_LOW, RCVD_IN_SBL_CSS, T_RP_MATCHES_RCVD, USER_IN_WHITELIST_TO autolearn=disabled version=3.4.0 X-Spam-ASN: AS29081 62.212.160.0/19 X-Envelope-From: bernhard.thaler@wvnet.at Received: from unknown (HELO antivirus3) (127.0.0.1) by us.es with SMTP; 28 May 2015 08:25:39 -0000 Received: from 192.168.1.13 (192.168.1.13) by antivirus3 (F-Secure/fsigk_smtp/412/antivirus3); Thu, 28 May 2015 10:25:39 +0200 (CEST) X-Virus-Status: clean(F-Secure/fsigk_smtp/412/antivirus3) Received: (qmail 32047 invoked from network); 28 May 2015 10:25:39 +0200 Received: from mx-out.wvnet.at (62.212.170.134) by us.es with SMTP; 28 May 2015 10:25:39 +0200 Received: from smtp.wvnet.at (localhost [127.0.0.1]) by mx-out.wvnet.at (Postfix) with ESMTP id ABBB81073516 for ; Thu, 28 May 2015 10:25:38 +0200 (CEST) Received: (qmail 11537 invoked from network); 28 May 2015 08:25:38 -0000 Received: (simscan 1.4.1 ppid 9443 pid 11534 t 0.0169s) (scanners: regex: 1.4.1 attach: 1.4.1 clamav: 0.98.6/m:55/d:20118); 28 May 0115 08:25:38 -0000 X-WVNET-RELAY-spf-info: local_or_white X-WVNET-RELAY-policy-class: untrusted X-WVNET-RELAY-policy-run: [WDR-B] Received: from smtpout2.drei.com (HELO localhost.localdomain) (bernhard.thaler@wvnet.at@[109.126.64.2]) (SMTPAUTH User bernhard.thaler@wvnet.at) (envelope-sender ) by smtp.wvnet.at (qmail-ldap-1.03) with SMTP for ; 28 May 2015 08:25:38 -0000 X-FEAS-AUTH-USER: From: Bernhard Thaler To: pablo@netfilter.org, kadlec@blackhole.kfki.hu Cc: netfilter-devel@vger.kernel.org, fw@strlen.de, Bernhard Thaler Subject: [PATCHv5 3/4] netfilter: bridge: rename br_parse_ip_options Date: Thu, 28 May 2015 10:25:10 +0200 Message-Id: <1432801510-11902-1-git-send-email-bernhard.thaler@wvnet.at> X-Mailer: git-send-email 1.7.10.4 Status: RO X-Status: A Content-Length: 2203 List-ID: br_parse_ip_options() does not parse any IP options, it validates IP packets as a whole and the function name is misleading. Rename br_parse_ip_options() to br_validate_ipv4(). Signed-off-by: Bernhard Thaler --- Patch revision history: v5 * rebase to current davem/net-next v4 * re-post due to errors in v3 formatting introduced by my MUA v3 * re-assignment of iph variable needed because pskb_may_pull() can invalidate the network header * same patch as v1 again v2 * first patch did not contain statement removing double iph variable assignment net/bridge/br_netfilter.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c index a43e216..f34edb6 100644 --- a/net/bridge/br_netfilter.c +++ b/net/bridge/br_netfilter.c @@ -217,7 +217,7 @@ static inline void nf_bridge_pull_encap_header_rcsum(struct sk_buff *skb) * expected format */ -static int br_parse_ip_options(struct sk_buff *skb) +static int br_validate_ipv4(struct sk_buff *skb) { const struct iphdr *iph; struct net_device *dev = skb->dev; @@ -319,7 +319,7 @@ bad: return -1; } -/* Equivalent to br_parse_ip_options for IPv6 */ +/* Equivalent to br_validate_ipv4 for IPv6 */ static int br_validate_ipv6(struct sk_buff *skb) { const struct ipv6hdr *hdr; @@ -731,7 +731,7 @@ static unsigned int br_nf_pre_routing(const struct nf_hook_ops *ops, nf_bridge_pull_encap_header_rcsum(skb); - if (br_parse_ip_options(skb)) + if (br_validate_ipv4(skb)) return NF_DROP; nf_bridge_put(skb->nf_bridge); @@ -849,7 +849,7 @@ static unsigned int br_nf_forward_ip(const struct nf_hook_ops *ops, int frag_max = BR_INPUT_SKB_CB(skb)->frag_max_size; if (pf == NFPROTO_IPV4) { - if (br_parse_ip_options(skb)) + if (br_validate_ipv4(skb)) return NF_DROP; IPCB(skb)->frag_max_size = frag_max; } @@ -964,7 +964,8 @@ static int br_nf_dev_queue_xmit(struct sock *sk, struct sk_buff *skb) */ if (skb->protocol == htons(ETH_P_IP)) { struct brnf_frag_data *data; - if (br_parse_ip_options(skb)) + + if (br_validate_ipv4(skb)) /* Drop invalid packet */ return NF_DROP;