]> git.hungrycats.org Git - linux/commitdiff
[SKBUFF] introduce eth_hdr(skb)
authorArnaldo Carvalho de Melo <acme@conectiva.com.br>
Tue, 5 Oct 2004 15:51:10 +0000 (12:51 -0300)
committerArnaldo Carvalho de Melo <acme@conectiva.com.br>
Tue, 5 Oct 2004 15:51:10 +0000 (12:51 -0300)
This is the start of a series of patches to remove protocol
specific stuff out of include/linux/skbuff.h and to make the
struct sk_buff header pointers private, i.e. they will only
be accessible thru foo_hdr(skb) and some other accessor
functions.

Signed-off-by: Arnaldo Carvalho de Melo <acme@conectiva.com.br>
Signed-off-by: David S. Miller <davem@redhat.com>
30 files changed:
drivers/isdn/i4l/isdn_net.c
drivers/media/dvb/dvb-core/dvb_net.c
drivers/net/bonding/bond_alb.c
drivers/net/ioc3-eth.c
drivers/net/myri_sbus.c
drivers/net/plip.c
drivers/net/pppoe.c
drivers/s390/net/qeth_main.c
include/linux/if_ether.h
include/linux/if_vlan.h
include/linux/netfilter_bridge/ebt_802_3.h
include/linux/skbuff.h
net/8021q/vlan_dev.c
net/atm/br2684.c
net/bridge/br_input.c
net/bridge/br_netfilter.c
net/bridge/netfilter/ebt_802_3.c
net/bridge/netfilter/ebt_among.c
net/bridge/netfilter/ebt_dnat.c
net/bridge/netfilter/ebt_log.c
net/bridge/netfilter/ebt_redirect.c
net/bridge/netfilter/ebt_snat.c
net/bridge/netfilter/ebtables.c
net/core/dv.c
net/core/netpoll.c
net/decnet/dn_neigh.c
net/ethernet/eth.c
net/ipv4/netfilter/ipt_mac.c
net/ipv6/netfilter/ip6t_eui64.c
net/ipv6/netfilter/ip6t_mac.c

index 69c6884e97eabc9b5c9396fd2a252120711e66d2..964d5c9752827f78d79e1d7bc49d335561a03337 100644 (file)
@@ -1369,7 +1369,7 @@ isdn_net_type_trans(struct sk_buff *skb, struct net_device *dev)
 
        skb->mac.raw = skb->data;
        skb_pull(skb, ETH_HLEN);
