From f1643267bc1f278a0c7e8347c283535c2cfa7d19 Mon Sep 17 00:00:00 2001 From: Arnaldo Carvalho de Melo Date: Tue, 5 Oct 2004 12:51:10 -0300 Subject: [SKBUFF] introduce eth_hdr(skb) 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 Signed-off-by: David S. Miller --- drivers/isdn/i4l/isdn_net.c | 2 +- drivers/media/dvb/dvb-core/dvb_net.c | 2 +- drivers/net/bonding/bond_alb.c | 2 +- drivers/net/ioc3-eth.c | 4 ++-- drivers/net/myri_sbus.c | 2 +- drivers/net/plip.c | 2 +- drivers/net/pppoe.c | 4 ++-- drivers/s390/net/qeth_main.c | 2 +- include/linux/if_ether.h | 12 ++++++++++-- include/linux/if_vlan.h | 10 ++++++++-- include/linux/netfilter_bridge/ebt_802_3.h | 9 +++++++++ include/linux/skbuff.h | 1 - net/8021q/vlan_dev.c | 2 +- net/atm/br2684.c | 2 +- net/bridge/br_input.c | 10 +++++----- net/bridge/br_netfilter.c | 18 ++++++++---------- net/bridge/netfilter/ebt_802_3.c | 2 +- net/bridge/netfilter/ebt_among.c | 12 ++++++------ net/bridge/netfilter/ebt_dnat.c | 3 +-- net/bridge/netfilter/ebt_log.c | 12 ++++++------ net/bridge/netfilter/ebt_redirect.c | 7 +++---- net/bridge/netfilter/ebt_snat.c | 3 +-- net/bridge/netfilter/ebtables.c | 2 +- net/core/dv.c | 4 ++-- net/core/netpoll.c | 2 +- net/decnet/dn_neigh.c | 4 ++-- net/ethernet/eth.c | 4 ++-- net/ipv4/netfilter/ipt_mac.c | 2 +- net/ipv6/netfilter/ip6t_eui64.c | 6 +++--- net/ipv6/netfilter/ip6t_mac.c | 2 +- 30 files changed, 83 insertions(+), 66 deletions(-) diff --git a/drivers/isdn/i4l/isdn_net.c b/drivers/isdn/i4l/isdn_net.c index 69c6884e97ea..964d5c975282 100644 --- a/drivers/isdn/i4l/isdn_net.c +++ b/drivers/isdn/i4l/isdn_net.c @@ -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) diff --git a/drivers/media/dvb/dvb-core/dvb_net.c b/drivers/media/dvb/dvb-core/dvb_net.c index df42f82bec3c..ab18a9193fc4 100644 --- a/drivers/media/dvb/dvb-core/dvb_net.c +++ b/drivers/media/dvb/dvb-core/dvb_net.c @@ -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) diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c index 49f5ceee5a04..a76519afa036 100644 --- a/drivers/net/bonding/bond_alb.c +++ b/drivers/net/bonding/bond_alb.c @@ -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 diff --git a/drivers/net/ioc3-eth.c b/drivers/net/ioc3-eth.c index a93cda669010..e16f8b20ae18 100644 --- a/drivers/net/ioc3-eth.c +++ b/drivers/net/ioc3-eth.c @@ -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; diff --git a/drivers/net/myri_sbus.c b/drivers/net/myri_sbus.c index fdd4d6effdf9..c5f95959ccbe 100644 --- a/drivers/net/myri_sbus.c +++ b/drivers/net/myri_sbus.c @@ -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: ")); diff --git a/drivers/net/plip.c b/drivers/net/plip.c index 43f923c963c9..937b6198c229 100644 --- a/drivers/net/plip.c +++ b/drivers/net/plip.c @@ -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) { diff --git a/drivers/net/pppoe.c b/drivers/net/pppoe.c index 64b35cc250c9..672e3cd2db92 100644 --- a/drivers/net/pppoe.c +++ b/drivers/net/pppoe.c @@ -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; diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c index 80eedfc066e9..d01f9177977b 100644 --- a/drivers/s390/net/qeth_main.c +++ b/drivers/s390/net/qeth_main.c @@ -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) diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h index d62b4dfd8305..4037aaab7aa9 100644 --- a/include/linux/if_ether.h +++ b/include/linux/if_ether.h @@ -96,11 +96,19 @@ * 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 + +static inline struct ethhdr *eth_hdr(const struct sk_buff *skb) +{ + return (struct ethhdr *)skb->mac.raw; +} +#endif + #endif /* _LINUX_IF_ETHER_H */ diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h index 529c401a9a86..29b6e104657e 100644 --- a/include/linux/if_vlan.h +++ b/include/linux/if_vlan.h @@ -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 + +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; }; diff --git a/include/linux/netfilter_bridge/ebt_802_3.h b/include/linux/netfilter_bridge/ebt_802_3.h index b3d6c3219075..b9f712c14a0a 100644 --- a/include/linux/netfilter_bridge/ebt_802_3.h +++ b/include/linux/netfilter_bridge/ebt_802_3.h @@ -49,6 +49,15 @@ struct ebt_802_3_hdr { } llc; }; +#ifdef __KERNEL__ +#include + +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; diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index b6c6ef59ab16..71fc2bdc0cd6 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -219,7 +219,6 @@ struct sk_buff { } nh; union { - struct ethhdr *ethernet; unsigned char *raw; } mac; diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c index 5e8e9460c85d..79b0262de543 100644 --- a/net/8021q/vlan_dev.c +++ b/net/8021q/vlan_dev.c @@ -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; } diff --git a/net/atm/br2684.c b/net/atm/br2684.c index 66778f43a3c1..f7955e643314 100644 --- a/net/atm/br2684.c +++ b/net/atm/br2684.c @@ -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) diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c index d18d7b8ba1e2..943d5ddc5f26 100644 --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c @@ -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)) diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c index 82fddd94ce3c..50e4df3559aa 100644 --- a/net/bridge/br_netfilter.c +++ b/net/bridge/br_netfilter.c @@ -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) { diff --git a/net/bridge/netfilter/ebt_802_3.c b/net/bridge/netfilter/ebt_802_3.c index 1db4434f9655..468ebdf4bc1c 100644 --- a/net/bridge/netfilter/ebt_802_3.c +++ b/net/bridge/netfilter/ebt_802_3.c @@ -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) { diff --git a/net/bridge/netfilter/ebt_among.c b/net/bridge/netfilter/ebt_among.c index 78aa491ceb90..5a1f5e3bff15 100644 --- a/net/bridge/netfilter/ebt_among.c +++ b/net/bridge/netfilter/ebt_among.c @@ -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)) { diff --git a/net/bridge/netfilter/ebt_dnat.c b/net/bridge/netfilter/ebt_dnat.c index f9552dfb1655..f5463086c7bd 100644 --- a/net/bridge/netfilter/ebt_dnat.c +++ b/net/bridge/netfilter/ebt_dnat.c @@ -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; } diff --git a/net/bridge/netfilter/ebt_log.c b/net/bridge/netfilter/ebt_log.c index 407dfdbaf688..8afd1bc69c33 100644 --- a/net/bridge/netfilter/ebt_log.c +++ b/net/bridge/netfilter/ebt_log.c @@ -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); diff --git a/net/bridge/netfilter/ebt_redirect.c b/net/bridge/netfilter/ebt_redirect.c index befbfa1e06a7..1538b4386662 100644 --- a/net/bridge/netfilter/ebt_redirect.c +++ b/net/bridge/netfilter/ebt_redirect.c @@ -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; } diff --git a/net/bridge/netfilter/ebt_snat.c b/net/bridge/netfilter/ebt_snat.c index ae0f0539c5f0..1529bdcb9a48 100644 --- a/net/bridge/netfilter/ebt_snat.c +++ b/net/bridge/netfilter/ebt_snat.c @@ -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; } diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c index 65184c5e6f6f..8352eec5bec4 100644 --- a/net/bridge/netfilter/ebtables.c +++ b/net/bridge/netfilter/ebtables.c @@ -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) diff --git a/net/core/dv.c b/net/core/dv.c index f8e3f9c6b282..05c76cb9c8fd 100644 --- a/net/core/dv.c +++ b/net/core/dv.c @@ -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; diff --git a/net/core/netpoll.c b/net/core/netpoll.c index 174a76d6c04d..cb3a03fb1acb 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -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) diff --git a/net/decnet/dn_neigh.c b/net/decnet/dn_neigh.c index 0691b11ccf2a..dc48de88b9b3 100644 --- a/net/decnet/dn_neigh.c +++ b/net/decnet/dn_neigh.c @@ -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, ð_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, ð_hdr(skb)->h_source, ETH_ALEN); dn->flags &= ~(DN_NDFLAG_R1 | DN_NDFLAG_R2); dn->blksize = dn_ntohs(msg->blksize); dn->priority = 0; diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c index 886e6ea62f3b..a238f92ec37c 100644 --- a/net/ethernet/eth.c +++ b/net/ethernet/eth.c @@ -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; } diff --git a/net/ipv4/netfilter/ipt_mac.c b/net/ipv4/netfilter/ipt_mac.c index 77109e046ef8..11a459e33f25 100644 --- a/net/ipv4/netfilter/ipt_mac.c +++ b/net/ipv4/netfilter/ipt_mac.c @@ -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)); } diff --git a/net/ipv6/netfilter/ip6t_eui64.c b/net/ipv6/netfilter/ip6t_eui64.c index b6199f25a763..3b1340d26b5e 100644 --- a/net/ipv6/netfilter/ip6t_eui64.c +++ b/net/ipv6/netfilter/ip6t_eui64.c @@ -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; diff --git a/net/ipv6/netfilter/ip6t_mac.c b/net/ipv6/netfilter/ip6t_mac.c index 4d184e4a98a4..ea874dd241dd 100644 --- a/net/ipv6/netfilter/ip6t_mac.c +++ b/net/ipv6/netfilter/ip6t_mac.c @@ -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)); } -- cgit v1.2.3 From 4b044800d73dfbe571e02b2e0e2a38cf6401c666 Mon Sep 17 00:00:00 2001 From: Arnaldo Carvalho de Melo Date: Tue, 5 Oct 2004 13:01:58 -0300 Subject: [BRIDGE] convert __constant_htons(constant) to htons Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller --- net/bridge/netfilter/ebt_arp.c | 4 ++-- net/bridge/netfilter/ebt_arpreply.c | 6 +++--- net/bridge/netfilter/ebt_ip.c | 2 +- net/bridge/netfilter/ebt_log.c | 2 +- net/bridge/netfilter/ebt_vlan.c | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/net/bridge/netfilter/ebt_arp.c b/net/bridge/netfilter/ebt_arp.c index e913cac50066..b94c48cb6e4b 100644 --- a/net/bridge/netfilter/ebt_arp.c +++ b/net/bridge/netfilter/ebt_arp.c @@ -108,8 +108,8 @@ static int ebt_arp_check(const char *tablename, unsigned int hookmask, if (datalen != EBT_ALIGN(sizeof(struct ebt_arp_info))) return -EINVAL; - if ((e->ethproto != __constant_htons(ETH_P_ARP) && - e->ethproto != __constant_htons(ETH_P_RARP)) || + if ((e->ethproto != htons(ETH_P_ARP) && + e->ethproto != htons(ETH_P_RARP)) || e->invflags & EBT_IPROTO) return -EINVAL; if (info->bitmask & ~EBT_ARP_MASK || info->invflags & ~EBT_ARP_MASK) diff --git a/net/bridge/netfilter/ebt_arpreply.c b/net/bridge/netfilter/ebt_arpreply.c index 95189f02fcc0..b934de90f7c5 100644 --- a/net/bridge/netfilter/ebt_arpreply.c +++ b/net/bridge/netfilter/ebt_arpreply.c @@ -29,9 +29,9 @@ static int ebt_target_reply(struct sk_buff **pskb, unsigned int hooknr, if (ap == NULL) return EBT_DROP; - if (ap->ar_op != __constant_htons(ARPOP_REQUEST) || + if (ap->ar_op != htons(ARPOP_REQUEST) || ap->ar_hln != ETH_ALEN || - ap->ar_pro != __constant_htons(ETH_P_IP) || + ap->ar_pro != htons(ETH_P_IP) || ap->ar_pln != 4) return EBT_CONTINUE; @@ -65,7 +65,7 @@ static int ebt_target_reply_check(const char *tablename, unsigned int hookmask, return -EINVAL; if (BASE_CHAIN && info->target == EBT_RETURN) return -EINVAL; - if (e->ethproto != __constant_htons(ETH_P_ARP) || + if (e->ethproto != htons(ETH_P_ARP) || e->invflags & EBT_IPROTO) return -EINVAL; CLEAR_BASE_CHAIN_BIT; diff --git a/net/bridge/netfilter/ebt_ip.c b/net/bridge/netfilter/ebt_ip.c index 0b2f19943dac..7323805b9726 100644 --- a/net/bridge/netfilter/ebt_ip.c +++ b/net/bridge/netfilter/ebt_ip.c @@ -80,7 +80,7 @@ static int ebt_ip_check(const char *tablename, unsigned int hookmask, if (datalen != EBT_ALIGN(sizeof(struct ebt_ip_info))) return -EINVAL; - if (e->ethproto != __constant_htons(ETH_P_IP) || + if (e->ethproto != htons(ETH_P_IP) || e->invflags & EBT_IPROTO) return -EINVAL; if (info->bitmask & ~EBT_IP_MASK || info->invflags & ~EBT_IP_MASK) diff --git a/net/bridge/netfilter/ebt_log.c b/net/bridge/netfilter/ebt_log.c index 8afd1bc69c33..6c022efaab80 100644 --- a/net/bridge/netfilter/ebt_log.c +++ b/net/bridge/netfilter/ebt_log.c @@ -121,7 +121,7 @@ static void ebt_log(const struct sk_buff *skb, const struct net_device *in, /* If it's for Ethernet and the lengths are OK, * then log the ARP payload */ - if (ah->ar_hrd == __constant_htons(1) && + if (ah->ar_hrd == htons(1) && ah->ar_hln == ETH_ALEN && ah->ar_pln == sizeof(uint32_t)) { struct arppayload _arpp, *ap; diff --git a/net/bridge/netfilter/ebt_vlan.c b/net/bridge/netfilter/ebt_vlan.c index da30941db2ef..db60d734908b 100644 --- a/net/bridge/netfilter/ebt_vlan.c +++ b/net/bridge/netfilter/ebt_vlan.c @@ -104,7 +104,7 @@ ebt_check_vlan(const char *tablename, } /* Is it 802.1Q frame checked? */ - if (e->ethproto != __constant_htons(ETH_P_8021Q)) { + if (e->ethproto != htons(ETH_P_8021Q)) { DEBUG_MSG ("passed entry proto %2.4X is not 802.1Q (8100)\n", (unsigned short) ntohs(e->ethproto)); -- cgit v1.2.3