12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /*
- * vmnet_int.h
- *
- * Copyright(c) 2022 Vladislav Yaroshchuk <vladislav.yaroshchuk@jetbrains.com>
- *
- * This work is licensed under the terms of the GNU GPL, version 2 or later.
- * See the COPYING file in the top-level directory.
- *
- */
- #ifndef VMNET_INT_H
- #define VMNET_INT_H
- #include "vmnet_int.h"
- #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;
- 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];
- VMChangeStateEntry *change;
- } 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 */
|