Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 66746
b: refs/heads/master
c: b95cce3
h: refs/heads/master
v: v3
  • Loading branch information
Stephen Hemminger authored and David S. Miller committed Oct 10, 2007
1 parent 2af1840 commit 020125c
Show file tree
Hide file tree
Showing 12 changed files with 41 additions and 45 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0c4e85813d0a94eeb8bf813397a4907bdd7bb610
refs/heads/master: b95cce3576813ac3f86bafa6b5daaaaf7574b0fe
10 changes: 5 additions & 5 deletions trunk/drivers/ieee1394/eth1394.c
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,8 @@ static int ether1394_header(struct sk_buff *skb, struct net_device *dev,
unsigned short type, void *daddr, void *saddr,
unsigned len);
static int ether1394_rebuild_header(struct sk_buff *skb);
static int ether1394_header_parse(struct sk_buff *skb, unsigned char *haddr);
static int ether1394_header_parse(const struct sk_buff *skb,
unsigned char *haddr);
static int ether1394_header_cache(struct neighbour *neigh, struct hh_cache *hh);
static void ether1394_header_cache_update(struct hh_cache *hh,
struct net_device *dev,
Expand Down Expand Up @@ -751,11 +752,10 @@ static int ether1394_rebuild_header(struct sk_buff *skb)
return 0;
}

static int ether1394_header_parse(struct sk_buff *skb, unsigned char *haddr)
static int ether1394_header_parse(const struct sk_buff *skb,
unsigned char *haddr)
{
struct net_device *dev = skb->dev;

memcpy(haddr, dev->dev_addr, ETH1394_ALEN);
memcpy(haddr, skb->dev->dev_addr, ETH1394_ALEN);
return ETH1394_ALEN;
}

Expand Down
7 changes: 1 addition & 6 deletions trunk/drivers/net/wireless/airo.c
Original file line number Diff line number Diff line change
Expand Up @@ -2481,7 +2481,7 @@ void stop_airo_card( struct net_device *dev, int freeres )

EXPORT_SYMBOL(stop_airo_card);

