Path: blob/master/arch/um/include/shared/net_kern.h
10819 views
/*1* Copyright (C) 2002 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)2* Licensed under the GPL3*/45#ifndef __UM_NET_KERN_H6#define __UM_NET_KERN_H78#include <linux/netdevice.h>9#include <linux/platform_device.h>10#include <linux/skbuff.h>11#include <linux/socket.h>12#include <linux/list.h>13#include <linux/workqueue.h>1415struct uml_net {16struct list_head list;17struct net_device *dev;18struct platform_device pdev;19int index;20unsigned char mac[ETH_ALEN];21};2223struct uml_net_private {24struct list_head list;25spinlock_t lock;26struct net_device *dev;27struct timer_list tl;2829struct work_struct work;30int fd;31unsigned char mac[ETH_ALEN];32int max_packet;33unsigned short (*protocol)(struct sk_buff *);34int (*open)(void *);35void (*close)(int, void *);36void (*remove)(void *);37int (*read)(int, struct sk_buff *skb, struct uml_net_private *);38int (*write)(int, struct sk_buff *skb, struct uml_net_private *);3940void (*add_address)(unsigned char *, unsigned char *, void *);41void (*delete_address)(unsigned char *, unsigned char *, void *);42char user[0];43};4445struct net_kern_info {46void (*init)(struct net_device *, void *);47unsigned short (*protocol)(struct sk_buff *);48int (*read)(int, struct sk_buff *skb, struct uml_net_private *);49int (*write)(int, struct sk_buff *skb, struct uml_net_private *);50};5152struct transport {53struct list_head list;54const char *name;55int (* const setup)(char *, char **, void *);56const struct net_user_info *user;57const struct net_kern_info *kern;58const int private_size;59const int setup_size;60};6162extern struct net_device *ether_init(int);63extern unsigned short ether_protocol(struct sk_buff *);64extern int tap_setup_common(char *str, char *type, char **dev_name,65char **mac_out, char **gate_addr);66extern void register_transport(struct transport *new);67extern unsigned short eth_protocol(struct sk_buff *skb);6869#endif707172