X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=net.h;h=feee021f78561671ffa5576a476d0861baf07ebc;hb=fd93a79999c728dd1f30bb2e726ce12bdf704e6d;hp=84c3454746605fe8c628064484799a9e0e1df70d;hpb=72da42085924f65c78e6ec478373f51a9e49e48d;p=qemu diff --git a/net.h b/net.h index 84c3454..feee021 100644 --- a/net.h +++ b/net.h @@ -9,6 +9,7 @@ typedef ssize_t (IOReadvHandler)(void *, const struct iovec *, int); typedef struct VLANClientState VLANClientState; +typedef void (NetCleanup) (VLANClientState *); typedef void (LinkStatusChanged)(VLANClientState *); struct VLANClientState { @@ -17,6 +18,7 @@ struct VLANClientState { /* Packets may still be sent if this returns zero. It's used to rate-limit the slirp code. */ IOCanRWHandler *fd_can_read; + NetCleanup *cleanup; LinkStatusChanged *link_status_changed; int link_down; void *opaque; @@ -27,11 +29,22 @@ struct VLANClientState { char info_str[256]; }; +typedef struct VLANPacket VLANPacket; + +struct VLANPacket { + struct VLANPacket *next; + VLANClientState *sender; + int size; + uint8_t data[0]; +}; + struct VLANState { int id; VLANClientState *first_client; struct VLANState *next; unsigned int nb_guest_devs, nb_host_devs; + VLANPacket *send_queue; + int delivering; }; VLANState *qemu_find_vlan(int id); @@ -40,8 +53,10 @@ VLANClientState *qemu_new_vlan_client(VLANState *vlan, const char *name, IOReadHandler *fd_read, IOCanRWHandler *fd_can_read, + NetCleanup *cleanup, void *opaque); void qemu_del_vlan_client(VLANClientState *vc); +VLANClientState *qemu_find_vlan_client(VLANState *vlan, void *opaque); int qemu_can_send_packet(VLANClientState *vc); ssize_t qemu_sendv_packet(VLANClientState *vc, const struct iovec *iov, int iovcnt); @@ -52,8 +67,8 @@ void qemu_check_nic_model_list(NICInfo *nd, const char * const *models, const char *default_model); void qemu_handler_true(void *opaque); -void do_info_network(void); -int do_set_link(const char *name, const char *up_or_down); +void do_info_network(Monitor *mon); +int do_set_link(Monitor *mon, const char *name, const char *up_or_down); /* NIC info */ @@ -65,6 +80,7 @@ struct NICInfo { const char *name; VLANState *vlan; void *private; + int used; }; extern int nb_nics; @@ -93,12 +109,15 @@ void net_checksum_calculate(uint8_t *data, int length); /* from net.c */ int net_client_init(const char *device, const char *p); +void net_client_uninit(NICInfo *nd); int net_client_parse(const char *str); void net_slirp_smb(const char *exported_dir); -void net_slirp_redir(const char *redir_str); +void net_slirp_redir(Monitor *mon, const char *redir_str, const char *redir_opt2); void net_cleanup(void); int slirp_is_inited(void); void net_client_check(void); +void net_host_device_add(Monitor *mon, const char *device, const char *opts); +void net_host_device_remove(Monitor *mon, int vlan_id, const char *device); #define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup" #define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown" @@ -108,4 +127,11 @@ void net_client_check(void); #define SMBD_COMMAND "/usr/sbin/smbd" #endif +void qdev_get_macaddr(DeviceState *dev, uint8_t *macaddr); +VLANClientState *qdev_get_vlan_client(DeviceState *dev, + IOReadHandler *fd_read, + IOCanRWHandler *fd_can_read, + NetCleanup *cleanup, + void *opaque); + #endif