forked from Minki/linux
[SK_BUFF]: Introduce skb_mac_header()
For the places where we need a pointer to the mac header, it is still legal to touch skb->mac.raw directly if just adding to, subtracting from or setting it to another layer header. This one also converts some more cases to skb_reset_mac_header() that my regex missed as it had no spaces before nor after '=', ugh. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
31713c333d
commit
98e399f82a
@ -46,7 +46,7 @@ static int daemon_read(int fd, struct sk_buff **skb,
|
||||
{
|
||||
*skb = ether_adjust_skb(*skb, ETH_HEADER_OTHER);
|
||||
if(*skb == NULL) return(-ENOMEM);
|
||||
return(net_recvfrom(fd, (*skb)->mac.raw,
|
||||
return(net_recvfrom(fd, skb_mac_header(*skb),
|
||||
(*skb)->dev->mtu + ETH_HEADER_OTHER));
|
||||
}
|
||||
|
||||
|
@ -50,7 +50,7 @@ static int mcast_read(int fd, struct sk_buff **skb, struct uml_net_private *lp)
|
||||
{
|
||||
*skb = ether_adjust_skb(*skb, ETH_HEADER_OTHER);
|
||||
if(*skb == NULL) return(-ENOMEM);
|
||||
return(net_recvfrom(fd, (*skb)->mac.raw,
|
||||
return(net_recvfrom(fd, skb_mac_header(*skb),
|
||||
(*skb)->dev->mtu + ETH_HEADER_OTHER));
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,7 @@ static int pcap_read(int fd, struct sk_buff **skb,
|
||||
{
|
||||
*skb = ether_adjust_skb(*skb, ETH_HEADER_OTHER);
|
||||
if(*skb == NULL) return(-ENOMEM);
|
||||
return(pcap_user_read(fd, (*skb)->mac.raw,
|
||||
return(pcap_user_read(fd, skb_mac_header(*skb),
|
||||
(*skb)->dev->mtu + ETH_HEADER_OTHER,
|
||||
(struct pcap_data *) &lp->user));
|
||||
}
|
||||
|
@ -49,7 +49,7 @@ static unsigned short slip_protocol(struct sk_buff *skbuff)
|
||||
static int slip_read(int fd, struct sk_buff **skb,
|
||||
struct uml_net_private *lp)
|
||||
{
|
||||
return(slip_user_read(fd, (*skb)->mac.raw, (*skb)->dev->mtu,
|
||||
return(slip_user_read(fd, skb_mac_header(*skb), (*skb)->dev->mtu,
|
||||
(struct slip_data *) &lp->user));
|
||||
}
|
||||
|
||||
|
@ -53,7 +53,7 @@ static unsigned short slirp_protocol(struct sk_buff *skbuff)
|
||||
static int slirp_read(int fd, struct sk_buff **skb,
|
||||
struct uml_net_private *lp)
|
||||
{
|
||||
return(slirp_user_read(fd, (*skb)->mac.raw, (*skb)->dev->mtu,
|
||||
return(slirp_user_read(fd, skb_mac_header(*skb), (*skb)->dev->mtu,
|
||||
(struct slirp_data *) &lp->user));
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,7 @@ static int etap_read(int fd, struct sk_buff **skb, struct uml_net_private *lp)
|
||||
|
||||
*skb = ether_adjust_skb(*skb, ETH_HEADER_ETHERTAP);
|
||||
if(*skb == NULL) return(-ENOMEM);
|
||||
len = net_recvfrom(fd, (*skb)->mac.raw,
|
||||
len = net_recvfrom(fd, skb_mac_header(*skb),
|
||||
(*skb)->dev->mtu + 2 * ETH_HEADER_ETHERTAP);
|
||||
if(len <= 0) return(len);
|
||||
skb_pull(*skb, 2);
|
||||
|
@ -43,7 +43,7 @@ static int tuntap_read(int fd, struct sk_buff **skb,
|
||||
{
|
||||
*skb = ether_adjust_skb(*skb, ETH_HEADER_OTHER);
|
||||
if(*skb == NULL) return(-ENOMEM);
|
||||
return(net_read(fd, (*skb)->mac.raw,
|
||||
return(net_read(fd, skb_mac_header(*skb),
|
||||
(*skb)->dev->mtu + ETH_HEADER_OTHER));
|
||||
}
|
||||
|
||||
|
@ -53,7 +53,7 @@ struct aoe_hdr {
|
||||
|
||||
static inline struct aoe_hdr *aoe_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct aoe_hdr *)skb->mac.raw;
|
||||
return (struct aoe_hdr *)skb_mac_header(skb);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -90,7 +90,7 @@ struct eth1394hdr {
|
||||
|
||||
static inline struct eth1394hdr *eth1394_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct eth1394hdr *)skb->mac.raw;
|
||||
return (struct eth1394hdr *)skb_mac_header(skb);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -174,7 +174,7 @@ static unsigned short dvb_net_eth_type_trans(struct sk_buff *skb,
|
||||
struct ethhdr *eth;
|
||||
unsigned char *rawp;
|
||||
|
||||
skb->mac.raw=skb->data;
|
||||
skb_reset_mac_header(skb);
|
||||
skb_pull(skb,dev->hard_header_len);
|
||||
eth = eth_hdr(skb);
|
||||
|
||||
|
@ -714,6 +714,7 @@ mpt_lan_sdu_send (struct sk_buff *skb, struct net_device *dev)
|
||||
LANSendRequest_t *pSendReq;
|
||||
SGETransaction32_t *pTrans;
|
||||
SGESimple64_t *pSimple;
|
||||
const unsigned char *mac;
|
||||
dma_addr_t dma;
|
||||
unsigned long flags;
|
||||
int ctx;
|
||||
@ -784,6 +785,7 @@ mpt_lan_sdu_send (struct sk_buff *skb, struct net_device *dev)
|
||||
// IOC_AND_NETDEV_NAMES_s_s(dev),
|
||||
// ctx, skb, skb->data));
|
||||
|
||||
mac = skb_mac_header(skb);
|
||||
#ifdef QLOGIC_NAA_WORKAROUND
|
||||
{
|
||||
struct NAA_Hosed *nh;
|
||||
@ -793,12 +795,12 @@ mpt_lan_sdu_send (struct sk_buff *skb, struct net_device *dev)
|
||||
drops. */
|
||||
read_lock_irq(&bad_naa_lock);
|
||||
for (nh = mpt_bad_naa; nh != NULL; nh=nh->next) {
|
||||
if ((nh->ieee[0] == skb->mac.raw[0]) &&
|
||||
(nh->ieee[1] == skb->mac.raw[1]) &&
|
||||
(nh->ieee[2] == skb->mac.raw[2]) &&
|
||||
(nh->ieee[3] == skb->mac.raw[3]) &&
|
||||
(nh->ieee[4] == skb->mac.raw[4]) &&
|
||||
(nh->ieee[5] == skb->mac.raw[5])) {
|
||||
if ((nh->ieee[0] == mac[0]) &&
|
||||
(nh->ieee[1] == mac[1]) &&
|
||||
(nh->ieee[2] == mac[2]) &&
|
||||
(nh->ieee[3] == mac[3]) &&
|
||||
(nh->ieee[4] == mac[4]) &&
|
||||
(nh->ieee[5] == mac[5])) {
|
||||
cur_naa = nh->NAA;
|
||||
dlprintk ((KERN_INFO "mptlan/sdu_send: using NAA value "
|
||||
"= %04x.\n", cur_naa));
|
||||
@ -810,12 +812,12 @@ mpt_lan_sdu_send (struct sk_buff *skb, struct net_device *dev)
|
||||
#endif
|
||||
|
||||
pTrans->TransactionDetails[0] = cpu_to_le32((cur_naa << 16) |
|
||||
(skb->mac.raw[0] << 8) |
|
||||
(skb->mac.raw[1] << 0));
|
||||
pTrans->TransactionDetails[1] = cpu_to_le32((skb->mac.raw[2] << 24) |
|
||||
(skb->mac.raw[3] << 16) |
|
||||
(skb->mac.raw[4] << 8) |
|
||||
(skb->mac.raw[5] << 0));
|
||||
(mac[0] << 8) |
|
||||
(mac[1] << 0));
|
||||
pTrans->TransactionDetails[1] = cpu_to_le32((mac[2] << 24) |
|
||||
(mac[3] << 16) |
|
||||
(mac[4] << 8) |
|
||||
(mac[5] << 0));
|
||||
|
||||
pSimple = (SGESimple64_t *) &pTrans->TransactionDetails[2];
|
||||
|
||||
|
@ -123,7 +123,7 @@ static void rx(struct net_device *dev, int bufnum,
|
||||
skb_put(skb, length + ARC_HDR_SIZE + sizeof(int));
|
||||
skb->dev = dev;
|
||||
skb_reset_mac_header(skb);
|
||||
pkt = (struct archdr *)skb->mac.raw;
|
||||
pkt = (struct archdr *)skb_mac_header(skb);
|
||||
skb_pull(skb, ARC_HDR_SIZE);
|
||||
|
||||
/* up to sizeof(pkt->soft) has already been copied from the card */
|
||||
@ -269,7 +269,7 @@ static int ack_tx(struct net_device *dev, int acked)
|
||||
ackskb->dev = dev;
|
||||
|
||||
skb_reset_mac_header(ackskb);
|
||||
ackpkt = (struct archdr *)ackskb->mac.raw;
|
||||
ackpkt = (struct archdr *)skb_mac_header(ackskb);
|
||||
/* skb_pull(ackskb, ARC_HDR_SIZE); */
|
||||
|
||||
|
||||
|
@ -546,7 +546,7 @@ static __be16 plip_type_trans(struct sk_buff *skb, struct net_device *dev)
|
||||
struct ethhdr *eth;
|
||||
unsigned char *rawp;
|
||||
|
||||
skb->mac.raw=skb->data;
|
||||
skb_reset_mac_header(skb);
|
||||
skb_pull(skb,dev->hard_header_len);
|
||||
eth = eth_hdr(skb);
|
||||
|
||||
|
@ -363,7 +363,7 @@ sl_bump(struct slip *sl)
|
||||
}
|
||||
skb->dev = sl->dev;
|
||||
memcpy(skb_put(skb,count), sl->rbuff, count);
|
||||
skb->mac.raw=skb->data;
|
||||
skb_reset_mac_header(skb);
|
||||
skb->protocol=htons(ETH_P_IP);
|
||||
netif_rx(skb);
|
||||
sl->dev->last_rx = jiffies;
|
||||
|
@ -59,7 +59,7 @@ static void hostess_input(struct z8530_channel *c, struct sk_buff *skb)
|
||||
/* Drop the CRC - it's not a good idea to try and negotiate it ;) */
|
||||
skb_trim(skb, skb->len-2);
|
||||
skb->protocol=__constant_htons(ETH_P_WAN_PPP);
|
||||
skb->mac.raw=skb->data;
|
||||
skb_reset_mac_header(skb);
|
||||
skb->dev=c->netdevice;
|
||||
/*
|
||||
* Send it to the PPP layer. We don't have time to process
|
||||
|
@ -61,7 +61,7 @@ static void sealevel_input(struct z8530_channel *c, struct sk_buff *skb)
|
||||
/* Drop the CRC - it's not a good idea to try and negotiate it ;) */
|
||||
skb_trim(skb, skb->len-2);
|
||||
skb->protocol=htons(ETH_P_WAN_PPP);
|
||||
skb->mac.raw=skb->data;
|
||||
skb_reset_mac_header(skb);
|
||||
skb->dev=c->netdevice;
|
||||
/*
|
||||
* Send it to the PPP layer. We don't have time to process
|
||||
|
@ -227,7 +227,7 @@ static void sppp_input (struct net_device *dev, struct sk_buff *skb)
|
||||
unsigned long flags;
|
||||
|
||||
skb->dev=dev;
|
||||
skb->mac.raw=skb->data;
|
||||
skb_reset_mac_header(skb);
|
||||
|
||||
if (dev->flags & IFF_RUNNING)
|
||||
{
|
||||
|
@ -2444,7 +2444,7 @@ static int add_airo_dev( struct net_device *dev );
|
||||
|
||||
static int wll_header_parse(struct sk_buff *skb, unsigned char *haddr)
|
||||
{
|
||||
memcpy(haddr, skb->mac.raw + 10, ETH_ALEN);
|
||||
memcpy(haddr, skb_mac_header(skb) + 10, ETH_ALEN);
|
||||
return ETH_ALEN;
|
||||
}
|
||||
|
||||
|
@ -590,20 +590,20 @@ void hostap_dump_tx_header(const char *name, const struct hfa384x_tx_frame *tx)
|
||||
|
||||
int hostap_80211_header_parse(struct sk_buff *skb, unsigned char *haddr)
|
||||
{
|
||||
memcpy(haddr, skb->mac.raw + 10, ETH_ALEN); /* addr2 */
|
||||
memcpy(haddr, skb_mac_header(skb) + 10, ETH_ALEN); /* addr2 */
|
||||
return ETH_ALEN;
|
||||
}
|
||||
|
||||
|
||||
int hostap_80211_prism_header_parse(struct sk_buff *skb, unsigned char *haddr)
|
||||
{
|
||||
if (*(u32 *)skb->mac.raw == LWNG_CAP_DID_BASE) {
|
||||
memcpy(haddr, skb->mac.raw +
|
||||
sizeof(struct linux_wlan_ng_prism_hdr) + 10,
|
||||
const unsigned char *mac = skb_mac_header(skb);
|
||||
|
||||
if (*(u32 *)mac == LWNG_CAP_DID_BASE) {
|
||||
memcpy(haddr, mac + sizeof(struct linux_wlan_ng_prism_hdr) + 10,
|
||||
ETH_ALEN); /* addr2 */
|
||||
} else { /* (*(u32 *)skb->mac.raw == htonl(LWNG_CAPHDR_VERSION)) */
|
||||
memcpy(haddr, skb->mac.raw +
|
||||
sizeof(struct linux_wlan_ng_cap_hdr) + 10,
|
||||
} else { /* (*(u32 *)mac == htonl(LWNG_CAPHDR_VERSION)) */
|
||||
memcpy(haddr, mac + sizeof(struct linux_wlan_ng_cap_hdr) + 10,
|
||||
ETH_ALEN); /* addr2 */
|
||||
}
|
||||
return ETH_ALEN;
|
||||
|
@ -689,7 +689,7 @@ static void orinoco_stat_gather(struct net_device *dev,
|
||||
/* Note : gcc will optimise the whole section away if
|
||||
* WIRELESS_SPY is not defined... - Jean II */
|
||||
if (SPY_NUMBER(priv)) {
|
||||
orinoco_spy_gather(dev, skb->mac.raw + ETH_ALEN,
|
||||
orinoco_spy_gather(dev, skb_mac_header(skb) + ETH_ALEN,
|
||||
desc->signal, desc->silence);
|
||||
}
|
||||
}
|
||||
|
@ -2517,7 +2517,8 @@ wv_packet_read(struct net_device * dev, u16 buf_off, int sksize)
|
||||
skb->protocol = eth_type_trans(skb, dev);
|
||||
|
||||
#ifdef DEBUG_RX_INFO
|
||||
wv_packet_info(skb->mac.raw, sksize, dev->name, "wv_packet_read");
|
||||
wv_packet_info(skb_mac_header(skb), sksize, dev->name,
|
||||
"wv_packet_read");
|
||||
#endif /* DEBUG_RX_INFO */
|
||||
|
||||
/* Statistics-gathering and associated stuff.
|
||||
@ -2553,7 +2554,7 @@ wv_packet_read(struct net_device * dev, u16 buf_off, int sksize)
|
||||
|
||||
/* Spying stuff */
|
||||
#ifdef IW_WIRELESS_SPY
|
||||
wl_spy_gather(dev, skb->mac.raw + WAVELAN_ADDR_SIZE,
|
||||
wl_spy_gather(dev, skb_mac_header(skb) + WAVELAN_ADDR_SIZE,
|
||||
stats);
|
||||
#endif /* IW_WIRELESS_SPY */
|
||||
#ifdef HISTOGRAM
|
||||
|
@ -2889,7 +2889,7 @@ wv_packet_read(struct net_device * dev,
|
||||
skb->protocol = eth_type_trans(skb, dev);
|
||||
|
||||
#ifdef DEBUG_RX_INFO
|
||||
wv_packet_info(skb->mac.raw, sksize, dev->name, "wv_packet_read");
|
||||
wv_packet_info(skb_mac_header(skb), sksize, dev->name, "wv_packet_read");
|
||||
#endif /* DEBUG_RX_INFO */
|
||||
|
||||
/* Statistics gathering & stuff associated.
|
||||
@ -2923,7 +2923,7 @@ wv_packet_read(struct net_device * dev,
|
||||
#endif /* WAVELAN_ROAMING */
|
||||
|
||||
#ifdef WIRELESS_SPY
|
||||
wl_spy_gather(dev, skb->mac.raw + WAVELAN_ADDR_SIZE, stats);
|
||||
wl_spy_gather(dev, skb_mac_header(skb) + WAVELAN_ADDR_SIZE, stats);
|
||||
#endif /* WIRELESS_SPY */
|
||||
#ifdef HISTOGRAM
|
||||
wl_his_gather(dev, stats);
|
||||
|
@ -3525,8 +3525,8 @@ unpack_next:
|
||||
memcpy(skb_put(skb,len_of_data),
|
||||
privptr->p_mtc_envelope,
|
||||
len_of_data);
|
||||
skb->mac.raw=skb->data;
|
||||
skb->dev=dev;
|
||||
skb_reset_mac_header(skb);
|
||||
skb->protocol=htons(ETH_P_IP);
|
||||
skb->ip_summed=CHECKSUM_UNNECESSARY;
|
||||
privptr->stats.rx_packets++;
|
||||
|
@ -112,7 +112,7 @@ struct ethhdr {
|
||||
|
||||
static inline struct ethhdr *eth_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct ethhdr *)skb->mac.raw;
|
||||
return (struct ethhdr *)skb_mac_header(skb);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
|
@ -47,7 +47,7 @@ struct trh_hdr {
|
||||
|
||||
static inline struct trh_hdr *tr_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct trh_hdr *)skb->mac.raw;
|
||||
return (struct trh_hdr *)skb_mac_header(skb);
|
||||
}
|
||||
#ifdef CONFIG_SYSCTL
|
||||
extern struct ctl_table tr_table[];
|
||||
|
@ -51,7 +51,7 @@ struct vlan_ethhdr {
|
||||
|
||||
static inline struct vlan_ethhdr *vlan_eth_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct vlan_ethhdr *)skb->mac.raw;
|
||||
return (struct vlan_ethhdr *)skb_mac_header(skb);
|
||||
}
|
||||
|
||||
struct vlan_hdr {
|
||||
|
@ -54,7 +54,7 @@ struct ebt_802_3_hdr {
|
||||
|
||||
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;
|
||||
return (struct ebt_802_3_hdr *)skb_mac_header(skb);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -960,6 +960,16 @@ static inline void skb_reserve(struct sk_buff *skb, int len)
|
||||
skb->tail += len;
|
||||
}
|
||||
|
||||
static inline unsigned char *skb_mac_header(const struct sk_buff *skb)
|
||||
{
|
||||
return skb->mac.raw;
|
||||
}
|
||||
|
||||
static inline int skb_mac_header_was_set(const struct sk_buff *skb)
|
||||
{
|
||||
return skb->mac.raw != NULL;
|
||||
}
|
||||
|
||||
static inline void skb_reset_mac_header(struct sk_buff *skb)
|
||||
{
|
||||
skb->mac.raw = skb->data;
|
||||
|
@ -132,7 +132,7 @@ __be16 hippi_type_trans(struct sk_buff *skb, struct net_device *dev)
|
||||
*/
|
||||
skb->dev = dev;
|
||||
skb_reset_mac_header(skb);
|
||||
hip = (struct hippi_hdr *)skb->mac.raw;
|
||||
hip = (struct hippi_hdr *)skb_mac_header(skb);
|
||||
skb_pull(skb, HIPPI_HLEN);
|
||||
|
||||
/*
|
||||
|
@ -1484,7 +1484,7 @@ static int ltalk_rcv(struct sk_buff *skb, struct net_device *dev,
|
||||
struct packet_type *pt, struct net_device *orig_dev)
|
||||
{
|
||||
/* Expand any short form frames */
|
||||
if (skb->mac.raw[2] == 1) {
|
||||
if (skb_mac_header(skb)[2] == 1) {
|
||||
struct ddpehdr *ddp;
|
||||
/* Find our address */
|
||||
struct atalk_addr *ap = atalk_find_dev_addr(dev);
|
||||
@ -1510,8 +1510,8 @@ static int ltalk_rcv(struct sk_buff *skb, struct net_device *dev,
|
||||
* we write the network numbers !
|
||||
*/
|
||||
|
||||
ddp->deh_dnode = skb->mac.raw[0]; /* From physical header */
|
||||
ddp->deh_snode = skb->mac.raw[1]; /* From physical header */
|
||||
ddp->deh_dnode = skb_mac_header(skb)[0]; /* From physical header */
|
||||
ddp->deh_snode = skb_mac_header(skb)[1]; /* From physical header */
|
||||
|
||||
ddp->deh_dnet = ap->s_net; /* Network number */
|
||||
ddp->deh_snet = ap->s_net;
|
||||
|
@ -1645,9 +1645,10 @@ static int ax25_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
struct sockaddr_ax25 *sax = (struct sockaddr_ax25 *)msg->msg_name;
|
||||
ax25_digi digi;
|
||||
ax25_address src;
|
||||
const unsigned char *mac = skb_mac_header(skb);
|
||||
|
||||
ax25_addr_parse(skb->mac.raw+1, skb->data-skb->mac.raw-1, &src, NULL, &digi, NULL, NULL);
|
||||
|
||||
ax25_addr_parse(mac + 1, skb->data - mac - 1, &src, NULL,
|
||||
&digi, NULL, NULL);
|
||||
sax->sax25_family = AF_AX25;
|
||||
/* We set this correctly, even though we may not let the
|
||||
application know the digi calls further down (because it
|
||||
|
@ -364,17 +364,20 @@ static inline int bnep_rx_frame(struct bnep_session *s, struct sk_buff *skb)
|
||||
|
||||
case BNEP_COMPRESSED_SRC_ONLY:
|
||||
memcpy(__skb_put(nskb, ETH_ALEN), s->eh.h_dest, ETH_ALEN);
|
||||
memcpy(__skb_put(nskb, ETH_ALEN), skb->mac.raw, ETH_ALEN);
|
||||
memcpy(__skb_put(nskb, ETH_ALEN), skb_mac_header(skb), ETH_ALEN);
|
||||
put_unaligned(s->eh.h_proto, (__be16 *) __skb_put(nskb, 2));
|
||||
break;
|
||||
|
||||
case BNEP_COMPRESSED_DST_ONLY:
|
||||
memcpy(__skb_put(nskb, ETH_ALEN), skb->mac.raw, ETH_ALEN);
|
||||
memcpy(__skb_put(nskb, ETH_ALEN + 2), s->eh.h_source, ETH_ALEN + 2);
|
||||
memcpy(__skb_put(nskb, ETH_ALEN), skb_mac_header(skb),
|
||||
ETH_ALEN);
|
||||
memcpy(__skb_put(nskb, ETH_ALEN + 2), s->eh.h_source,
|
||||
ETH_ALEN + 2);
|
||||
break;
|
||||
|
||||
case BNEP_GENERAL:
|
||||
memcpy(__skb_put(nskb, ETH_ALEN * 2), skb->mac.raw, ETH_ALEN * 2);
|
||||
memcpy(__skb_put(nskb, ETH_ALEN * 2), skb_mac_header(skb),
|
||||
ETH_ALEN * 2);
|
||||
put_unaligned(s->eh.h_proto, (__be16 *) __skb_put(nskb, 2));
|
||||
break;
|
||||
}
|
||||
|
@ -753,7 +753,8 @@ static unsigned int br_nf_post_routing(unsigned int hook, struct sk_buff **pskb,
|
||||
#ifdef CONFIG_NETFILTER_DEBUG
|
||||
/* Be very paranoid. This probably won't happen anymore, but let's
|
||||
* keep the check just to be sure... */
|
||||
if (skb->mac.raw < skb->head || skb->mac.raw + ETH_HLEN > skb->data) {
|
||||
if (skb_mac_header(skb) < skb->head ||
|
||||
skb_mac_header(skb) + ETH_HLEN > skb->data) {
|
||||
printk(KERN_CRIT "br_netfilter: Argh!! br_nf_post_routing: "
|
||||
"bad mac.raw pointer.\n");
|
||||
goto print_error;
|
||||
@ -808,7 +809,7 @@ print_error:
|
||||
if (realoutdev)
|
||||
printk("[%s]", realoutdev->name);
|
||||
}
|
||||
printk(" head:%p, raw:%p, data:%p\n", skb->head, skb->mac.raw,
|
||||
printk(" head:%p, raw:%p, data:%p\n", skb->head, skb_mac_header(skb),
|
||||
skb->data);
|
||||
dump_stack();
|
||||
return NF_ACCEPT;
|
||||
|
@ -1232,7 +1232,7 @@ struct sk_buff *skb_gso_segment(struct sk_buff *skb, int features)
|
||||
}
|
||||
rcu_read_unlock();
|
||||
|
||||
__skb_push(skb, skb->data - skb->mac.raw);
|
||||
__skb_push(skb, skb->data - skb_mac_header(skb));
|
||||
|
||||
return segs;
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ static void *__load_pointer(struct sk_buff *skb, int k)
|
||||
if (k >= SKF_NET_OFF)
|
||||
ptr = skb->nh.raw + k - SKF_NET_OFF;
|
||||
else if (k >= SKF_LL_OFF)
|
||||
ptr = skb->mac.raw + k - SKF_LL_OFF;
|
||||
ptr = skb_mac_header(skb) + k - SKF_LL_OFF;
|
||||
|
||||
if (ptr >= skb->head && ptr < skb->tail)
|
||||
return ptr;
|
||||
|
@ -1878,7 +1878,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, int features)
|
||||
struct sk_buff *segs = NULL;
|
||||
struct sk_buff *tail = NULL;
|
||||
unsigned int mss = skb_shinfo(skb)->gso_size;
|
||||
unsigned int doffset = skb->data - skb->mac.raw;
|
||||
unsigned int doffset = skb->data - skb_mac_header(skb);
|
||||
unsigned int offset = doffset;
|
||||
unsigned int headroom;
|
||||
unsigned int len;
|
||||
|
@ -399,9 +399,9 @@ ipt_log_packet(unsigned int pf,
|
||||
/* MAC logging for input chain only. */
|
||||
printk("MAC=");
|
||||
if (skb->dev && skb->dev->hard_header_len
|
||||
&& skb->mac.raw != (void*)skb->nh.iph) {
|
||||
&& skb->mac.raw != skb->nh.raw) {
|
||||
int i;
|
||||
unsigned char *p = skb->mac.raw;
|
||||
const unsigned char *p = skb_mac_header(skb);
|
||||
for (i = 0; i < skb->dev->hard_header_len; i++,p++)
|
||||
printk("%02x%c", *p,
|
||||
i==skb->dev->hard_header_len - 1
|
||||
|
@ -251,9 +251,9 @@ static void ipt_ulog_packet(unsigned int hooknum,
|
||||
*(pm->prefix) = '\0';
|
||||
|
||||
if (in && in->hard_header_len > 0
|
||||
&& skb->mac.raw != (void *) skb->nh.iph
|
||||
&& skb->mac.raw != skb->nh.raw
|
||||
&& in->hard_header_len <= ULOG_MAC_LEN) {
|
||||
memcpy(pm->mac, skb->mac.raw, in->hard_header_len);
|
||||
memcpy(pm->mac, skb_mac_header(skb), in->hard_header_len);
|
||||
pm->mac_len = in->hard_header_len;
|
||||
} else
|
||||
pm->mac_len = 0;
|
||||
|
@ -1698,9 +1698,9 @@ static void ip_handle_martian_source(struct net_device *dev,
|
||||
printk(KERN_WARNING "martian source %u.%u.%u.%u from "
|
||||
"%u.%u.%u.%u, on dev %s\n",
|
||||
NIPQUAD(daddr), NIPQUAD(saddr), dev->name);
|
||||
if (dev->hard_header_len && skb->mac.raw) {
|
||||
if (dev->hard_header_len && skb_mac_header_was_set(skb)) {
|
||||
int i;
|
||||
unsigned char *p = skb->mac.raw;
|
||||
const unsigned char *p = skb_mac_header(skb);
|
||||
printk(KERN_WARNING "ll header: ");
|
||||
for (i = 0; i < dev->hard_header_len; i++, p++) {
|
||||
printk("%02x", *p);
|
||||
|
@ -3633,7 +3633,7 @@ tcp_collapse(struct sock *sk, struct sk_buff_head *list,
|
||||
if (!nskb)
|
||||
return;
|
||||
|
||||
skb_set_mac_header(nskb, skb->mac.raw - skb->head);
|
||||
skb_set_mac_header(nskb, skb_mac_header(skb) - skb->head);
|
||||
nskb->nh.raw = nskb->data + (skb->nh.raw - skb->head);
|
||||
nskb->h.raw = nskb->data + (skb->h.raw - skb->head);
|
||||
|
||||
|
@ -126,9 +126,9 @@ static int xfrm4_tunnel_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
skb->protocol = htons(ETH_P_IPV6);
|
||||
}
|
||||
#endif
|
||||
old_mac = skb->mac.raw;
|
||||
old_mac = skb_mac_header(skb);
|
||||
skb_set_mac_header(skb, -skb->mac_len);
|
||||
memmove(skb->mac.raw, old_mac, skb->mac_len);
|
||||
memmove(skb_mac_header(skb), old_mac, skb->mac_len);
|
||||
skb->nh.raw = skb->data;
|
||||
err = 0;
|
||||
|
||||
|
@ -828,7 +828,8 @@ static void ndisc_recv_ns(struct sk_buff *skb)
|
||||
if (ifp->flags & (IFA_F_TENTATIVE|IFA_F_OPTIMISTIC)) {
|
||||
if (dad) {
|
||||
if (dev->type == ARPHRD_IEEE802_TR) {
|
||||
unsigned char *sadr = skb->mac.raw;
|
||||
const unsigned char *sadr;
|
||||
sadr = skb_mac_header(skb);
|
||||
if (((sadr[8] ^ dev->dev_addr[0]) & 0x7f) == 0 &&
|
||||
sadr[9] == dev->dev_addr[1] &&
|
||||
sadr[10] == dev->dev_addr[2] &&
|
||||
|
@ -397,7 +397,7 @@ ip6t_log_packet(unsigned int pf,
|
||||
printk("MAC=");
|
||||
if (skb->dev && (len = skb->dev->hard_header_len) &&
|
||||
skb->mac.raw != skb->nh.raw) {
|
||||
unsigned char *p = skb->mac.raw;
|
||||
const unsigned char *p = skb_mac_header(skb);
|
||||
int i;
|
||||
|
||||
if (skb->dev->type == ARPHRD_SIT &&
|
||||
@ -412,7 +412,8 @@ ip6t_log_packet(unsigned int pf,
|
||||
printk(" ");
|
||||
|
||||
if (skb->dev->type == ARPHRD_SIT) {
|
||||
struct iphdr *iph = (struct iphdr *)skb->mac.raw;
|
||||
const struct iphdr *iph =
|
||||
(struct iphdr *)skb_mac_header(skb);
|
||||
printk("TUNNEL=%u.%u.%u.%u->%u.%u.%u.%u ",
|
||||
NIPQUAD(iph->saddr),
|
||||
NIPQUAD(iph->daddr));
|
||||
|
@ -32,8 +32,8 @@ match(const struct sk_buff *skb,
|
||||
unsigned char eui64[8];
|
||||
int i = 0;
|
||||
|
||||
if (!(skb->mac.raw >= skb->head &&
|
||||
(skb->mac.raw + ETH_HLEN) <= skb->data) &&
|
||||
if (!(skb_mac_header(skb) >= skb->head &&
|
||||
(skb_mac_header(skb) + ETH_HLEN) <= skb->data) &&
|
||||
offset != 0) {
|
||||
*hotdrop = 1;
|
||||
return 0;
|
||||
|
@ -70,9 +70,9 @@ static int xfrm6_beet_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
memmove(skb->data, skb->nh.raw, size);
|
||||
skb->nh.raw = skb->data;
|
||||
|
||||
old_mac = skb->mac.raw;
|
||||
old_mac = skb_mac_header(skb);
|
||||
skb_set_mac_header(skb, -skb->mac_len);
|
||||
memmove(skb->mac.raw, old_mac, skb->mac_len);
|
||||
memmove(skb_mac_header(skb), old_mac, skb->mac_len);
|
||||
|
||||
ip6h = skb->nh.ipv6h;
|
||||
ip6h->payload_len = htons(skb->len - size);
|
||||
|
@ -108,9 +108,9 @@ static int xfrm6_tunnel_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
ip6ip_ecn_decapsulate(skb);
|
||||
skb->protocol = htons(ETH_P_IP);
|
||||
}
|
||||
old_mac = skb->mac.raw;
|
||||
old_mac = skb_mac_header(skb);
|
||||
skb_set_mac_header(skb, -skb->mac_len);
|
||||
memmove(skb->mac.raw, old_mac, skb->mac_len);
|
||||
memmove(skb_mac_header(skb), old_mac, skb->mac_len);
|
||||
skb->nh.raw = skb->data;
|
||||
err = 0;
|
||||
|
||||
|
@ -37,8 +37,8 @@ match(const struct sk_buff *skb,
|
||||
const struct xt_mac_info *info = matchinfo;
|
||||
|
||||
/* Is mac pointer valid? */
|
||||
return (skb->mac.raw >= skb->head
|
||||
&& (skb->mac.raw + ETH_HLEN) <= skb->data
|
||||
return (skb_mac_header(skb) >= skb->head &&
|
||||
(skb_mac_header(skb) + ETH_HLEN) <= skb->data
|
||||
/* If so, compare... */
|
||||
&& ((!compare_ether_addr(eth_hdr(skb)->h_source, info->srcaddr))
|
||||
^ info->invert));
|
||||
|
@ -284,7 +284,7 @@ static int packet_rcv_spkt(struct sk_buff *skb, struct net_device *dev, struct
|
||||
* Incoming packets have ll header pulled,
|
||||
* push it back.
|
||||
*
|
||||
* For outgoing ones skb->data == skb->mac.raw
|
||||
* For outgoing ones skb->data == skb_mac_header(skb)
|
||||
* so that this procedure is noop.
|
||||
*/
|
||||
|
||||
@ -303,7 +303,7 @@ static int packet_rcv_spkt(struct sk_buff *skb, struct net_device *dev, struct
|
||||
|
||||
spkt = &PACKET_SKB_CB(skb)->sa.pkt;
|
||||
|
||||
skb_push(skb, skb->data-skb->mac.raw);
|
||||
skb_push(skb, skb->data - skb_mac_header(skb));
|
||||
|
||||
/*
|
||||
* The SOCK_PACKET socket receives _all_ frames.
|
||||
@ -488,7 +488,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, struct packet
|
||||
never delivered to user.
|
||||
*/
|
||||
if (sk->sk_type != SOCK_DGRAM)
|
||||
skb_push(skb, skb->data - skb->mac.raw);
|
||||
skb_push(skb, skb->data - skb_mac_header(skb));
|
||||
else if (skb->pkt_type == PACKET_OUTGOING) {
|
||||
/* Special case: outgoing packets have ll header at head */
|
||||
skb_pull(skb, skb->nh.raw - skb->data);
|
||||
@ -592,7 +592,7 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev, struct packe
|
||||
|
||||
if (dev->hard_header) {
|
||||
if (sk->sk_type != SOCK_DGRAM)
|
||||
skb_push(skb, skb->data - skb->mac.raw);
|
||||
skb_push(skb, skb->data - skb_mac_header(skb));
|
||||
else if (skb->pkt_type == PACKET_OUTGOING) {
|
||||
/* Special case: outgoing packets have ll header at head */
|
||||
skb_pull(skb, skb->nh.raw - skb->data);
|
||||
|
@ -99,8 +99,8 @@ static int recv_msg(struct sk_buff *buf, struct net_device *dev,
|
||||
|
||||
if (likely(eb_ptr->bearer)) {
|
||||
if (likely(!dev->promiscuity) ||
|
||||
!memcmp(buf->mac.raw,dev->dev_addr,ETH_ALEN) ||
|
||||
!memcmp(buf->mac.raw,dev->broadcast,ETH_ALEN)) {
|
||||
!memcmp(skb_mac_header(buf), dev->dev_addr, ETH_ALEN) ||
|
||||
!memcmp(skb_mac_header(buf), dev->broadcast, ETH_ALEN)) {
|
||||
size = msg_size((struct tipc_msg *)buf->data);
|
||||
skb_trim(buf, size);
|
||||
if (likely(buf->len == size)) {
|
||||
|
Loading…
Reference in New Issue
Block a user