Statistics
| Branch: | Revision:

root / net.h @ 6f338c34

History | View | Annotate | Download (3.6 kB)

1 87ecb68b pbrook
#ifndef QEMU_NET_H
2 87ecb68b pbrook
#define QEMU_NET_H
3 87ecb68b pbrook
4 fbe78f4f aliguori
#include "qemu-common.h"
5 fbe78f4f aliguori
6 87ecb68b pbrook
/* VLANs support */
7 87ecb68b pbrook
8 fbe78f4f aliguori
typedef ssize_t (IOReadvHandler)(void *, const struct iovec *, int);
9 fbe78f4f aliguori
10 87ecb68b pbrook
typedef struct VLANClientState VLANClientState;
11 87ecb68b pbrook
12 34b25ca7 aliguori
typedef void (LinkStatusChanged)(VLANClientState *);
13 34b25ca7 aliguori
14 87ecb68b pbrook
struct VLANClientState {
15 87ecb68b pbrook
    IOReadHandler *fd_read;
16 fbe78f4f aliguori
    IOReadvHandler *fd_readv;
17 87ecb68b pbrook
    /* Packets may still be sent if this returns zero.  It's used to
18 87ecb68b pbrook
       rate-limit the slirp code.  */
19 87ecb68b pbrook
    IOCanRWHandler *fd_can_read;
20 34b25ca7 aliguori
    LinkStatusChanged *link_status_changed;
21 436e5e53 aliguori
    int link_down;
22 87ecb68b pbrook
    void *opaque;
23 87ecb68b pbrook
    struct VLANClientState *next;
24 87ecb68b pbrook
    struct VLANState *vlan;
25 bf38c1a0 aliguori
    char *model;
26 676cff29 aliguori
    char *name;
27 87ecb68b pbrook
    char info_str[256];
28 87ecb68b pbrook
};
29 87ecb68b pbrook
30 87ecb68b pbrook
struct VLANState {
31 87ecb68b pbrook
    int id;
32 87ecb68b pbrook
    VLANClientState *first_client;
33 87ecb68b pbrook
    struct VLANState *next;
34 87ecb68b pbrook
    unsigned int nb_guest_devs, nb_host_devs;
35 87ecb68b pbrook
};
36 87ecb68b pbrook
37 87ecb68b pbrook
VLANState *qemu_find_vlan(int id);
38 87ecb68b pbrook
VLANClientState *qemu_new_vlan_client(VLANState *vlan,
39 bf38c1a0 aliguori
                                      const char *model,
40 7a9f6e4a aliguori
                                      const char *name,
41 87ecb68b pbrook
                                      IOReadHandler *fd_read,
42 87ecb68b pbrook
                                      IOCanRWHandler *fd_can_read,
43 87ecb68b pbrook
                                      void *opaque);
44 dcf414d6 balrog
void qemu_del_vlan_client(VLANClientState *vc);
45 8b13c4a7 aliguori
VLANClientState *qemu_find_vlan_client(VLANState *vlan, void *opaque);
46 87ecb68b pbrook
int qemu_can_send_packet(VLANClientState *vc);
47 fbe78f4f aliguori
ssize_t qemu_sendv_packet(VLANClientState *vc, const struct iovec *iov,
48 fbe78f4f aliguori
                          int iovcnt);
49 87ecb68b pbrook
void qemu_send_packet(VLANClientState *vc, const uint8_t *buf, int size);
50 7cb7434b aliguori
void qemu_format_nic_info_str(VLANClientState *vc, uint8_t macaddr[6]);
51 d07f22c5 aliguori
void qemu_check_nic_model(NICInfo *nd, const char *model);
52 d07f22c5 aliguori
void qemu_check_nic_model_list(NICInfo *nd, const char * const *models,
53 d07f22c5 aliguori
                               const char *default_model);
