diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2007-03-12 19:09:15 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-04-26 01:25:07 -0400 |
commit | c9bdd4b5257406b0608385d19c40b5511decf4f6 (patch) | |
tree | fe5319c322a11c0b00e7ef0473762a8d1961da83 /net/ipv4/ipvs | |
parent | 0272ffc46f81a4bbbf302ba093c737e969c5bb55 (diff) |
[IP]: Introduce ip_hdrlen()
For the common sequence "skb->nh.iph->ihl * 4", removing a good number of open
coded skb->nh.iph uses, now to go after the rest...
Just out of curiosity, here are the idioms found to get the same result:
skb->nh.iph->ihl << 2
skb->nh.iph->ihl<<2
skb->nh.iph->ihl * 4
skb->nh.iph->ihl*4
(skb->nh.iph)->ihl * sizeof(u32)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/ipvs')
-rw-r--r-- | net/ipv4/ipvs/ip_vs_app.c | 4 | ||||
-rw-r--r-- | net/ipv4/ipvs/ip_vs_core.c | 3 | ||||
-rw-r--r-- | net/ipv4/ipvs/ip_vs_proto_tcp.c | 12 | ||||
-rw-r--r-- | net/ipv4/ipvs/ip_vs_proto_udp.c | 12 |
4 files changed, 14 insertions, 17 deletions
diff --git a/net/ipv4/ipvs/ip_vs_app.c b/net/ipv4/ipvs/ip_vs_app.c index f29d3a27eec6..e5beab28cd0f 100644 --- a/net/ipv4/ipvs/ip_vs_app.c +++ b/net/ipv4/ipvs/ip_vs_app.c | |||
@@ -331,7 +331,7 @@ static inline int app_tcp_pkt_out(struct ip_vs_conn *cp, struct sk_buff **pskb, | |||
331 | struct ip_vs_app *app) | 331 | struct ip_vs_app *app) |
332 | { | 332 | { |
333 | int diff; | 333 | int diff; |
334 | unsigned int tcp_offset = (*pskb)->nh.iph->ihl*4; | 334 | const unsigned int tcp_offset = ip_hdrlen(*pskb); |
335 | struct tcphdr *th; | 335 | struct tcphdr *th; |
336 | __u32 seq; | 336 | __u32 seq; |
337 | 337 | ||
@@ -406,7 +406,7 @@ static inline int app_tcp_pkt_in(struct ip_vs_conn *cp, struct sk_buff **pskb, | |||
406 | struct ip_vs_app *app) | 406 | struct ip_vs_app *app) |
407 | { | 407 | { |
408 | int diff; | 408 | int diff; |
409 | unsigned int tcp_offset = (*pskb)->nh.iph->ihl*4; | 409 | const unsigned int tcp_offset = ip_hdrlen(*pskb); |
410 | struct tcphdr *th; | 410 | struct tcphdr *th; |
411 | __u32 seq; | 411 | __u32 seq; |
412 | 412 | ||
diff --git a/net/ipv4/ipvs/ip_vs_core.c b/net/ipv4/ipvs/ip_vs_core.c index 5d54dd2ce12f..7893c00a91fe 100644 --- a/net/ipv4/ipvs/ip_vs_core.c +++ b/net/ipv4/ipvs/ip_vs_core.c | |||
@@ -713,8 +713,7 @@ static inline int is_tcp_reset(const struct sk_buff *skb) | |||
713 | { | 713 | { |
714 | struct tcphdr _tcph, *th; | 714 | struct tcphdr _tcph, *th; |
715 | 715 | ||
716 | th = skb_header_pointer(skb, skb->nh.iph->ihl * 4, | 716 | th = skb_header_pointer(skb, ip_hdrlen(skb), sizeof(_tcph), &_tcph); |
717 | sizeof(_tcph), &_tcph); | ||
718 | if (th == NULL) | 717 | if (th == NULL) |
719 | return 0; | 718 | return 0; |
720 | return th->rst; | 719 | return th->rst; |
diff --git a/net/ipv4/ipvs/ip_vs_proto_tcp.c b/net/ipv4/ipvs/ip_vs_proto_tcp.c index 16a9ebee2fe6..e65382da713e 100644 --- a/net/ipv4/ipvs/ip_vs_proto_tcp.c +++ b/net/ipv4/ipvs/ip_vs_proto_tcp.c | |||
@@ -76,8 +76,7 @@ tcp_conn_schedule(struct sk_buff *skb, | |||
76 | struct ip_vs_service *svc; | 76 | struct ip_vs_service *svc; |
77 | struct tcphdr _tcph, *th; | 77 | struct tcphdr _tcph, *th; |
78 | 78 | ||
79 | th = skb_header_pointer(skb, skb->nh.iph->ihl*4, | 79 | th = skb_header_pointer(skb, ip_hdrlen(skb), sizeof(_tcph), &_tcph); |
80 | sizeof(_tcph), &_tcph); | ||
81 | if (th == NULL) { | 80 | if (th == NULL) { |
82 | *verdict = NF_DROP; | 81 | *verdict = NF_DROP; |
83 | return 0; | 82 | return 0; |
@@ -127,7 +126,7 @@ tcp_snat_handler(struct sk_buff **pskb, | |||
127 | struct ip_vs_protocol *pp, struct ip_vs_conn *cp) | 126 | struct ip_vs_protocol *pp, struct ip_vs_conn *cp) |
128 | { | 127 | { |
129 | struct tcphdr *tcph; | 128 | struct tcphdr *tcph; |
130 | unsigned int tcphoff = (*pskb)->nh.iph->ihl * 4; | 129 | const unsigned int tcphoff = ip_hdrlen(*pskb); |
131 | 130 | ||
132 | /* csum_check requires unshared skb */ | 131 | /* csum_check requires unshared skb */ |
133 | if (!ip_vs_make_skb_writable(pskb, tcphoff+sizeof(*tcph))) | 132 | if (!ip_vs_make_skb_writable(pskb, tcphoff+sizeof(*tcph))) |
@@ -175,7 +174,7 @@ tcp_dnat_handler(struct sk_buff **pskb, | |||
175 | struct ip_vs_protocol *pp, struct ip_vs_conn *cp) | 174 | struct ip_vs_protocol *pp, struct ip_vs_conn *cp) |
176 | { | 175 | { |
177 | struct tcphdr *tcph; | 176 | struct tcphdr *tcph; |
178 | unsigned int tcphoff = (*pskb)->nh.iph->ihl * 4; | 177 | const unsigned int tcphoff = ip_hdrlen(*pskb); |
179 | 178 | ||
180 | /* csum_check requires unshared skb */ | 179 | /* csum_check requires unshared skb */ |
181 | if (!ip_vs_make_skb_writable(pskb, tcphoff+sizeof(*tcph))) | 180 | if (!ip_vs_make_skb_writable(pskb, tcphoff+sizeof(*tcph))) |
@@ -224,7 +223,7 @@ tcp_dnat_handler(struct sk_buff **pskb, | |||
224 | static int | 223 | static int |
225 | tcp_csum_check(struct sk_buff *skb, struct ip_vs_protocol *pp) | 224 | tcp_csum_check(struct sk_buff *skb, struct ip_vs_protocol *pp) |
226 | { | 225 | { |
227 | unsigned int tcphoff = skb->nh.iph->ihl*4; | 226 | const unsigned int tcphoff = ip_hdrlen(skb); |
228 | 227 | ||
229 | switch (skb->ip_summed) { | 228 | switch (skb->ip_summed) { |
230 | case CHECKSUM_NONE: | 229 | case CHECKSUM_NONE: |
@@ -467,8 +466,7 @@ tcp_state_transition(struct ip_vs_conn *cp, int direction, | |||
467 | { | 466 | { |
468 | struct tcphdr _tcph, *th; | 467 | struct tcphdr _tcph, *th; |
469 | 468 | ||
470 | th = skb_header_pointer(skb, skb->nh.iph->ihl*4, | 469 | th = skb_header_pointer(skb, ip_hdrlen(skb), sizeof(_tcph), &_tcph); |
471 | sizeof(_tcph), &_tcph); | ||
472 | if (th == NULL) | 470 | if (th == NULL) |
473 | return 0; | 471 | return 0; |
474 | 472 | ||
diff --git a/net/ipv4/ipvs/ip_vs_proto_udp.c b/net/ipv4/ipvs/ip_vs_proto_udp.c index 03f0a414cfa4..2cd950638923 100644 --- a/net/ipv4/ipvs/ip_vs_proto_udp.c +++ b/net/ipv4/ipvs/ip_vs_proto_udp.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include <linux/udp.h> | 22 | #include <linux/udp.h> |
23 | 23 | ||
24 | #include <net/ip_vs.h> | 24 | #include <net/ip_vs.h> |
25 | 25 | #include <net/ip.h> | |
26 | 26 | ||
27 | static struct ip_vs_conn * | 27 | static struct ip_vs_conn * |
28 | udp_conn_in_get(const struct sk_buff *skb, struct ip_vs_protocol *pp, | 28 | udp_conn_in_get(const struct sk_buff *skb, struct ip_vs_protocol *pp, |
@@ -56,7 +56,7 @@ udp_conn_out_get(const struct sk_buff *skb, struct ip_vs_protocol *pp, | |||
56 | struct ip_vs_conn *cp; | 56 | struct ip_vs_conn *cp; |
57 | __be16 _ports[2], *pptr; | 57 | __be16 _ports[2], *pptr; |
58 | 58 | ||
59 | pptr = skb_header_pointer(skb, skb->nh.iph->ihl*4, | 59 | pptr = skb_header_pointer(skb, ip_hdrlen(skb), |
60 | sizeof(_ports), _ports); | 60 | sizeof(_ports), _ports); |
61 | if (pptr == NULL) | 61 | if (pptr == NULL) |
62 | return NULL; | 62 | return NULL; |
@@ -82,7 +82,7 @@ udp_conn_schedule(struct sk_buff *skb, struct ip_vs_protocol *pp, | |||
82 | struct ip_vs_service *svc; | 82 | struct ip_vs_service *svc; |
83 | struct udphdr _udph, *uh; | 83 | struct udphdr _udph, *uh; |
84 | 84 | ||
85 | uh = skb_header_pointer(skb, skb->nh.iph->ihl*4, | 85 | uh = skb_header_pointer(skb, ip_hdrlen(skb), |
86 | sizeof(_udph), &_udph); | 86 | sizeof(_udph), &_udph); |
87 | if (uh == NULL) { | 87 | if (uh == NULL) { |
88 | *verdict = NF_DROP; | 88 | *verdict = NF_DROP; |
@@ -133,7 +133,7 @@ udp_snat_handler(struct sk_buff **pskb, | |||
133 | struct ip_vs_protocol *pp, struct ip_vs_conn *cp) | 133 | struct ip_vs_protocol *pp, struct ip_vs_conn *cp) |
134 | { | 134 | { |
135 | struct udphdr *udph; | 135 | struct udphdr *udph; |
136 | unsigned int udphoff = (*pskb)->nh.iph->ihl * 4; | 136 | const unsigned int udphoff = ip_hdrlen(*pskb); |
137 | 137 | ||
138 | /* csum_check requires unshared skb */ | 138 | /* csum_check requires unshared skb */ |
139 | if (!ip_vs_make_skb_writable(pskb, udphoff+sizeof(*udph))) | 139 | if (!ip_vs_make_skb_writable(pskb, udphoff+sizeof(*udph))) |
@@ -187,7 +187,7 @@ udp_dnat_handler(struct sk_buff **pskb, | |||
187 | struct ip_vs_protocol *pp, struct ip_vs_conn *cp) | 187 | struct ip_vs_protocol *pp, struct ip_vs_conn *cp) |
188 | { | 188 | { |
189 | struct udphdr *udph; | 189 | struct udphdr *udph; |
190 | unsigned int udphoff = (*pskb)->nh.iph->ihl * 4; | 190 | unsigned int udphoff = ip_hdrlen(*pskb); |
191 | 191 | ||
192 | /* csum_check requires unshared skb */ | 192 | /* csum_check requires unshared skb */ |
193 | if (!ip_vs_make_skb_writable(pskb, udphoff+sizeof(*udph))) | 193 | if (!ip_vs_make_skb_writable(pskb, udphoff+sizeof(*udph))) |
@@ -239,7 +239,7 @@ static int | |||
239 | udp_csum_check(struct sk_buff *skb, struct ip_vs_protocol *pp) | 239 | udp_csum_check(struct sk_buff *skb, struct ip_vs_protocol *pp) |
240 | { | 240 | { |
241 | struct udphdr _udph, *uh; | 241 | struct udphdr _udph, *uh; |
242 | unsigned int udphoff = skb->nh.iph->ihl*4; | 242 | const unsigned int udphoff = ip_hdrlen(skb); |
243 | 243 | ||
244 | uh = skb_header_pointer(skb, udphoff, sizeof(_udph), &_udph); | 244 | uh = skb_header_pointer(skb, udphoff, sizeof(_udph), &_udph); |
245 | if (uh == NULL) | 245 | if (uh == NULL) |