linux/net/vmw_vsock/vmci_transport.h

/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * VMware vSockets Driver
 *
 * Copyright (C) 2013 VMware, Inc. All rights reserved.
 */

#ifndef _VMCI_TRANSPORT_H_
#define _VMCI_TRANSPORT_H_

#include <linux/vmw_vmci_defs.h>
#include <linux/vmw_vmci_api.h>

#include <net/vsock_addr.h>
#include <net/af_vsock.h>

/* If the packet format changes in a release then this should change too. */
#define VMCI_TRANSPORT_PACKET_VERSION

/* The resource ID on which control packets are sent. */
#define VMCI_TRANSPORT_PACKET_RID

/* The resource ID on which control packets are sent to the hypervisor. */
#define VMCI_TRANSPORT_HYPERVISOR_PACKET_RID

#define VSOCK_PROTO_INVALID
#define VSOCK_PROTO_PKT_ON_NOTIFY
#define VSOCK_PROTO_ALL_SUPPORTED

#define vmci_trans(_vsk)

enum vmci_transport_packet_type {};

struct vmci_transport_waiting_info {};

/* Control packet type for STREAM sockets.  DGRAMs have no control packets nor
 * special packet header for data packets, they are just raw VMCI DGRAM
 * messages.  For STREAMs, control packets are sent over the control channel
 * while data is written and read directly from queue pairs with no packet
 * format.
 */
struct vmci_transport_packet {};

struct vmci_transport_notify_pkt {};

struct vmci_transport_notify_pkt_q_state {};

vmci_transport_notify;

/* Our transport-specific data. */
struct vmci_transport {};

int vmci_transport_send_wrote_bh(struct sockaddr_vm *dst,
				 struct sockaddr_vm *src);
int vmci_transport_send_read_bh(struct sockaddr_vm *dst,
				struct sockaddr_vm *src);
int vmci_transport_send_wrote(struct sock *sk);
int vmci_transport_send_read(struct sock *sk);
int vmci_transport_send_waiting_write(struct sock *sk,
				      struct vmci_transport_waiting_info *wait);
int vmci_transport_send_waiting_read(struct sock *sk,
				     struct vmci_transport_waiting_info *wait);

#endif