diff options
author | Paul Gortmaker <paul.gortmaker@windriver.com> | 2011-06-21 23:33:34 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-06-21 23:33:34 -0400 |
commit | 56f8a75c17abb854b5907f4a815dc4c3f186ba11 (patch) | |
tree | 6ba333b7668ce7dd04cddecf4f15a0a48b335991 /net/netfilter/ipvs/ip_vs_core.c | |
parent | f470e5ae34d68880a38aa79ee5c102ebc2a1aef6 (diff) |
ip: introduce ip_is_fragment helper inline function
There are enough instances of this:
iph->frag_off & htons(IP_MF | IP_OFFSET)
that a helper function is probably warranted.
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/netfilter/ipvs/ip_vs_core.c')
-rw-r--r-- | net/netfilter/ipvs/ip_vs_core.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c index e33d48cae9f..4f77bb16d22 100644 --- a/net/netfilter/ipvs/ip_vs_core.c +++ b/net/netfilter/ipvs/ip_vs_core.c | |||
@@ -852,7 +852,7 @@ static int ip_vs_out_icmp(struct sk_buff *skb, int *related, | |||
852 | *related = 1; | 852 | *related = 1; |
853 | 853 | ||
854 | /* reassemble IP fragments */ | 854 | /* reassemble IP fragments */ |
855 | if (ip_hdr(skb)->frag_off & htons(IP_MF | IP_OFFSET)) { | 855 | if (ip_is_fragment(ip_hdr(skb))) { |
856 | if (ip_vs_gather_frags(skb, ip_vs_defrag_user(hooknum))) | 856 | if (ip_vs_gather_frags(skb, ip_vs_defrag_user(hooknum))) |
857 | return NF_STOLEN; | 857 | return NF_STOLEN; |
858 | } | 858 | } |
@@ -1156,8 +1156,7 @@ ip_vs_out(unsigned int hooknum, struct sk_buff *skb, int af) | |||
1156 | ip_vs_fill_iphdr(af, skb_network_header(skb), &iph); | 1156 | ip_vs_fill_iphdr(af, skb_network_header(skb), &iph); |
1157 | } else | 1157 | } else |
1158 | #endif | 1158 | #endif |
1159 | if (unlikely(ip_hdr(skb)->frag_off & htons(IP_MF|IP_OFFSET) && | 1159 | if (unlikely(ip_is_fragment(ip_hdr(skb)) && !pp->dont_defrag)) { |
1160 | !pp->dont_defrag)) { | ||
1161 | if (ip_vs_gather_frags(skb, | 1160 | if (ip_vs_gather_frags(skb, |
1162 | ip_vs_defrag_user(hooknum))) | 1161 | ip_vs_defrag_user(hooknum))) |
1163 | return NF_STOLEN; | 1162 | return NF_STOLEN; |
@@ -1310,7 +1309,7 @@ ip_vs_in_icmp(struct sk_buff *skb, int *related, unsigned int hooknum) | |||
1310 | *related = 1; | 1309 | *related = 1; |
1311 | 1310 | ||
1312 | /* reassemble IP fragments */ | 1311 | /* reassemble IP fragments */ |
1313 | if (ip_hdr(skb)->frag_off & htons(IP_MF | IP_OFFSET)) { | 1312 | if (ip_is_fragment(ip_hdr(skb))) { |
1314 | if (ip_vs_gather_frags(skb, ip_vs_defrag_user(hooknum))) | 1313 | if (ip_vs_gather_frags(skb, ip_vs_defrag_user(hooknum))) |
1315 | return NF_STOLEN; | 1314 | return NF_STOLEN; |
1316 | } | 1315 | } |