static int wll_header_parse(struct sk_buff *skb, unsigned char *haddr)
static int wll_header_parse(const struct sk_buff *skb, unsigned char *haddr)
{
memcpy(haddr, skb_mac_header(skb) + 10, ETH_ALEN);
return ETH_ALEN;
Expand Down Expand Up @@ -2698,11 +2698,6 @@ static int mpi_map_card(struct airo_info *ai, struct pci_dev *pci)

static void wifi_setup(struct net_device *dev)
{
dev->hard_header = NULL;
dev->rebuild_header = NULL;
dev->hard_header_cache = NULL;
dev->header_cache_update= NULL;

dev->hard_header_parse = wll_header_parse;
dev->hard_start_xmit = &airo_start_xmit11;
dev->get_stats = &airo_get_stats;
Expand Down
6 changes: 3 additions & 3 deletions trunk/drivers/s390/net/qeth_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -6561,10 +6561,10 @@ static struct ethtool_ops qeth_ethtool_ops = {
};

static int
qeth_hard_header_parse(struct sk_buff *skb, unsigned char *haddr)
qeth_hard_header_parse(const struct sk_buff *skb, unsigned char *haddr)
{
struct qeth_card *card;
struct ethhdr *eth;
const struct qeth_card *card;
const struct ethhdr *eth;

card = qeth_get_card_from_dev(skb->dev);
if (card->options.layer2)
Expand Down
12 changes: 11 additions & 1 deletion trunk/include/linux/netdevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -657,7 +657,7 @@ struct net_device
void (*vlan_rx_kill_vid)(struct net_device *dev,
unsigned short vid);

int (*hard_header_parse)(struct sk_buff *skb,
int (*hard_header_parse)(const struct sk_buff *skb,
unsigned char *haddr);
int (*neigh_setup)(struct net_device *dev, struct neigh_parms *);
#ifdef CONFIG_NETPOLL
Expand Down Expand Up @@ -809,6 +809,16 @@ static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev,
return dev->hard_header(skb, dev, type, daddr, saddr, len);
}

static inline int dev_parse_header(const struct sk_buff *skb,
unsigned char *haddr)
{
const struct net_device *dev = skb->dev;

if (!dev->hard_header_parse)
return 0;
return dev->hard_header_parse(skb, haddr);
}

typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr, int len);
extern int register_gifconf(unsigned int family, gifconf_func_t * gifconf);
static inline int unregister_gifconf(unsigned int family)
Expand Down
4 changes: 2 additions & 2 deletions trunk/net/ethernet/eth.c
Original file line number Diff line number Diff line change
Expand Up @@ -207,9 +207,9 @@ EXPORT_SYMBOL(eth_type_trans);
* @skb: packet to extract header from
* @haddr: destination buffer
*/
static int eth_header_parse(struct sk_buff *skb, unsigned char *haddr)
static int eth_header_parse(const struct sk_buff *skb, unsigned char *haddr)
{
struct ethhdr *eth = eth_hdr(skb);
const struct ethhdr *eth = eth_hdr(skb);
memcpy(haddr, eth->h_source, ETH_ALEN);
return ETH_ALEN;
}
Expand Down
6 changes: 2 additions & 4 deletions trunk/net/ipv4/netfilter/ip_queue.c
Original file line number Diff line number Diff line change
Expand Up @@ -250,10 +250,8 @@ ipq_build_packet_message(struct ipq_queue_entry *entry, int *errp)

if (entry->info->indev && entry->skb->dev) {
pmsg->hw_type = entry->skb->dev->type;
if (entry->skb->dev->hard_header_parse)
pmsg->hw_addrlen =
entry->skb->dev->hard_header_parse(entry->skb,
pmsg->hw_addr);
pmsg->hw_addrlen = dev_parse_header(entry->skb,
pmsg->hw_addr);
}

if (data_len)
Expand Down
5 changes: 1 addition & 4 deletions trunk/net/ipv6/netfilter/ip6_queue.c
Original file line number Diff line number Diff line change
Expand Up @@ -248,10 +248,7 @@ ipq_build_packet_message(struct ipq_queue_entry *entry, int *errp)

if (entry->info->indev && entry->skb->dev) {
pmsg->hw_type = entry->skb->dev->type;
if (entry->skb->dev->hard_header_parse)
pmsg->hw_addrlen =
entry->skb->dev->hard_header_parse(entry->skb,
pmsg->hw_addr);
pmsg->hw_addrlen = dev_parse_header(entry->skb, pmsg->hw_addr);
}

if (data_len)
Expand Down
2 changes: 1 addition & 1 deletion trunk/net/mac80211/ieee80211.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ struct ieee80211_tx_status_rtap_hdr {

/* common interface routines */

static int header_parse_80211(struct sk_buff *skb, unsigned char *haddr)
static int header_parse_80211(const struct sk_buff *skb, unsigned char *haddr)
{
memcpy(haddr, skb_mac_header(skb) + 10, ETH_ALEN); /* addr2 */
return ETH_ALEN;
Expand Down
11 changes: 6 additions & 5 deletions trunk/net/netfilter/nfnetlink_log.c
Original file line number Diff line number Diff line change
Expand Up @@ -481,12 +481,13 @@ __build_packet_message(struct nfulnl_instance *inst,
NFA_PUT(inst->skb, NFULA_MARK, sizeof(tmp_uint), &tmp_uint);
}

if (indev && skb->dev && skb->dev->hard_header_parse) {
if (indev && skb->dev) {
struct nfulnl_msg_packet_hw phw;
int len = skb->dev->hard_header_parse((struct sk_buff *)skb,
phw.hw_addr);
phw.hw_addrlen = htons(len);
NFA_PUT(inst->skb, NFULA_HWADDR, sizeof(phw), &phw);
int len = dev_parse_header(skb, phw.hw_addr);
if (len > 0) {
phw.hw_addrlen = htons(len);
NFA_PUT(inst->skb, NFULA_HWADDR, sizeof(phw), &phw);
}
}

if (skb->tstamp.tv64) {
Expand Down
13 changes: 6 additions & 7 deletions trunk/net/netfilter/nfnetlink_queue.c
Original file line number Diff line number Diff line change
Expand Up @@ -485,14 +485,13 @@ nfqnl_build_packet_message(struct nfqnl_instance *queue,
NFA_PUT(skb, NFQA_MARK, sizeof(u_int32_t), &tmp_uint);
}

if (indev && entskb->dev
&& entskb->dev->hard_header_parse) {
if (indev && entskb->dev) {
struct nfqnl_msg_packet_hw phw;

int len = entskb->dev->hard_header_parse(entskb,
phw.hw_addr);
phw.hw_addrlen = htons(len);
NFA_PUT(skb, NFQA_HWADDR, sizeof(phw), &phw);
int len = dev_parse_header(entskb, phw.hw_addr);
if (len) {
phw.hw_addrlen = htons(len);
NFA_PUT(skb, NFQA_HWADDR, sizeof(phw), &phw);
}
}

if (entskb->tstamp.tv64) {
Expand Down
8 changes: 2 additions & 6 deletions trunk/net/packet/af_packet.c
Original file line number Diff line number Diff line change
Expand Up @@ -519,10 +519,8 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, struct packet
sll->sll_ifindex = orig_dev->ifindex;
else
sll->sll_ifindex = dev->ifindex;
sll->sll_halen = 0;

if (dev->hard_header_parse)
sll->sll_halen = dev->hard_header_parse(skb, sll->sll_addr);
sll->sll_halen = dev_parse_header(skb, sll->sll_addr);

PACKET_SKB_CB(skb)->origlen = skb->len;

Expand Down Expand Up @@ -658,9 +656,7 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev, struct packe
h->tp_usec = tv.tv_usec;

sll = (struct sockaddr_ll*)((u8*)h + TPACKET_ALIGN(sizeof(*h)));
sll->sll_halen = 0;
if (dev->hard_header_parse)
sll->sll_halen = dev->hard_header_parse(skb, sll->sll_addr);
sll->sll_halen = dev_parse_header(skb, sll->sll_addr);
sll->sll_family = AF_PACKET;
sll->sll_hatype = dev->type;
sll->sll_protocol = skb->protocol;
Expand Down

0 comments on commit 020125c

Please sign in to comment.