1// Copyright 2018 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#pragma once
6
7#include <stdint.h>
8#include <zircon/compiler.h>
9
10// clang-format off
11
12// For virtio_vsock_hdr_t.
13#define VIRTIO_VSOCK_TYPE_STREAM            1u
14
15#define VIRTIO_VSOCK_OP_INVALID             0u
16#define VIRTIO_VSOCK_OP_REQUEST             1u
17#define VIRTIO_VSOCK_OP_RESPONSE            2u
18#define VIRTIO_VSOCK_OP_RST                 3u
19#define VIRTIO_VSOCK_OP_SHUTDOWN            4u
20#define VIRTIO_VSOCK_OP_RW                  5u
21#define VIRTIO_VSOCK_OP_CREDIT_UPDATE       6u
22#define VIRTIO_VSOCK_OP_CREDIT_REQUEST      7u
23
24#define VIRTIO_VSOCK_FLAG_SHUTDOWN_RECV     (1u << 0)
25#define VIRTIO_VSOCK_FLAG_SHUTDOWN_SEND     (1u << 1)
26#define VIRTIO_VSOCK_FLAG_SHUTDOWN_BOTH     (VIRTIO_VSOCK_FLAG_SHUTDOWN_RECV | \
27                                             VIRTIO_VSOCK_FLAG_SHUTDOWN_SEND)
28
29// For virtio_vsock_event_t.
30#define VIRTIO_VSOCK_EVENT_TRANSPORT_RESET  0u
31
32// clang-format on
33
34__BEGIN_CDECLS;
35
36typedef struct virtio_vsock_config {
37    uint64_t guest_cid;
38} __PACKED virtio_vsock_config_t;
39
40typedef struct virtio_vsock_hdr {
41    uint64_t src_cid;
42    uint64_t dst_cid;
43    uint32_t src_port;
44    uint32_t dst_port;
45    uint32_t len;
46    uint16_t type;
47    uint16_t op;
48    uint32_t flags;
49    uint32_t buf_alloc;
50    uint32_t fwd_cnt;
51} __PACKED virtio_vsock_hdr_t;
52
53typedef struct virtio_vsock_event {
54    uint32_t id;
55} __PACKED virtio_vsock_event_t;
56
57__END_CDECLS;
58