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_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) /* 14 for ethernet + VLAN + MPLS for crazy people */
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