File:  [Qemu by Fabrice Bellard] / qemu / net.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:51:04 2018 UTC (3 years, 1 month ago) by root
Branches: qemu, MAIN
CVS tags: qemu0102, qemu0101, qemu0100, HEAD
qemu 0.10.0

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

unix.superglobalmegacorp.com