summaryrefslogtreecommitdiffstats
path: root/net/sched/act_nat.c
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2010-06-22 11:32:04 -0700
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2010-06-22 11:32:04 -0700
commit0e789314f8c0b50bd19bf08dc5624b9604d60183 (patch)
tree64b6b9655e944284937f5eeff643f0754f35d0af /net/sched/act_nat.c
parentf5dec51172b81db226a23f309bc737ad021af35b (diff)
parent7e27d6e778cd87b6f2415515d7127eba53fe5d02 (diff)
Merge commit 'v2.6.35-rc3' into for-linus
Diffstat (limited to 'net/sched/act_nat.c')
-rw-r--r--net/sched/act_nat.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/net/sched/act_nat.c b/net/sched/act_nat.c
index d885ba31156..570949417f3 100644
--- a/net/sched/act_nat.c
+++ b/net/sched/act_nat.c
@@ -159,6 +159,9 @@ static int tcf_nat(struct sk_buff *skb, struct tc_action *a,
iph->daddr = new_addr;
csum_replace4(&iph->check, addr, new_addr);
+ } else if ((iph->frag_off & htons(IP_OFFSET)) ||
+ iph->protocol != IPPROTO_ICMP) {
+ goto out;
}
ihl = iph->ihl * 4;
@@ -247,6 +250,7 @@ static int tcf_nat(struct sk_buff *skb, struct tc_action *a,
break;
}
+out:
return action;
drop: