[SK_BUFF]: Introduce arp_hdr(), remove skb->nh.arph
authorArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 12 Mar 2007 23:56:31 +0000 (20:56 -0300)
committerDavid S. Miller <davem@sunset.davemloft.net>
Thu, 26 Apr 2007 05:25:12 +0000 (22:25 -0700)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_main.c
drivers/net/chelsio/sge.c
include/linux/if_arp.h
include/linux/skbuff.h
net/bridge/br_netfilter.c
net/core/netpoll.c
net/ipv4/arp.c
net/ipv4/netfilter/arp_tables.c
net/ipv4/netfilter/arpt_mangle.c
net/ipv4/netfilter/ipt_CLUSTERIP.c

index 7f11388893fc613dc9867d6173d62f1c131442bb..76d3504505bd01ff150153113c4e1cf24d95bf00 100644 (file)
@@ -2524,7 +2524,7 @@ static int bond_arp_rcv(struct sk_buff *skb, struct net_device *dev, struct pack
                                 (2 * sizeof(u32)))))
                goto out_unlock;
 
-       arp = skb->nh.arph;
+       arp = arp_hdr(skb);
        if (arp->ar_hln != dev->addr_len ||
            skb->pkt_type == PACKET_OTHERHOST ||
            skb->pkt_type == PACKET_LOOPBACK ||
index c357f45a16c3f921225ff6c5d195242c50d23f60..a4204dff3636c0ce13416c98db180d7f0e682a53 100644 (file)
@@ -1925,7 +1925,7 @@ int t1_start_xmit(struct sk_buff *skb, struct net_device *dev)
                 */
                if ((unlikely(!adapter->sge->espibug_skb[dev->if_port]))) {
                        if (skb->protocol == htons(ETH_P_ARP) &&
-                           skb->nh.arph->ar_op == htons(ARPOP_REQUEST)) {
+                           arp_hdr(skb)->ar_op == htons(ARPOP_REQUEST)) {
                                adapter->sge->espibug_skb[dev->if_port] = skb;
                                /* We want to re-use this skb later. We
                                 * simply bump the reference count and it
index 7f5714214ee35e787aa77dfbd3b8cf63d21ca620..ed7b93c3083ae668b1505d434aa58a1d9dc601ce 100644 (file)
@@ -148,4 +148,13 @@ struct arphdr
 
 };
 
+#ifdef __KERNEL__
+#include <linux/skbuff.h>
+
+static inline struct arphdr *arp_hdr(const struct sk_buff *skb)
+{
+       return (struct arphdr *)skb_network_header(skb);
+}
+#endif
+
 #endif /* _LINUX_IF_ARP_H */
index 62f841b5b70020a39ceb9bcce08ac9d2460d66ac..9cb674b12b29c7a23b07265d60ae1c09b6084938 100644 (file)
@@ -248,7 +248,6 @@ struct sk_buff {
 
        union {
                struct ipv6hdr  *ipv6h;
-               struct arphdr   *arph;
                unsigned char   *raw;
        } nh;
 
index ebe740f6b902b3e378fe89cd7e5397471239e718..0ee74b1e47700c37b4209ff46f159316a41c0f96 100644 (file)
@@ -670,7 +670,7 @@ static unsigned int br_nf_forward_arp(unsigned int hook, struct sk_buff **pskb,
                (*pskb)->nh.raw += VLAN_HLEN;
        }
 
-       if (skb->nh.arph->ar_pln != 4) {
+       if (arp_hdr(skb)->ar_pln != 4) {
                if (IS_VLAN_ARP(skb)) {
                        skb_push(*pskb, VLAN_HLEN);
                        (*pskb)->nh.raw -= VLAN_HLEN;
index c4cec17be334478a52a5942ec1021449fd0bafef..496b06244a8e9bad36a032355b7bdb7ab2557472 100644 (file)
@@ -363,7 +363,7 @@ static void arp_reply(struct sk_buff *skb)
 
        skb_reset_network_header(skb);
        skb->h.raw = skb->data;
-       arp = skb->nh.arph;
+       arp = arp_hdr(skb);
 
        if ((arp->ar_hrd != htons(ARPHRD_ETHER) &&
             arp->ar_hrd != htons(ARPHRD_IEEE802)) ||
index 01d0e8dd17d86213131d363d92ee064e16c9f017..7110779a0244598b17518c46cc4784370198f3d0 100644 (file)
@@ -721,7 +721,7 @@ static int arp_process(struct sk_buff *skb)
        if (in_dev == NULL)
                goto out;
 
-       arp = skb->nh.arph;
+       arp = arp_hdr(skb);
 
        switch (dev_type) {
        default:
@@ -937,7 +937,7 @@ static int arp_rcv(struct sk_buff *skb, struct net_device *dev,
                                 (2 * sizeof(u32)))))
                goto freeskb;
 
-       arp = skb->nh.arph;
+       arp = arp_hdr(skb);
        if (arp->ar_hln != dev->addr_len ||
            dev->flags & IFF_NOARP ||
            skb->pkt_type == PACKET_OTHERHOST ||
index 57b0221f9e249b3f3c4e222fd1c82f1330832358..cae41215e3c7efc663350260e5b8d567d0d13992 100644 (file)
@@ -245,7 +245,7 @@ unsigned int arpt_do_table(struct sk_buff **pskb,
        e = get_entry(table_base, private->hook_entry[hook]);
        back = get_entry(table_base, private->underflow[hook]);
 
-       arp = (*pskb)->nh.arph;
+       arp = arp_hdr(*pskb);
        do {
                if (arp_packet_match(arp, (*pskb)->dev, indev, outdev, &e->arp)) {
                        struct arpt_entry_target *t;
@@ -297,7 +297,7 @@ unsigned int arpt_do_table(struct sk_buff **pskb,
                                                                     t->data);
 
                                /* Target might have changed stuff. */
-                               arp = (*pskb)->nh.arph;
+                               arp = arp_hdr(*pskb);
 
                                if (verdict == ARPT_CONTINUE)
                                        e = (void *)e + e->next_offset;
index af1c8593eb199fce303b2da53f2c9679877fe06a..b4450f1ccc1bdd15db00f6ed0201bb5a50aba4b5 100644 (file)
@@ -30,7 +30,7 @@ target(struct sk_buff **pskb,
                *pskb = nskb;
        }
 
-       arp = (*pskb)->nh.arph;
+       arp = arp_hdr(*pskb);
        arpptr = skb_network_header(*pskb) + sizeof(*arp);
        pln = arp->ar_pln;
        hln = arp->ar_hln;
index af5b82b8ceb791f5cd3a78e90af58281a9af4a64..d3b16817a9910bf3d083fae4f6188eb32184ceaa 100644 (file)
@@ -521,7 +521,7 @@ arp_mangle(unsigned int hook,
           const struct net_device *out,
           int (*okfn)(struct sk_buff *))
 {
-       struct arphdr *arp = (*pskb)->nh.arph;
+       struct arphdr *arp = arp_hdr(*pskb);
        struct arp_payload *payload;
        struct clusterip_config *c;