/*1* NET3: 802.3 data link hooks used for IPX 802.32*3* This program is free software; you can redistribute it and/or4* modify it under the terms of the GNU General Public License5* as published by the Free Software Foundation; either version6* 2 of the License, or (at your option) any later version.7*8* 802.3 isn't really a protocol data link layer. Some old IPX stuff9* uses it however. Note that there is only one 802.3 protocol layer10* in the system. We don't currently support different protocols11* running raw 802.3 on different devices. Thankfully nobody else12* has done anything like the old IPX.13*/1415#include <linux/in.h>16#include <linux/mm.h>17#include <linux/module.h>18#include <linux/netdevice.h>19#include <linux/skbuff.h>20#include <linux/slab.h>2122#include <net/datalink.h>23#include <net/p8022.h>2425/*26* Place an 802.3 header on a packet. The driver will do the mac27* addresses, we just need to give it the buffer length.28*/29static int p8023_request(struct datalink_proto *dl,30struct sk_buff *skb, unsigned char *dest_node)31{32struct net_device *dev = skb->dev;3334dev_hard_header(skb, dev, ETH_P_802_3, dest_node, NULL, skb->len);35return dev_queue_xmit(skb);36}3738/*39* Create an 802.3 client. Note there can be only one 802.3 client40*/41struct datalink_proto *make_8023_client(void)42{43struct datalink_proto *proto = kmalloc(sizeof(*proto), GFP_ATOMIC);4445if (proto) {46proto->header_length = 0;47proto->request = p8023_request;48}49return proto;50}5152/*53* Destroy the 802.3 client.54*/55void destroy_8023_client(struct datalink_proto *dl)56{57kfree(dl);58}5960EXPORT_SYMBOL(destroy_8023_client);61EXPORT_SYMBOL(make_8023_client);6263MODULE_LICENSE("GPL");646566