summaryrefslogtreecommitdiffstats
path: root/net/phonet
diff options
context:
space:
mode:
authorRemi Denis-Courmont <remi.denis-courmont@nokia.com>2008-09-22 20:08:04 -0700
committerDavid S. Miller <davem@davemloft.net>2008-09-22 20:08:04 -0700
commit5f77076d75d35c9f5619e1f9d7e7428a627f65e6 (patch)
tree0c0bca5a2f00efb47791f6cf50b6b591409eefab /net/phonet
parent107d0d9b8d9a236883db72841fb61cedd5be845e (diff)
downloadlinux-5f77076d75d35c9f5619e1f9d7e7428a627f65e6.tar.gz
linux-5f77076d75d35c9f5619e1f9d7e7428a627f65e6.tar.bz2
linux-5f77076d75d35c9f5619e1f9d7e7428a627f65e6.zip
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>
Diffstat (limited to 'net/phonet')
-rw-r--r--net/phonet/af_phonet.c29
1 files changed, 29 insertions, 0 deletions
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 = {
.owner = THIS_MODULE,
};
+/* Phonet device header operations */
+static int pn_header_create(struct sk_buff *skb, struct net_device *dev,
+ unsigned short type, const void *daddr,
+ const void *saddr, unsigned len)
+{
+ u8 *media = skb_push(skb, 1);
+
+ if (type != ETH_P_PHONET)
+ return -1;
+
+ if (!saddr)
+ saddr = dev->dev_addr;
+ *media = *(const u8 *)saddr;
+ return 1;
+}
+
+static int pn_header_parse(const struct sk_buff *skb, unsigned char *haddr)
+{
+ const u8 *media = skb_mac_header(skb);
+ *haddr = *media;
+ return 1;
+}
+
+struct header_ops phonet_header_ops = {
+ .create = pn_header_create,
+ .parse = pn_header_parse,
+};
+EXPORT_SYMBOL(phonet_header_ops);
+
/*
* Prepends an ISI header and sends a datagram.
*/