0001
0002
0003
0004
0005
0006 #ifndef __UM_NET_USER_H__
0007 #define __UM_NET_USER_H__
0008
0009 #define ETH_ADDR_LEN (6)
0010 #define ETH_HEADER_ETHERTAP (16)
0011 #define ETH_HEADER_OTHER (26)
0012 #define ETH_MAX_PACKET (1500)
0013
0014 #define UML_NET_VERSION (4)
0015
0016 struct net_user_info {
0017 int (*init)(void *, void *);
0018 int (*open)(void *);
0019 void (*close)(int, void *);
0020 void (*remove)(void *);
0021 void (*add_address)(unsigned char *, unsigned char *, void *);
0022 void (*delete_address)(unsigned char *, unsigned char *, void *);
0023 int max_packet;
0024 int mtu;
0025 };
0026
0027 extern void iter_addresses(void *d, void (*cb)(unsigned char *,
0028 unsigned char *, void *),
0029 void *arg);
0030
0031 extern void *get_output_buffer(int *len_out);
0032 extern void free_output_buffer(void *buffer);
0033
0034 extern int tap_open_common(void *dev, char *gate_addr);
0035 extern void tap_check_ips(char *gate_addr, unsigned char *eth_addr);
0036
0037 extern void read_output(int fd, char *output_out, int len);
0038
0039 extern int net_read(int fd, void *buf, int len);
0040 extern int net_recvfrom(int fd, void *buf, int len);
0041 extern int net_write(int fd, void *buf, int len);
0042 extern int net_send(int fd, void *buf, int len);
0043 extern int net_sendto(int fd, void *buf, int len, void *to, int sock_len);
0044
0045 extern void open_addr(unsigned char *addr, unsigned char *netmask, void *arg);
0046 extern void close_addr(unsigned char *addr, unsigned char *netmask, void *arg);
0047
0048 extern char *split_if_spec(char *str, ...);
0049
0050 extern int dev_netmask(void *d, void *m);
0051
0052 #endif