[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>
This commit is contained in:
committed by
David S. Miller
parent
0272ffc46f
commit
c9bdd4b525
@@ -331,7 +331,7 @@ static inline int app_tcp_pkt_out(struct ip_vs_conn *cp, struct sk_buff **pskb,
|
||||
struct ip_vs_app *app)
|
||||
{
|
||||
int diff;
|
||||
unsigned int tcp_offset = (*pskb)->nh.iph->ihl*4;
|
||||
const unsigned int tcp_offset = ip_hdrlen(*pskb);
|
||||
struct tcphdr *th;
|
||||
__u32 seq;
|
||||
|
||||
@@ -406,7 +406,7 @@ static inline int app_tcp_pkt_in(struct ip_vs_conn *cp, struct sk_buff **pskb,
|
||||
struct ip_vs_app *app)
|
||||
{
|
||||
int diff;
|
||||
unsigned int tcp_offset = (*pskb)->nh.iph->ihl*4;
|
||||
const unsigned int tcp_offset = ip_hdrlen(*pskb);
|
||||
struct tcphdr *th;
|
||||
__u32 seq;
|
||||
|
||||
|
||||
@@ -713,8 +713,7 @@ static inline int is_tcp_reset(const struct sk_buff *skb)
|
||||
{
|
||||
struct tcphdr _tcph, *th;
|
||||
|
||||
th = skb_header_pointer(skb, skb->nh.iph->ihl * 4,
|
||||
sizeof(_tcph), &_tcph);
|
||||
th = skb_header_pointer(skb, ip_hdrlen(skb), sizeof(_tcph), &_tcph);
|
||||
if (th == NULL)
|
||||
return 0;
|
||||
return th->rst;
|
||||
|
||||
@@ -76,8 +76,7 @@ tcp_conn_schedule(struct sk_buff *skb,
|
||||
struct ip_vs_service *svc;
|
||||
struct tcphdr _tcph, *th;
|
||||
|
||||
th = skb_header_pointer(skb, skb->nh.iph->ihl*4,
|
||||
sizeof(_tcph), &_tcph);
|
||||
th = skb_header_pointer(skb, ip_hdrlen(skb), sizeof(_tcph), &_tcph);
|
||||
if (th == NULL) {
|
||||
*verdict = NF_DROP;
|
||||
return 0;
|
||||
@@ -127,7 +126,7 @@ tcp_snat_handler(struct sk_buff **pskb,
|
||||
struct ip_vs_protocol *pp, struct ip_vs_conn *cp)
|
||||
{
|
||||
struct tcphdr *tcph;
|
||||
unsigned int tcphoff = (*pskb)->nh.iph->ihl * 4;
|
||||
const unsigned int tcphoff = ip_hdrlen(*pskb);
|
||||
|
||||
/* csum_check requires unshared skb */
|
||||
if (!ip_vs_make_skb_writable(pskb, tcphoff+sizeof(*tcph)))
|
||||
@@ -175,7 +174,7 @@ tcp_dnat_handler(struct sk_buff **pskb,
|
||||
struct ip_vs_protocol *pp, struct ip_vs_conn *cp)
|
||||
{
|
||||
struct tcphdr *tcph;
|
||||
unsigned int tcphoff = (*pskb)->nh.iph->ihl * 4;
|
||||
const unsigned int tcphoff = ip_hdrlen(*pskb);
|
||||
|
||||
/* csum_check requires unshared skb */
|
||||
if (!ip_vs_make_skb_writable(pskb, tcphoff+sizeof(*tcph)))
|
||||
@@ -224,7 +223,7 @@ tcp_dnat_handler(struct sk_buff **pskb,
|
||||
static int
|
||||
tcp_csum_check(struct sk_buff *skb, struct ip_vs_protocol *pp)
|
||||
{
|
||||
unsigned int tcphoff = skb->nh.iph->ihl*4;
|
||||
const unsigned int tcphoff = ip_hdrlen(skb);
|
||||
|
||||
switch (skb->ip_summed) {
|
||||
case CHECKSUM_NONE:
|
||||
@@ -467,8 +466,7 @@ tcp_state_transition(struct ip_vs_conn *cp, int direction,
|
||||
{
|
||||
struct tcphdr _tcph, *th;
|
||||
|
||||
th = skb_header_pointer(skb, skb->nh.iph->ihl*4,
|
||||
sizeof(_tcph), &_tcph);
|
||||
th = skb_header_pointer(skb, ip_hdrlen(skb), sizeof(_tcph), &_tcph);
|
||||
if (th == NULL)
|
||||
return 0;
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
#include <linux/udp.h>
|
||||
|
||||
#include <net/ip_vs.h>
|
||||
|
||||
#include <net/ip.h>
|
||||
|
||||
static struct ip_vs_conn *
|
||||
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,
|
||||
struct ip_vs_conn *cp;
|
||||
__be16 _ports[2], *pptr;
|
||||
|
||||
pptr = skb_header_pointer(skb, skb->nh.iph->ihl*4,
|
||||
pptr = skb_header_pointer(skb, ip_hdrlen(skb),
|
||||
sizeof(_ports), _ports);
|
||||
if (pptr == NULL)
|
||||
return NULL;
|
||||
@@ -82,7 +82,7 @@ udp_conn_schedule(struct sk_buff *skb, struct ip_vs_protocol *pp,
|
||||
struct ip_vs_service *svc;
|
||||
struct udphdr _udph, *uh;
|
||||
|
||||
uh = skb_header_pointer(skb, skb->nh.iph->ihl*4,
|
||||
uh = skb_header_pointer(skb, ip_hdrlen(skb),
|
||||
sizeof(_udph), &_udph);
|
||||
if (uh == NULL) {
|
||||
*verdict = NF_DROP;
|
||||
@@ -133,7 +133,7 @@ udp_snat_handler(struct sk_buff **pskb,
|
||||
struct ip_vs_protocol *pp, struct ip_vs_conn *cp)
|
||||
{
|
||||
struct udphdr *udph;
|
||||
unsigned int udphoff = (*pskb)->nh.iph->ihl * 4;
|
||||
const unsigned int udphoff = ip_hdrlen(*pskb);
|
||||
|
||||
/* csum_check requires unshared skb */
|
||||
if (!ip_vs_make_skb_writable(pskb, udphoff+sizeof(*udph)))
|
||||
@@ -187,7 +187,7 @@ udp_dnat_handler(struct sk_buff **pskb,
|
||||
struct ip_vs_protocol *pp, struct ip_vs_conn *cp)
|
||||
{
|
||||
struct udphdr *udph;
|
||||
unsigned int udphoff = (*pskb)->nh.iph->ihl * 4;
|
||||
unsigned int udphoff = ip_hdrlen(*pskb);
|
||||
|
||||
/* csum_check requires unshared skb */
|
||||
if (!ip_vs_make_skb_writable(pskb, udphoff+sizeof(*udph)))
|
||||
@@ -239,7 +239,7 @@ static int
|
||||
udp_csum_check(struct sk_buff *skb, struct ip_vs_protocol *pp)
|
||||
{
|
||||
struct udphdr _udph, *uh;
|
||||
unsigned int udphoff = skb->nh.iph->ihl*4;
|
||||
const unsigned int udphoff = ip_hdrlen(skb);
|
||||
|
||||
uh = skb_header_pointer(skb, udphoff, sizeof(_udph), &_udph);
|
||||
if (uh == NULL)
|
||||
|
||||
Reference in New Issue
Block a user