54 87ecb68b pbrook
void qemu_handler_true(void *opaque);
55 87ecb68b pbrook
56 87ecb68b pbrook
void do_info_network(void);
57 436e5e53 aliguori
int do_set_link(const char *name, const char *up_or_down);
58 87ecb68b pbrook
59 87ecb68b pbrook
/* NIC info */
60 87ecb68b pbrook
61 87ecb68b pbrook
#define MAX_NICS 8
62 87ecb68b pbrook
63 87ecb68b pbrook
struct NICInfo {
64 87ecb68b pbrook
    uint8_t macaddr[6];
65 87ecb68b pbrook
    const char *model;
66 7a9f6e4a aliguori
    const char *name;
67 87ecb68b pbrook
    VLANState *vlan;
68 72da4208 aliguori
    void *private;
69 7697079b aliguori
    int used;
70 87ecb68b pbrook
};
71 87ecb68b pbrook
72 87ecb68b pbrook
extern int nb_nics;
73 87ecb68b pbrook
extern NICInfo nd_table[MAX_NICS];
74 87ecb68b pbrook
75 1ae26a18 balrog
/* BT HCI info */
76 1ae26a18 balrog
77 1ae26a18 balrog
struct HCIInfo {
78 1ae26a18 balrog
    int (*bdaddr_set)(struct HCIInfo *hci, const uint8_t *bd_addr);
79 1ae26a18 balrog
    void (*cmd_send)(struct HCIInfo *hci, const uint8_t *data, int len);
80 1ae26a18 balrog
    void (*sco_send)(struct HCIInfo *hci, const uint8_t *data, int len);
81 1ae26a18 balrog
    void (*acl_send)(struct HCIInfo *hci, const uint8_t *data, int len);
82 1ae26a18 balrog
    void *opaque;
83 1ae26a18 balrog
    void (*evt_recv)(void *opaque, const uint8_t *data, int len);
84 1ae26a18 balrog
    void (*acl_recv)(void *opaque, const uint8_t *data, int len);
85 1ae26a18 balrog
};
86 1ae26a18 balrog
87 1ae26a18 balrog
struct HCIInfo *qemu_next_hci(void);
88 1ae26a18 balrog
89 48c64363 aliguori
/* checksumming functions (net-checksum.c) */
90 48c64363 aliguori
uint32_t net_checksum_add(int len, uint8_t *buf);
91 48c64363 aliguori
uint16_t net_checksum_finish(uint32_t sum);
92 48c64363 aliguori
uint16_t net_checksum_tcpudp(uint16_t length, uint16_t proto,
93 48c64363 aliguori
                             uint8_t *addrs, uint8_t *buf);
94 48c64363 aliguori
void net_checksum_calculate(uint8_t *data, int length);
95 48c64363 aliguori
96 63a01ef8 aliguori
/* from net.c */
97 63a01ef8 aliguori
int net_client_init(const char *device, const char *p);
98 8b13c4a7 aliguori
void net_client_uninit(NICInfo *nd);
99 63a01ef8 aliguori
int net_client_parse(const char *str);
100 63a01ef8 aliguori
void net_slirp_smb(const char *exported_dir);
101 63a01ef8 aliguori
void net_slirp_redir(const char *redir_str);
102 63a01ef8 aliguori
void net_cleanup(void);
103 63a01ef8 aliguori
int slirp_is_inited(void);
104 63a01ef8 aliguori
void net_client_check(void);
105 6f338c34 aliguori
void net_host_device_add(const char *device, const char *opts);
106 6f338c34 aliguori
void net_host_device_remove(int vlan_id, const char *device);
107 63a01ef8 aliguori
108 f54825cc aurel32
#define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup"
109 f54825cc aurel32
#define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown"
110 f54825cc aurel32
#ifdef __sun__
111 f54825cc aurel32
#define SMBD_COMMAND "/usr/sfw/sbin/smbd"
112 f54825cc aurel32
#else
113 f54825cc aurel32
#define SMBD_COMMAND "/usr/sbin/smbd"
114 f54825cc aurel32
#endif
115 f54825cc aurel32
116 87ecb68b pbrook
#endif