pe2.c 805 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include <linux/in.h>
  2. #include <linux/mm.h>
  3. #include <linux/module.h>
  4. #include <linux/netdevice.h>
  5. #include <linux/skbuff.h>
  6. #include <net/datalink.h>
  7. static int pEII_request(struct datalink_proto *dl,
  8. struct sk_buff *skb, unsigned char *dest_node)
  9. {
  10. struct net_device *dev = skb->dev;
  11. skb->protocol = htons(ETH_P_IPX);
  12. if (dev->hard_header)
  13. dev->hard_header(skb, dev, ETH_P_IPX,
  14. dest_node, NULL, skb->len);
  15. return dev_queue_xmit(skb);
  16. }
  17. struct datalink_proto *make_EII_client(void)
  18. {
  19. struct datalink_proto *proto = kmalloc(sizeof(*proto), GFP_ATOMIC);
  20. if (proto) {
  21. proto->header_length = 0;
  22. proto->request = pEII_request;
  23. }
  24. return proto;
  25. }
  26. void destroy_EII_client(struct datalink_proto *dl)
  27. {
  28. kfree(dl);
  29. }
  30. EXPORT_SYMBOL(destroy_EII_client);
  31. EXPORT_SYMBOL(make_EII_client);