diff options
| author | David S. Miller <davem@nuts.davemloft.net> | 2004-10-06 22:00:21 -0700 |
|---|---|---|
| committer | David S. Miller <davem@nuts.davemloft.net> | 2004-10-06 22:00:21 -0700 |
| commit | aa59d2c8a6dc8c90e305b72687559e6829e43388 (patch) | |
| tree | 541eb8260e14f7306b02556ec651b29c39e190f3 | |
| parent | c57512a686eb60b4f246bcbf98287557ef0dd227 (diff) | |
| parent | 95e8c633258cc9943f168e4f676bdf68e6e25073 (diff) | |
Merge nuts.davemloft.net:/disk1/BK/acme-2.6
into nuts.davemloft.net:/disk1/BK/net-2.6
| -rw-r--r-- | drivers/ieee1394/eth1394.c | 2 | ||||
| -rw-r--r-- | drivers/ieee1394/eth1394.h | 7 | ||||
| -rw-r--r-- | drivers/net/hamradio/bpqether.c | 2 | ||||
| -rw-r--r-- | include/linux/if_tr.h | 9 | ||||
| -rw-r--r-- | include/net/llc_pdu.h | 10 | ||||
| -rw-r--r-- | net/llc/llc_input.c | 2 | ||||
| -rw-r--r-- | net/llc/llc_output.c | 7 |
7 files changed, 28 insertions, 11 deletions
diff --git a/drivers/ieee1394/eth1394.c b/drivers/ieee1394/eth1394.c index 1bea49f55992..798537f68bbe 100644 --- a/drivers/ieee1394/eth1394.c +++ b/drivers/ieee1394/eth1394.c @@ -850,7 +850,7 @@ static inline u16 ether1394_type_trans(struct sk_buff *skb, skb->mac.raw = skb->data; skb_pull (skb, ETH1394_HLEN); - eth = (struct eth1394hdr*)skb->mac.raw; + eth = eth1394_hdr(skb); if (*eth->h_dest & 1) { if (memcmp(eth->h_dest, dev->broadcast, dev->addr_len)==0) diff --git a/drivers/ieee1394/eth1394.h b/drivers/ieee1394/eth1394.h index 015f8178cc02..ed8f1c4b7fd8 100644 --- a/drivers/ieee1394/eth1394.h +++ b/drivers/ieee1394/eth1394.h @@ -81,7 +81,14 @@ struct eth1394hdr { unsigned short h_proto; /* packet type ID field */ } __attribute__((packed)); +#ifdef __KERNEL__ +#include <linux/skbuff.h> +static inline struct eth1394hdr *eth1394_hdr(const struct sk_buff *skb) +{ + return (struct eth1394hdr *)skb->mac.raw; +} +#endif typedef enum {ETH1394_GASP, ETH1394_WRREQ} eth1394_tx_type; diff --git a/drivers/net/hamradio/bpqether.c b/drivers/net/hamradio/bpqether.c index 6b85ab3c97af..803d5a13715a 100644 --- a/drivers/net/hamradio/bpqether.c +++ b/drivers/net/hamradio/bpqether.c @@ -193,7 +193,7 @@ static int bpq_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_ty bpq = (struct bpqdev *)dev->priv; - eth = (struct ethhdr *)skb->mac.raw; + eth = eth_hdr(skb); if (!(bpq->acpt_addr[0] & 0x01) && memcmp(eth->h_source, bpq->acpt_addr, ETH_ALEN)) diff --git a/include/linux/if_tr.h b/include/linux/if_tr.h index f7c97eeb95c8..4fd451f81ccb 100644 --- a/include/linux/if_tr.h +++ b/include/linux/if_tr.h @@ -48,6 +48,15 @@ struct trh_hdr { __u16 rseg[8]; /* routing registers */ }; +#ifdef __KERNEL__ +#include <linux/skbuff.h> + +static inline struct trh_hdr *tr_hdr(const struct sk_buff *skb) +{ + return (struct trh_hdr *)skb->mac.raw; +} +#endif + /* This is an Token-Ring LLC structure */ struct trllc { __u8 dsap; /* destination SAP */ diff --git a/include/net/llc_pdu.h b/include/net/llc_pdu.h index 644f9edc2bae..cbbfc373447d 100644 --- a/include/net/llc_pdu.h +++ b/include/net/llc_pdu.h @@ -253,9 +253,9 @@ static inline void llc_pdu_header_init(struct sk_buff *skb, u8 type, static inline void llc_pdu_decode_sa(struct sk_buff *skb, u8 *sa) { if (skb->protocol == ntohs(ETH_P_802_2)) - memcpy(sa, ((struct ethhdr *)skb->mac.raw)->h_source, ETH_ALEN); + memcpy(sa, eth_hdr(skb)->h_source, ETH_ALEN); else if (skb->protocol == ntohs(ETH_P_TR_802_2)) - memcpy(sa, ((struct trh_hdr *)skb->mac.raw)->saddr, ETH_ALEN); + memcpy(sa, tr_hdr(skb)->saddr, ETH_ALEN); } /** @@ -268,9 +268,9 @@ static inline void llc_pdu_decode_sa(struct sk_buff *skb, u8 *sa) static inline void llc_pdu_decode_da(struct sk_buff *skb, u8 *da) { if (skb->protocol == ntohs(ETH_P_802_2)) - memcpy(da, ((struct ethhdr *)skb->mac.raw)->h_dest, ETH_ALEN); + memcpy(da, eth_hdr(skb)->h_dest, ETH_ALEN); else if (skb->protocol == ntohs(ETH_P_TR_802_2)) - memcpy(da, ((struct trh_hdr *)skb->mac.raw)->daddr, ETH_ALEN); + memcpy(da, tr_hdr(skb)->daddr, ETH_ALEN); } /** @@ -347,7 +347,7 @@ static inline void llc_pdu_init_as_test_rsp(struct sk_buff *skb, struct llc_pdu_un *ev_pdu = llc_pdu_un_hdr(ev_skb); int dsize; - dsize = ntohs(((struct ethhdr *)ev_skb->mac.raw)->h_proto) - 3; + dsize = ntohs(eth_hdr(ev_skb)->h_proto) - 3; memcpy(((u8 *)pdu) + 3, ((u8 *)ev_pdu) + 3, dsize); skb_put(skb, dsize); } diff --git a/net/llc/llc_input.c b/net/llc/llc_input.c index ecfa9b5670bc..4da6976efc9c 100644 --- a/net/llc/llc_input.c +++ b/net/llc/llc_input.c @@ -111,7 +111,7 @@ static inline int llc_fixup_skb(struct sk_buff *skb) skb->h.raw += llc_len; skb_pull(skb, llc_len); if (skb->protocol == htons(ETH_P_802_2)) { - u16 pdulen = ((struct ethhdr *)skb->mac.raw)->h_proto, + u16 pdulen = eth_hdr(skb)->h_proto, data_size = ntohs(pdulen) - llc_len; skb_trim(skb, data_size); diff --git a/net/llc/llc_output.c b/net/llc/llc_output.c index 66206ebb6869..ab5784cf163e 100644 --- a/net/llc/llc_output.c +++ b/net/llc/llc_output.c @@ -40,7 +40,8 @@ int llc_mac_hdr_init(struct sk_buff *skb, unsigned char *sa, unsigned char *da) struct net_device *dev = skb->dev; struct trh_hdr *trh; - trh = (struct trh_hdr *)skb_push(skb, sizeof(*trh)); + skb->mac.raw = skb_push(skb, sizeof(*trh)); + trh = tr_hdr(skb); trh->ac = AC; trh->fc = LLC_FRAME; if (sa) @@ -50,8 +51,8 @@ int llc_mac_hdr_init(struct sk_buff *skb, unsigned char *sa, unsigned char *da) if (da) { memcpy(trh->daddr, da, dev->addr_len); tr_source_route(skb, trh, dev); + skb->mac.raw = skb->data; } - skb->mac.raw = skb->data; break; } #endif @@ -61,7 +62,7 @@ int llc_mac_hdr_init(struct sk_buff *skb, unsigned char *sa, unsigned char *da) struct ethhdr *eth; skb->mac.raw = skb_push(skb, sizeof(*eth)); - eth = (struct ethhdr *)skb->mac.raw; + eth = eth_hdr(skb); eth->h_proto = htons(len); memcpy(eth->h_dest, da, ETH_ALEN); memcpy(eth->h_source, sa, ETH_ALEN); |
