8
typedef ssize_t (IOReadvHandler)(void *, const struct iovec *, int);
10
8
typedef struct VLANClientState VLANClientState;
10
typedef int (NetCanReceive)(VLANClientState *);
11
typedef ssize_t (NetReceive)(VLANClientState *, const uint8_t *, size_t);
12
typedef ssize_t (NetReceiveIOV)(VLANClientState *, const struct iovec *, int);
12
13
typedef void (NetCleanup) (VLANClientState *);
13
14
typedef void (LinkStatusChanged)(VLANClientState *);
15
16
struct VLANClientState {
16
IOReadHandler *fd_read;
17
IOReadvHandler *fd_readv;
18
NetReceiveIOV *receive_iov;
18
19
/* Packets may still be sent if this returns zero. It's used to
19
20
rate-limit the slirp code. */
20
IOCanRWHandler *fd_can_read;
21
NetCanReceive *can_receive;
21
22
NetCleanup *cleanup;
22
23
LinkStatusChanged *link_status_changed;
29
30
char info_str[256];
33
typedef struct VLANPacket VLANPacket;
35
typedef void (NetPacketSent) (VLANClientState *, ssize_t);
38
struct VLANPacket *next;
39
VLANClientState *sender;
41
NetPacketSent *sent_cb;
34
47
VLANClientState *first_client;
35
48
struct VLANState *next;
36
49
unsigned int nb_guest_devs, nb_host_devs;
50
VLANPacket *send_queue;
39
VLANState *qemu_find_vlan(int id);
54
VLANState *qemu_find_vlan(int id, int allocate);
40
55
VLANClientState *qemu_new_vlan_client(VLANState *vlan,
43
IOReadHandler *fd_read,
44
IOCanRWHandler *fd_can_read,
58
NetCanReceive *can_receive,
60
NetReceiveIOV *receive_iov,
45
61
NetCleanup *cleanup,
47
63
void qemu_del_vlan_client(VLANClientState *vc);
49
65
int qemu_can_send_packet(VLANClientState *vc);
50
66
ssize_t qemu_sendv_packet(VLANClientState *vc, const struct iovec *iov,
68
ssize_t qemu_sendv_packet_async(VLANClientState *vc, const struct iovec *iov,
69
int iovcnt, NetPacketSent *sent_cb);
52
70
void qemu_send_packet(VLANClientState *vc, const uint8_t *buf, int size);
71
ssize_t qemu_send_packet_async(VLANClientState *vc, const uint8_t *buf,
72
int size, NetPacketSent *sent_cb);
73
void qemu_purge_queued_packets(VLANClientState *vc);
74
void qemu_flush_queued_packets(VLANClientState *vc);
53
75
void qemu_format_nic_info_str(VLANClientState *vc, uint8_t macaddr[6]);
54
76
void qemu_check_nic_model(NICInfo *nd, const char *model);
55
77
void qemu_check_nic_model_list(NICInfo *nd, const char * const *models,
56
78
const char *default_model);
57
79
void qemu_handler_true(void *opaque);
59
void do_info_network(void);
60
int do_set_link(const char *name, const char *up_or_down);
81
void do_info_network(Monitor *mon);
82
int do_set_link(Monitor *mon, const char *name, const char *up_or_down);
84
void do_info_usernet(Monitor *mon);
90
NIC_NVECTORS_UNSPECIFIED = -1
67
94
uint8_t macaddr[6];
75
107
extern int nb_nics;
97
129
void net_checksum_calculate(uint8_t *data, int length);
100
int net_client_init(const char *device, const char *p);
132
extern const char *legacy_tftp_prefix;
133
extern const char *legacy_bootp_filename;
135
int net_client_init(Monitor *mon, const char *device, const char *p);
101
136
void net_client_uninit(NICInfo *nd);
102
137
int net_client_parse(const char *str);
103
138
void net_slirp_smb(const char *exported_dir);
139
void net_slirp_hostfwd_add(Monitor *mon, const char *arg1,
140
const char *arg2, const char *arg3);
141
void net_slirp_hostfwd_remove(Monitor *mon, const char *arg1,
142
const char *arg2, const char *arg3);
104
143
void net_slirp_redir(const char *redir_str);
105
144
void net_cleanup(void);
106
int slirp_is_inited(void);
107
145
void net_client_check(void);
108
void net_host_device_add(const char *device, const char *opts);
109
void net_host_device_remove(int vlan_id, const char *device);
146
void net_set_boot_mask(int boot_mask);
147
void net_host_device_add(Monitor *mon, const char *device, const char *opts);
148
void net_host_device_remove(Monitor *mon, int vlan_id, const char *device);
111
150
#define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup"
112
151
#define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown"
116
155
#define SMBD_COMMAND "/usr/sbin/smbd"
158
void qdev_get_macaddr(DeviceState *dev, uint8_t *macaddr);
159
VLANClientState *qdev_get_vlan_client(DeviceState *dev,
160
NetCanReceive *can_receive,
162
NetReceiveIOV *receive_iov,