Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * Copyright (C) 2002 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
0004  */
0005 
0006 #ifndef __UM_NET_KERN_H
0007 #define __UM_NET_KERN_H
0008 
0009 #include <linux/netdevice.h>
0010 #include <linux/platform_device.h>
0011 #include <linux/skbuff.h>
0012 #include <linux/socket.h>
0013 #include <linux/list.h>
0014 #include <linux/workqueue.h>
0015 
0016 struct uml_net {
0017     struct list_head list;
0018     struct net_device *dev;
0019     struct platform_device pdev;
0020     int index;
0021 };
0022 
0023 struct uml_net_private {
0024     struct list_head list;
0025     spinlock_t lock;
0026     struct net_device *dev;
0027     struct timer_list tl;
0028 
0029     struct work_struct work;
0030     int fd;
0031     unsigned char mac[ETH_ALEN];
0032     int max_packet;
0033     unsigned short (*protocol)(struct sk_buff *);
0034     int (*open)(void *);
0035     void (*close)(int, void *);
0036     void (*remove)(void *);
0037     int (*read)(int, struct sk_buff *skb, struct uml_net_private *);
0038     int (*write)(int, struct sk_buff *skb, struct uml_net_private *);
0039 
0040     void (*add_address)(unsigned char *, unsigned char *, void *);
0041     void (*delete_address)(unsigned char *, unsigned char *, void *);
0042     char user[];
0043 };
0044 
0045 struct net_kern_info {
0046     void (*init)(struct net_device *, void *);
0047     unsigned short (*protocol)(struct sk_buff *);
0048     int (*read)(int, struct sk_buff *skb, struct uml_net_private *);
0049     int (*write)(int, struct sk_buff *skb, struct uml_net_private *);
0050 };
0051 
0052 struct transport {
0053     struct list_head list;
0054     const char *name;
0055     int (* const setup)(char *, char **, void *);
0056     const struct net_user_info *user;
0057     const struct net_kern_info *kern;
0058     const int private_size;
0059     const int setup_size;
0060 };
0061 
0062 extern int tap_setup_common(char *str, char *type, char **dev_name,
0063                 char **mac_out, char **gate_addr);
0064 extern void register_transport(struct transport *new);
0065 extern unsigned short eth_protocol(struct sk_buff *skb);
0066 extern void uml_net_setup_etheraddr(struct net_device *dev, char *str);
0067 
0068 
0069 #endif