diff options
Diffstat (limited to 'net/sched/act_nat.c')
| -rw-r--r-- | net/sched/act_nat.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/sched/act_nat.c b/net/sched/act_nat.c index d885ba311564..570949417f38 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, | |||
| 159 | iph->daddr = new_addr; | 159 | iph->daddr = new_addr; |
| 160 | 160 | ||
| 161 | csum_replace4(&iph->check, addr, new_addr); | 161 | csum_replace4(&iph->check, addr, new_addr); |
| 162 | } else if ((iph->frag_off & htons(IP_OFFSET)) || | ||
| 163 | iph->protocol != IPPROTO_ICMP) { | ||
| 164 | goto out; | ||
| 162 | } | 165 | } |
| 163 | 166 | ||
| 164 | ihl = iph->ihl * 4; | 167 | ihl = iph->ihl * 4; |
| @@ -247,6 +250,7 @@ static int tcf_nat(struct sk_buff *skb, struct tc_action *a, | |||
| 247 | break; | 250 | break; |
| 248 | } | 251 | } |
| 249 | 252 | ||
| 253 | out: | ||
| 250 | return action; | 254 | return action; |
| 251 | 255 | ||
| 252 | drop: | 256 | drop: |
