summaryrefslogtreecommitdiff
path: root/arch/um/include/shared/net_kern.h
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2008-08-17 17:48:37 (GMT)
committerH. Peter Anvin <hpa@zytor.com>2008-10-23 05:55:19 (GMT)
commit8569c9140bd41089f9b6be8837ca421102714a90 (patch)
treecd289b322b215fe2ca2530aa320febfd99388d7f /arch/um/include/shared/net_kern.h
parent2515ddc6db8eb49a79f0fe5e67ff09ac7c81eab4 (diff)
downloadlinux-8569c9140bd41089f9b6be8837ca421102714a90.tar.xz
x86, um: take arch/um/include/* out of the way
We can't just plop asm/* into it - userland helpers are built with it in search path and seeing asm/* show up there suddenly would be a bad idea. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch/um/include/shared/net_kern.h')
-rw-r--r--arch/um/include/shared/net_kern.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/arch/um/include/shared/net_kern.h b/arch/um/include/shared/net_kern.h
new file mode 100644
index 0000000..d843c79
--- /dev/null
+++ b/arch/um/include/shared/net_kern.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2002 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
+ * Licensed under the GPL
+ */
+
+#ifndef __UM_NET_KERN_H
+#define __UM_NET_KERN_H
+
+#include <linux/netdevice.h>
+#include <linux/platform_device.h>
+#include <linux/skbuff.h>
+#include <linux/socket.h>
+#include <linux/list.h>
+#include <linux/workqueue.h>
+
+struct uml_net {
+ struct list_head list;
+ struct net_device *dev;
+ struct platform_device pdev;
+ int index;
+ unsigned char mac[ETH_ALEN];
+};
+
+struct uml_net_private {
+ struct list_head list;
+ spinlock_t lock;
+ struct net_device *dev;
+ struct timer_list tl;
+ struct net_device_stats stats;
+ struct work_struct work;
+ int fd;
+ unsigned char mac[ETH_ALEN];
+ int max_packet;
+ unsigned short (*protocol)(struct sk_buff *);
+ int (*open)(void *);
+ void (*close)(int, void *);
+ void (*remove)(void *);
+ int (*read)(int, struct sk_buff *skb, struct uml_net_private *);
+ int (*write)(int, struct sk_buff *skb, struct uml_net_private *);
+
+ void (*add_address)(unsigned char *, unsigned char *, void *);
+ void (*delete_address)(unsigned char *, unsigned char *, void *);
+ char user[0];
+};
+
+struct net_kern_info {
+ void (*init)(struct net_device *, void *);
+ unsigned short (*protocol)(struct sk_buff *);
+ int (*read)(int, struct sk_buff *skb, struct uml_net_private *);
+ int (*write)(int, struct sk_buff *skb, struct uml_net_private *);
+};
+
+struct transport {
+ struct list_head list;
+ const char *name;
+ int (* const setup)(char *, char **, void *);
+ const struct net_user_info *user;
+ const struct net_kern_info *kern;
+ const int private_size;
+ const int setup_size;
+};
+
+extern struct net_device *ether_init(int);
+extern unsigned short ether_protocol(struct sk_buff *);
+extern int tap_setup_common(char *str, char *type, char **dev_name,
+ char **mac_out, char **gate_addr);
+extern void register_transport(struct transport *new);
+extern unsigned short eth_protocol(struct sk_buff *skb);
+
+#endif