-       eth = skb->mac.ethernet;
+       eth = eth_hdr(skb);
 
        if (*eth->h_dest & 1) {
                if (memcmp(eth->h_dest, dev->broadcast, ETH_ALEN) == 0)
index df42f82bec3cfdc3bda52c0b2090997498993340..ab18a9193fc4d46914fc1ed9bf364ae4097c128b 100644 (file)
@@ -142,7 +142,7 @@ static unsigned short dvb_net_eth_type_trans(struct sk_buff *skb,
        
        skb->mac.raw=skb->data;
        skb_pull(skb,dev->hard_header_len);
-       eth= skb->mac.ethernet;
+       eth = eth_hdr(skb);
        
        if (*eth->h_dest & 1) {
                if(memcmp(eth->h_dest,dev->broadcast, ETH_ALEN)==0)
index 49f5ceee5a04596414baffb10e5ee895952a946f..a76519afa036c97cf359447f70d3422be1317328 100644 (file)
@@ -1285,7 +1285,7 @@ int bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev)
        int res = 1;
 
        skb->mac.raw = (unsigned char *)skb->data;
-       eth_data = (struct ethhdr *)skb->data;
+       eth_data = eth_hdr(skb);
 
        /* make sure that the curr_active_slave and the slaves list do
         * not change during tx
index a93cda669010bb710d3f690eb606beef02b80d29..e16f8b20ae18d412ebced067bd576640681b9e34 100644 (file)
@@ -506,7 +506,7 @@ static struct net_device_stats *ioc3_get_stats(struct net_device *dev)
 
 static void ioc3_tcpudp_checksum(struct sk_buff *skb, uint32_t hwsum, int len)
 {
-       struct ethhdr *eh = skb->mac.ethernet;
+       struct ethhdr *eh = eth_hdr(skb);
        uint32_t csum, ehsum;
        unsigned int proto;
        struct iphdr *ih;
@@ -1333,7 +1333,7 @@ static int ioc3_start_xmit(struct sk_buff *skb, struct net_device *dev)
                uint32_t csum, ehsum;
                uint16_t *eh;
 
-               /* The MAC header.  skb->mac.ethernet seem the logic approach
+               /* The MAC header.  skb->mac seem the logic approach
                   to find the MAC header - except it's a NULL pointer ...  */
                eh = (uint16_t *) skb->data;
 
index fdd4d6effdf9a914ddd88b5d8ed17b0f2f429d2a..c5f95959ccbec1ecadfb0d0ccc0ef491a1e269ed 100644 (file)
@@ -376,7 +376,7 @@ static unsigned short myri_type_trans(struct sk_buff *skb, struct net_device *de
        
        skb->mac.raw = (((unsigned char *)skb->data) + MYRI_PAD_LEN);
        skb_pull(skb, dev->hard_header_len);
-       eth = skb->mac.ethernet;
+       eth = eth_hdr(skb);
        
 #ifdef DEBUG_HEADER
        DHDR(("myri_type_trans: "));
index 43f923c963c9f699330e7962f44df556118eed72..937b6198c2294f4804fa6757b4fcf69b9f58aeb3 100644 (file)
@@ -547,7 +547,7 @@ static unsigned short plip_type_trans(struct sk_buff *skb, struct net_device *de
        
        skb->mac.raw=skb->data;
        skb_pull(skb,dev->hard_header_len);
-       eth= skb->mac.ethernet;
+       eth = eth_hdr(skb);
        
        if(*eth->h_dest&1)
        {
index 64b35cc250c982f314bffa4a70c12efa8515a7df..672e3cd2db928f394f7ce9edb5915aa1c3cd6a00 100644 (file)
@@ -391,7 +391,7 @@ static int pppoe_rcv(struct sk_buff *skb,
 
        ph = (struct pppoe_hdr *) skb->nh.raw;
 
-       po = get_item((unsigned long) ph->sid, skb->mac.ethernet->h_source);
+       po = get_item((unsigned long) ph->sid, eth_hdr(skb)->h_source);
        if (!po) 
                goto drop;
 
@@ -440,7 +440,7 @@ static int pppoe_disc_rcv(struct sk_buff *skb,
        if (ph->code != PADT_CODE)
                goto abort;
 
-       po = get_item((unsigned long) ph->sid, skb->mac.ethernet->h_source);
+       po = get_item((unsigned long) ph->sid, eth_hdr(skb)->h_source);
        if (po) {
                struct sock *sk = po->sk;
 
index 80eedfc066e9bc3d32f1e87b90ee4dceab042e16..d01f9177977b2a36803daf1ab7d191859896833e 100644 (file)
@@ -2148,7 +2148,7 @@ qeth_type_trans(struct sk_buff *skb, struct net_device *dev)
 
        skb->mac.raw = skb->data;
        skb_pull(skb, ETH_ALEN * 2 + sizeof (short));
-       eth = skb->mac.ethernet;
+       eth = eth_hdr(skb);
 
        if (*eth->h_dest & 1) {
                if (memcmp(eth->h_dest, dev->broadcast, ETH_ALEN) == 0)
index d62b4dfd830577804cd8c583b9030fd3c0c46c85..4037aaab7aa909ca1c377bc308b65a1392a7abcb 100644 (file)
  *     This is an Ethernet frame header.
  */
  
-struct ethhdr 
-{
+struct ethhdr {
        unsigned char   h_dest[ETH_ALEN];       /* destination eth addr */
        unsigned char   h_source[ETH_ALEN];     /* source ether addr    */
        unsigned short  h_proto;                /* packet type ID field */
 } __attribute__((packed));
 
+#ifdef __KERNEL__
+#include <linux/skbuff.h>
+
+static inline struct ethhdr *eth_hdr(const struct sk_buff *skb)
+{
+       return (struct ethhdr *)skb->mac.raw;
+}
+#endif
+
 #endif /* _LINUX_IF_ETHER_H */
index 529c401a9a86465b6a186cd604a3461fb636e96d..29b6e104657e84417f78f3b5b1fcb4a547e1fb0c 100644 (file)
@@ -18,7 +18,6 @@
 /* externally defined structs */
 struct vlan_group;
 struct net_device;
-struct sk_buff;
 struct packet_type;
 struct vlan_collection;
 struct vlan_dev_info;
@@ -48,6 +47,13 @@ struct vlan_ethhdr {
    unsigned short      h_vlan_encapsulated_proto; /* packet type ID field (or len) */
 };
 
+#include <linux/skbuff.h>
+
+static inline struct vlan_ethhdr *vlan_eth_hdr(const struct sk_buff *skb)
+{
+       return (struct vlan_ethhdr *)skb->mac.raw;
+}
+
 struct vlan_hdr {
    unsigned short       h_vlan_TCI;                /* Encapsulates priority and VLAN ID */
    unsigned short       h_vlan_encapsulated_proto; /* packet type ID field (or len) */
@@ -180,7 +186,7 @@ static inline int __vlan_hwaccel_rx(struct sk_buff *skb,
                 * This allows the VLAN to have a different MAC than the underlying
                 * device, and still route correctly.
                 */
-               if (!memcmp(skb->mac.ethernet->h_dest, skb->dev->dev_addr, ETH_ALEN))
+               if (!memcmp(eth_hdr(skb)->h_dest, skb->dev->dev_addr, ETH_ALEN))
                        skb->pkt_type = PACKET_HOST;
                break;
        };
index b3d6c3219075be5cb2b23c1079e9e08a3c54614f..b9f712c14a0af4b88591773544b82c90f7f2706f 100644 (file)
@@ -49,6 +49,15 @@ struct ebt_802_3_hdr {
        } llc;
 };
 
+#ifdef __KERNEL__
+#include <linux/skbuff.h>
+
+static inline struct ebt_802_3_hdr *ebt_802_3_hdr(const struct sk_buff *skb)
+{
+       return (struct ebt_802_3_hdr *)skb->mac.raw;
+}
+#endif
+
 struct ebt_802_3_info 
 {
        uint8_t  sap;
index b6c6ef59ab1625d49390b15b42383fcab0db044b..71fc2bdc0cd6f730d2a756072af6b61f65f38f34 100644 (file)
@@ -219,7 +219,6 @@ struct sk_buff {
        } nh;
 
        union {
-               struct ethhdr   *ethernet;
                unsigned char   *raw;
        } mac;
 
index 5e8e9460c85d6f8b3e0304c532455e0875f50b5f..79b0262de54351d5dc3a2dcae3bacaa455e34004 100644 (file)
@@ -211,7 +211,7 @@ int vlan_skb_recv(struct sk_buff *skb, struct net_device *dev,
                 * This allows the VLAN to have a different MAC than the underlying
                 * device, and still route correctly.
                 */
-               if (memcmp(skb->mac.ethernet->h_dest, skb->dev->dev_addr, ETH_ALEN) == 0) {
+               if (memcmp(eth_hdr(skb)->h_dest, skb->dev->dev_addr, ETH_ALEN) == 0) {
                        /* It is for our (changed) MAC-address! */
                        skb->pkt_type = PACKET_HOST;
                }
index 66778f43a3c18ae16ba4bdd024961c87008d143e..f7955e643314b719989c491f6e2e5ed34a57b060 100644 (file)
@@ -294,7 +294,7 @@ static inline unsigned short br_type_trans(struct sk_buff *skb,
 {
        struct ethhdr *eth;
        unsigned char *rawp;
-       eth = skb->mac.ethernet;
+       eth = eth_hdr(skb);
 
        if (*eth->h_dest & 1) {
                if (memcmp(eth->h_dest, dev->broadcast, ETH_ALEN) == 0)
index d18d7b8ba1e263bd66f408c8a80ec2df255035cb..943d5ddc5f26e626031b0ab0a0865b9685474fe2 100644 (file)
@@ -48,7 +48,7 @@ static void br_pass_frame_up(struct net_bridge *br, struct sk_buff *skb)
 /* note: already called with rcu_read_lock (preempt_disabled) */
 int br_handle_frame_finish(struct sk_buff *skb)
 {
-       const unsigned char *dest = skb->mac.ethernet->h_dest;
+       const unsigned char *dest = eth_hdr(skb)->h_dest;
        struct net_bridge_port *p = skb->dev->br_port;
        struct net_bridge *br = p->br;
        struct net_bridge_fdb_entry *dst;
@@ -100,17 +100,17 @@ out:
 int br_handle_frame(struct net_bridge_port *p, struct sk_buff **pskb)
 {
        struct sk_buff *skb = *pskb;
-       const unsigned char *dest = skb->mac.ethernet->h_dest;
+       const unsigned char *dest = eth_hdr(skb)->h_dest;
 
        if (p->state == BR_STATE_DISABLED)
                goto err;
 
-       if (skb->mac.ethernet->h_source[0] & 1)
+       if (eth_hdr(skb)->h_source[0] & 1)
                goto err;
 
        if (p->state == BR_STATE_LEARNING ||
            p->state == BR_STATE_FORWARDING)
-               br_fdb_insert(p->br, p, skb->mac.ethernet->h_source, 0);
+               br_fdb_insert(p->br, p, eth_hdr(skb)->h_source, 0);
 
        if (p->br->stp_enabled &&
            !memcmp(dest, bridge_ula, 5) &&
@@ -127,7 +127,7 @@ int br_handle_frame(struct net_bridge_port *p, struct sk_buff **pskb)
                        if (br_should_route_hook(pskb)) 
                                return 0;
                        skb = *pskb;
-                       dest = skb->mac.ethernet->h_dest;
+                       dest = eth_hdr(skb)->h_dest;
                }
 
                if (!memcmp(p->br->dev->dev_addr, dest, ETH_ALEN))
index 82fddd94ce3cd692875e7d0dbc889122ae160acb..50e4df3559aab76713cc0de6423d57cf684fc2da 100644 (file)
@@ -255,7 +255,7 @@ bridged_dnat:
                                               1);
                                return 0;
                        }
-                       memcpy(skb->mac.ethernet->h_dest, dev->dev_addr,
+                       memcpy(eth_hdr(skb)->h_dest, dev->dev_addr,
                               ETH_ALEN);
                        skb->pkt_type = PACKET_HOST;
                }
@@ -412,8 +412,7 @@ static unsigned int br_nf_pre_routing(unsigned int hook, struct sk_buff **pskb,
        __u32 len;
        struct sk_buff *skb = *pskb;
        struct nf_bridge_info *nf_bridge;
-       struct vlan_ethhdr *hdr = (struct vlan_ethhdr *)
-                                  ((*pskb)->mac.ethernet);
+       struct vlan_ethhdr *hdr = vlan_eth_hdr(*pskb);
 
        if (skb->protocol == __constant_htons(ETH_P_IPV6) || IS_VLAN_IPV6) {
 #ifdef CONFIG_SYSCTL
@@ -516,7 +515,7 @@ static int br_nf_forward_finish(struct sk_buff *skb)
 {
        struct nf_bridge_info *nf_bridge = skb->nf_bridge;
        struct net_device *in;
-       struct vlan_ethhdr *hdr = (struct vlan_ethhdr *)(skb->mac.ethernet);
+       struct vlan_ethhdr *hdr = vlan_eth_hdr(skb);
 
 #ifdef CONFIG_NETFILTER_DEBUG
        skb->nf_debug ^= (1 << NF_BR_FORWARD);
@@ -551,7 +550,7 @@ static unsigned int br_nf_forward_ip(unsigned int hook, struct sk_buff **pskb,
 {
        struct sk_buff *skb = *pskb;
        struct nf_bridge_info *nf_bridge;
-       struct vlan_ethhdr *hdr = (struct vlan_ethhdr *)(skb->mac.ethernet);
+       struct vlan_ethhdr *hdr = vlan_eth_hdr(skb);
        int pf;
 
        if (!skb->nf_bridge)
@@ -591,7 +590,7 @@ static unsigned int br_nf_forward_arp(unsigned int hook, struct sk_buff **pskb,
    int (*okfn)(struct sk_buff *))
 {
        struct sk_buff *skb = *pskb;
-       struct vlan_ethhdr *hdr = (struct vlan_ethhdr *)(skb->mac.ethernet);
+       struct vlan_ethhdr *hdr = vlan_eth_hdr(skb);
        struct net_device **d = (struct net_device **)(skb->cb);
 
 #ifdef CONFIG_SYSCTL
@@ -669,7 +668,7 @@ static unsigned int br_nf_local_out(unsigned int hook, struct sk_buff **pskb,
        struct net_device *realindev, *realoutdev;
        struct sk_buff *skb = *pskb;
        struct nf_bridge_info *nf_bridge;
-       struct vlan_ethhdr *hdr = (struct vlan_ethhdr *)(skb->mac.ethernet);
+       struct vlan_ethhdr *hdr = vlan_eth_hdr(skb);
        int pf;
 
        if (!skb->nf_bridge)
@@ -753,7 +752,7 @@ static unsigned int br_nf_post_routing(unsigned int hook, struct sk_buff **pskb,
 {
        struct sk_buff *skb = *pskb;
        struct nf_bridge_info *nf_bridge = (*pskb)->nf_bridge;
-       struct vlan_ethhdr *hdr = (struct vlan_ethhdr *)(skb->mac.ethernet);
+       struct vlan_ethhdr *hdr = vlan_eth_hdr(skb);
        struct net_device *realoutdev = bridge_parent(skb->dev);
        int pf;
 
@@ -848,8 +847,7 @@ static unsigned int ip_sabotage_out(unsigned int hook, struct sk_buff **pskb,
 
 #ifdef CONFIG_SYSCTL
        if (!skb->nf_bridge) {
-               struct vlan_ethhdr *hdr =
-                  (struct vlan_ethhdr *)(skb->mac.ethernet);
+               struct vlan_ethhdr *hdr = vlan_eth_hdr(skb);
 
                if (skb->protocol == __constant_htons(ETH_P_IP) ||
                    IS_VLAN_IP) {
index 1db4434f96555bd3a7a91f648e65fe33ccf156da..468ebdf4bc1cfa24f0eb3e55a5477c3d6a8b6942 100644 (file)
@@ -16,7 +16,7 @@ static int ebt_filter_802_3(const struct sk_buff *skb, const struct net_device *
    const struct net_device *out, const void *data, unsigned int datalen)
 {
        struct ebt_802_3_info *info = (struct ebt_802_3_info *)data;
-       struct ebt_802_3_hdr *hdr = (struct ebt_802_3_hdr *)skb->mac.ethernet;
+       struct ebt_802_3_hdr *hdr = ebt_802_3_hdr(skb);
        uint16_t type = hdr->llc.ui.ctrl & IS_UI ? hdr->llc.ui.type : hdr->llc.ni.type;
 
        if (info->bitmask & EBT_802_3_SAP) {
index 78aa491ceb90814a323daa770152e2d6eab9084a..5a1f5e3bff15b6dc68d78542478929af79c016c5 100644 (file)
@@ -72,14 +72,14 @@ static int ebt_mac_wormhash_check_integrity(const struct ebt_mac_wormhash
 
 static int get_ip_dst(const struct sk_buff *skb, uint32_t *addr)
 {
-       if (skb->mac.ethernet->h_proto == __constant_htons(ETH_P_IP)) {
+       if (eth_hdr(skb)->h_proto == htons(ETH_P_IP)) {
                struct iphdr _iph, *ih;
 
                ih = skb_header_pointer(skb, 0, sizeof(_iph), &_iph);
                if (ih == NULL)
                        return -1;
                *addr = ih->daddr;
-       } else if (skb->mac.ethernet->h_proto == __constant_htons(ETH_P_ARP)) {
+       } else if (eth_hdr(skb)->h_proto == htons(ETH_P_ARP)) {
                struct arphdr _arph, *ah;
                uint32_t buf, *bp;
 
@@ -100,14 +100,14 @@ static int get_ip_dst(const struct sk_buff *skb, uint32_t *addr)
 
 static int get_ip_src(const struct sk_buff *skb, uint32_t *addr)
 {
-       if (skb->mac.ethernet->h_proto == __constant_htons(ETH_P_IP)) {
+       if (eth_hdr(skb)->h_proto == htons(ETH_P_IP)) {
                struct iphdr _iph, *ih;
 
                ih = skb_header_pointer(skb, 0, sizeof(_iph), &_iph);
                if (ih == NULL)
                        return -1;
                *addr = ih->saddr;
-       } else if (skb->mac.ethernet->h_proto == __constant_htons(ETH_P_ARP)) {
+       } else if (eth_hdr(skb)->h_proto == htons(ETH_P_ARP)) {
                struct arphdr _arph, *ah;
                uint32_t buf, *bp;
 
@@ -139,7 +139,7 @@ static int ebt_filter_among(const struct sk_buff *skb,
        wh_src = ebt_among_wh_src(info);
 
        if (wh_src) {
-               smac = skb->mac.ethernet->h_source;
+               smac = eth_hdr(skb)->h_source;
                if (get_ip_src(skb, &sip))
                        return EBT_NOMATCH;
                if (!(info->bitmask & EBT_AMONG_SRC_NEG)) {
@@ -154,7 +154,7 @@ static int ebt_filter_among(const struct sk_buff *skb,
        }
 
        if (wh_dst) {
-               dmac = skb->mac.ethernet->h_dest;
+               dmac = eth_hdr(skb)->h_dest;
                if (get_ip_dst(skb, &dip))
                        return EBT_NOMATCH;
                if (!(info->bitmask & EBT_AMONG_DST_NEG)) {
index f9552dfb1655169cbca982c4f68b00de0b1edb87..f5463086c7bd6a3ce786161919771e8bc05cdcae 100644 (file)
@@ -30,8 +30,7 @@ static int ebt_target_dnat(struct sk_buff **pskb, unsigned int hooknr,
                kfree_skb(*pskb);
                *pskb = nskb;
        }
-       memcpy(((**pskb).mac.ethernet)->h_dest, info->mac,
-          ETH_ALEN * sizeof(unsigned char));
+       memcpy(eth_hdr(*pskb)->h_dest, info->mac, ETH_ALEN);
        return info->target;
 }
 
index 407dfdbaf68886bd88c4bd5d5223a6aa18d4ed3c..8afd1bc69c33ef316dd37de841020e23e2f27d3d 100644 (file)
@@ -70,13 +70,13 @@ static void ebt_log(const struct sk_buff *skb, const struct net_device *in,
           out ? out->name : "");
 
        printk("MAC source = ");
-       print_MAC((skb->mac.ethernet)->h_source);
+       print_MAC(eth_hdr(skb)->h_source);
        printk("MAC dest = ");
-       print_MAC((skb->mac.ethernet)->h_dest);
+       print_MAC(eth_hdr(skb)->h_dest);
 
-       printk("proto = 0x%04x", ntohs(((*skb).mac.ethernet)->h_proto));
+       printk("proto = 0x%04x", ntohs(eth_hdr(skb)->h_proto));
 
-       if ((info->bitmask & EBT_LOG_IP) && skb->mac.ethernet->h_proto ==
+       if ((info->bitmask & EBT_LOG_IP) && eth_hdr(skb)->h_proto ==
           htons(ETH_P_IP)){
                struct iphdr _iph, *ih;
 
@@ -106,8 +106,8 @@ static void ebt_log(const struct sk_buff *skb, const struct net_device *in,
        }
 
        if ((info->bitmask & EBT_LOG_ARP) &&
-           ((skb->mac.ethernet->h_proto == __constant_htons(ETH_P_ARP)) ||
-           (skb->mac.ethernet->h_proto == __constant_htons(ETH_P_RARP)))) {
+           ((eth_hdr(skb)->h_proto == htons(ETH_P_ARP)) ||
+            (eth_hdr(skb)->h_proto == htons(ETH_P_RARP)))) {
                struct arphdr _arph, *ah;
 
                ah = skb_header_pointer(skb, 0, sizeof(_arph), &_arph);
index befbfa1e06a7cce9b681263df0b724134be00ce0..1538b438666225fd0a8cc266ab0af8700e282eb8 100644 (file)
@@ -32,11 +32,10 @@ static int ebt_target_redirect(struct sk_buff **pskb, unsigned int hooknr,
                *pskb = nskb;
        }
        if (hooknr != NF_BR_BROUTING)
-               memcpy((**pskb).mac.ethernet->h_dest,
-                  in->br_port->br->dev->dev_addr, ETH_ALEN);
+               memcpy(eth_hdr(*pskb)->h_dest,
+                      in->br_port->br->dev->dev_addr, ETH_ALEN);
        else
-               memcpy((**pskb).mac.ethernet->h_dest,
-                  in->dev_addr, ETH_ALEN);
+               memcpy(eth_hdr(*pskb)->h_dest, in->dev_addr, ETH_ALEN);
        (*pskb)->pkt_type = PACKET_HOST;
        return info->target;
 }
index ae0f0539c5f09676bf710dcea89cfdb241dfcc2f..1529bdcb9a48525c58da62500d936a2bcbc401d0 100644 (file)
@@ -30,8 +30,7 @@ static int ebt_target_snat(struct sk_buff **pskb, unsigned int hooknr,
                kfree_skb(*pskb);
                *pskb = nskb;
        }
-       memcpy(((**pskb).mac.ethernet)->h_source, info->mac,
-          ETH_ALEN * sizeof(unsigned char));
+       memcpy(eth_hdr(*pskb)->h_source, info->mac, ETH_ALEN);
        return info->target;
 }
 
index 65184c5e6f6f79fc2ef6b36ed620cddec3b53cc4..8352eec5bec4cd16f530d52455afff529928ab2f 100644 (file)
@@ -190,7 +190,7 @@ unsigned int ebt_do_table (unsigned int hook, struct sk_buff **pskb,
        base = private->entries;
        i = 0;
        while (i < nentries) {
-               if (ebt_basic_match(point, (**pskb).mac.ethernet, in, out))
+               if (ebt_basic_match(point, eth_hdr(*pskb), in, out))
                        goto letscontinue;
 
                if (EBT_MATCH_ITERATE(point, ebt_do_match, *pskb, in, out) != 0)
index f8e3f9c6b28215a63a79f1f8e465b70df36a0187..05c76cb9c8fd72ee6e466f1420cebaaf6c6274b6 100644 (file)
@@ -450,12 +450,12 @@ int divert_ioctl(unsigned int cmd, struct divert_cf __user *arg)
  */
 
 #define        ETH_DIVERT_FRAME(skb) \
-       memcpy(skb->mac.ethernet, skb->dev->dev_addr, ETH_ALEN); \
+       memcpy(eth_hdr(skb), skb->dev->dev_addr, ETH_ALEN); \
        skb->pkt_type=PACKET_HOST
                
 void divert_frame(struct sk_buff *skb)
 {
-       struct ethhdr                   *eth = skb->mac.ethernet;
+       struct ethhdr                   *eth = eth_hdr(skb);
        struct iphdr                    *iph;
        struct tcphdr                   *tcph;
        struct udphdr                   *udph;
index 174a76d6c04d7b647bfd2393060a0c788f6790f9..cb3a03fb1acb52f7e3c1c81344deee0d40e9cc0a 100644 (file)
@@ -378,7 +378,7 @@ int netpoll_rx(struct sk_buff *skb)
                return 1;
        }
 
-       proto = ntohs(skb->mac.ethernet->h_proto);
+       proto = ntohs(eth_hdr(skb)->h_proto);
        if (proto != ETH_P_IP)
                goto out;
        if (skb->pkt_type == PACKET_OTHERHOST)
index 0691b11ccf2abd5368f7e103fc481507c9c55b01..dc48de88b9b3b19543708f0f6d3c5706ac4d7a78 100644 (file)
@@ -399,7 +399,7 @@ int dn_neigh_router_hello(struct sk_buff *skb)
                        neigh->updated = jiffies;
 
                        if (neigh->dev->type == ARPHRD_ETHER)
-                               memcpy(neigh->ha, &skb->mac.ethernet->h_source, ETH_ALEN);
+                               memcpy(neigh->ha, &eth_hdr(skb)->h_source, ETH_ALEN);
 
                        dn->blksize  = dn_ntohs(msg->blksize);
                        dn->priority = msg->priority;
@@ -455,7 +455,7 @@ int dn_neigh_endnode_hello(struct sk_buff *skb)
                        neigh->updated = jiffies;
 
                        if (neigh->dev->type == ARPHRD_ETHER)
-                               memcpy(neigh->ha, &skb->mac.ethernet->h_source, ETH_ALEN);
+                               memcpy(neigh->ha, &eth_hdr(skb)->h_source, ETH_ALEN);
                        dn->flags   &= ~(DN_NDFLAG_R1 | DN_NDFLAG_R2);
                        dn->blksize  = dn_ntohs(msg->blksize);
                        dn->priority = 0;
index 886e6ea62f3bf854a8075c5be984a03a37e26fba..a238f92ec37c3202ac1d2cdcf329b5f3c991d9c5 100644 (file)
@@ -163,7 +163,7 @@ unsigned short eth_type_trans(struct sk_buff *skb, struct net_device *dev)
        
        skb->mac.raw=skb->data;
        skb_pull(skb,ETH_HLEN);
-       eth= skb->mac.ethernet;
+       eth = eth_hdr(skb);
        skb->input_dev = dev;
        
        if(*eth->h_dest&1)
@@ -210,7 +210,7 @@ unsigned short eth_type_trans(struct sk_buff *skb, struct net_device *dev)
 
 int eth_header_parse(struct sk_buff *skb, unsigned char *haddr)
 {
-       struct ethhdr *eth = skb->mac.ethernet;
+       struct ethhdr *eth = eth_hdr(skb);
        memcpy(haddr, eth->h_source, ETH_ALEN);
        return ETH_ALEN;
 }
index 77109e046ef8eebe605d63cd047b1fd7730b893c..11a459e33f250bcd59ecca2cd51c8cf32225f21a 100644 (file)
@@ -33,7 +33,7 @@ match(const struct sk_buff *skb,
     return (skb->mac.raw >= skb->head
            && (skb->mac.raw + ETH_HLEN) <= skb->data
            /* If so, compare... */
-           && ((memcmp(skb->mac.ethernet->h_source, info->srcaddr, ETH_ALEN)
+           && ((memcmp(eth_hdr(skb)->h_source, info->srcaddr, ETH_ALEN)
                == 0) ^ info->invert));
 }
 
index b6199f25a76336e23670101272f7612dd59a032c..3b1340d26b5e9c6a00549a6617061eaef0eafec2 100644 (file)
@@ -41,10 +41,10 @@ match(const struct sk_buff *skb,
     
     memset(eui64, 0, sizeof(eui64));
 
-    if (skb->mac.ethernet->h_proto == ntohs(ETH_P_IPV6)) {
+    if (eth_hdr(skb)->h_proto == ntohs(ETH_P_IPV6)) {
       if (skb->nh.ipv6h->version == 0x6) { 
-         memcpy(eui64, skb->mac.ethernet->h_source, 3);
-         memcpy(eui64 + 5, skb->mac.ethernet->h_source + 3, 3);
+         memcpy(eui64, eth_hdr(skb)->h_source, 3);
+         memcpy(eui64 + 5, eth_hdr(skb)->h_source + 3, 3);
         eui64[3]=0xff;
         eui64[4]=0xfe;
         eui64[0] |= 0x02;
index 4d184e4a98a4cdc65160e89400e4854e0ad51a7e..ea874dd241ddd35e4e10238c5a1aa418ce7f5130 100644 (file)
@@ -35,7 +35,7 @@ match(const struct sk_buff *skb,
     return (skb->mac.raw >= skb->head
            && (skb->mac.raw + ETH_HLEN) <= skb->data
            /* If so, compare... */
-           && ((memcmp(skb->mac.ethernet->h_source, info->srcaddr, ETH_ALEN)
+           && ((memcmp(eth_hdr(skb)->h_source, info->srcaddr, ETH_ALEN)
                == 0) ^ info->invert));
 }