aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Denis-Courmont <remi.denis-courmont@nokia.com>2008-09-22 23:08:04 -0400
committerDavid S. Miller <davem@davemloft.net>2008-09-22 23:08:04 -0400
commit5f77076d75d35c9f5619e1f9d7e7428a627f65e6 (patch)
tree0c0bca5a2f00efb47791f6cf50b6b591409eefab
parent107d0d9b8d9a236883db72841fb61cedd5be845e (diff)
Phonet: provide MAC header operations
Signed-off-by: RĂ©mi Denis-Courmont <remi.denis-courmont@nokia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/linux/if_phonet.h4
-rw-r--r--net/phonet/af_phonet.c29
2 files changed, 33 insertions, 0 deletions
diff --git a/include/linux/if_phonet.h b/include/linux/if_phonet.h
index 22df25fbc4e2..7e989216ec17 100644
--- a/include/linux/if_phonet.h
+++ b/include/linux/if_phonet.h
@@ -12,3 +12,7 @@
12/* 6 bytes header + 65535 bytes payload */ 12/* 6 bytes header + 65535 bytes payload */
13#define PHONET_MAX_MTU 65541 13#define PHONET_MAX_MTU 65541
14#define PHONET_DEV_MTU PHONET_MAX_MTU 14#define PHONET_DEV_MTU PHONET_MAX_MTU
15
16#ifdef __KERNEL__
17extern struct header_ops phonet_header_ops;
18#endif
diff --git a/net/phonet/af_phonet.c b/net/phonet/af_phonet.c
index e6771d3961cf..51397ff308bd 100644
--- a/net/phonet/af_phonet.c
+++ b/net/phonet/af_phonet.c
@@ -99,6 +99,35 @@ static struct net_proto_family phonet_proto_family = {
99 .owner = THIS_MODULE, 99 .owner = THIS_MODULE,
100}; 100};
101 101
102/* Phonet device header operations */
103static int pn_header_create(struct sk_buff *skb, struct net_device *dev,
104 unsigned short type, const void *daddr,
105 const void *saddr, unsigned len)
106{
107 u8 *media = skb_push(skb, 1);
108
109 if (type != ETH_P_PHONET)
110 return -1;
111
112 if (!saddr)
113 saddr = dev->dev_addr;
114 *media = *(const u8 *)saddr;
115 return 1;
116}
117
118static int pn_header_parse(const struct sk_buff *skb, unsigned char *haddr)
119{
120 const u8 *media = skb_mac_header(skb);
121 *haddr = *media;
122 return 1;
123}
124
125struct header_ops phonet_header_ops = {
126 .create = pn_header_create,
127 .parse = pn_header_parse,
128};
129EXPORT_SYMBOL(phonet_header_ops);
130
102/* 131/*
103 * Prepends an ISI header and sends a datagram. 132 * Prepends an ISI header and sends a datagram.
104 */ 133 */