mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 07:13:54 -06:00
net/vmnet: implement shared mode (vmnet-shared)
Interaction with vmnet.framework in different modes differs only on configuration stage, so we can create common `send`, `receive`, etc. procedures and reuse them. Reviewed-by: Akihiko Odaki <akihiko.odaki@gmail.com> Tested-by: Akihiko Odaki <akihiko.odaki@gmail.com> Signed-off-by: Phillip Tennen <phillip@axleos.com> Signed-off-by: Vladislav Yaroshchuk <Vladislav.Yaroshchuk@jetbrains.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
81ad2964e9
commit
73f99db534
3 changed files with 491 additions and 5 deletions
|
@ -15,11 +15,49 @@
|
|||
#include "clients.h"
|
||||
|
||||
#include <vmnet/vmnet.h>
|
||||
#include <dispatch/dispatch.h>
|
||||
|
||||
/**
|
||||
* From vmnet.framework documentation
|
||||
*
|
||||
* Each read/write call allows up to 200 packets to be
|
||||
* read or written for a maximum of 256KB.
|
||||
*
|
||||
* Each packet written should be a complete
|
||||
* ethernet frame.
|
||||
*
|
||||
* https://developer.apple.com/documentation/vmnet
|
||||
*/
|
||||
#define VMNET_PACKETS_LIMIT 200
|
||||
|
||||
typedef struct VmnetState {
|
||||
NetClientState nc;
|
||||
NetClientState nc;
|
||||
interface_ref vmnet_if;
|
||||
|
||||
uint64_t mtu;
|
||||
uint64_t max_packet_size;
|
||||
|
||||
dispatch_queue_t if_queue;
|
||||
|
||||
QEMUBH *send_bh;
|
||||
|
||||
struct vmpktdesc packets_buf[VMNET_PACKETS_LIMIT];
|
||||
int packets_send_current_pos;
|
||||
int packets_send_end_pos;
|
||||
|
||||
struct iovec iov_buf[VMNET_PACKETS_LIMIT];
|
||||
} VmnetState;
|
||||
|
||||
const char *vmnet_status_map_str(vmnet_return_t status);
|
||||
|
||||
int vmnet_if_create(NetClientState *nc,
|
||||
xpc_object_t if_desc,
|
||||
Error **errp);
|
||||
|
||||
ssize_t vmnet_receive_common(NetClientState *nc,
|
||||
const uint8_t *buf,
|
||||
size_t size);
|
||||
|
||||
void vmnet_cleanup_common(NetClientState *nc);
|
||||
|
||||
#endif /* VMNET_INT_H */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue