1*117d6495STianjia Zhang /* 2*117d6495STianjia Zhang * This header, excluding the #ifdef __KERNEL__ part, is BSD licensed so 3*117d6495STianjia Zhang * anyone can use the definitions to implement compatible drivers/servers: 4*117d6495STianjia Zhang * 5*117d6495STianjia Zhang * 6*117d6495STianjia Zhang * Redistribution and use in source and binary forms, with or without 7*117d6495STianjia Zhang * modification, are permitted provided that the following conditions 8*117d6495STianjia Zhang * are met: 9*117d6495STianjia Zhang * 1. Redistributions of source code must retain the above copyright 10*117d6495STianjia Zhang * notice, this list of conditions and the following disclaimer. 11*117d6495STianjia Zhang * 2. Redistributions in binary form must reproduce the above copyright 12*117d6495STianjia Zhang * notice, this list of conditions and the following disclaimer in the 13*117d6495STianjia Zhang * documentation and/or other materials provided with the distribution. 14*117d6495STianjia Zhang * 3. Neither the name of IBM nor the names of its contributors 15*117d6495STianjia Zhang * may be used to endorse or promote products derived from this software 16*117d6495STianjia Zhang * without specific prior written permission. 17*117d6495STianjia Zhang * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 18*117d6495STianjia Zhang * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19*117d6495STianjia Zhang * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20*117d6495STianjia Zhang * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE 21*117d6495STianjia Zhang * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22*117d6495STianjia Zhang * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23*117d6495STianjia Zhang * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24*117d6495STianjia Zhang * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25*117d6495STianjia Zhang * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26*117d6495STianjia Zhang * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27*117d6495STianjia Zhang * SUCH DAMAGE. 28*117d6495STianjia Zhang * 29*117d6495STianjia Zhang * Copyright (C) Red Hat, Inc., 2013-2015 30*117d6495STianjia Zhang * Copyright (C) Asias He <asias@redhat.com>, 2013 31*117d6495STianjia Zhang * Copyright (C) Stefan Hajnoczi <stefanha@redhat.com>, 2015 32*117d6495STianjia Zhang */ 33*117d6495STianjia Zhang 34*117d6495STianjia Zhang #ifndef _LINUX_VIRTIO_VSOCK_H 35*117d6495STianjia Zhang #define _LINUX_VIRTIO_VSOCK_H 36*117d6495STianjia Zhang 37*117d6495STianjia Zhang #include <linux/types.h> 38*117d6495STianjia Zhang #include <linux/virtio_ids.h> 39*117d6495STianjia Zhang #include <linux/virtio_config.h> 40*117d6495STianjia Zhang 41*117d6495STianjia Zhang struct virtio_vsock_config { 42*117d6495STianjia Zhang __le64 guest_cid; 43*117d6495STianjia Zhang } __attribute__((packed)); 44*117d6495STianjia Zhang 45*117d6495STianjia Zhang enum virtio_vsock_event_id { 46*117d6495STianjia Zhang VIRTIO_VSOCK_EVENT_TRANSPORT_RESET = 0, 47*117d6495STianjia Zhang }; 48*117d6495STianjia Zhang 49*117d6495STianjia Zhang struct virtio_vsock_event { 50*117d6495STianjia Zhang __le32 id; 51*117d6495STianjia Zhang } __attribute__((packed)); 52*117d6495STianjia Zhang 53*117d6495STianjia Zhang struct virtio_vsock_hdr { 54*117d6495STianjia Zhang __le64 src_cid; 55*117d6495STianjia Zhang __le64 dst_cid; 56*117d6495STianjia Zhang __le32 src_port; 57*117d6495STianjia Zhang __le32 dst_port; 58*117d6495STianjia Zhang __le32 len; 59*117d6495STianjia Zhang __le16 type; /* enum virtio_vsock_type */ 60*117d6495STianjia Zhang __le16 op; /* enum virtio_vsock_op */ 61*117d6495STianjia Zhang __le32 flags; 62*117d6495STianjia Zhang __le32 buf_alloc; 63*117d6495STianjia Zhang __le32 fwd_cnt; 64*117d6495STianjia Zhang } __attribute__((packed)); 65*117d6495STianjia Zhang 66*117d6495STianjia Zhang enum virtio_vsock_type { 67*117d6495STianjia Zhang VIRTIO_VSOCK_TYPE_STREAM = 1, 68*117d6495STianjia Zhang }; 69*117d6495STianjia Zhang 70*117d6495STianjia Zhang enum virtio_vsock_op { 71*117d6495STianjia Zhang VIRTIO_VSOCK_OP_INVALID = 0, 72*117d6495STianjia Zhang 73*117d6495STianjia Zhang /* Connect operations */ 74*117d6495STianjia Zhang VIRTIO_VSOCK_OP_REQUEST = 1, 75*117d6495STianjia Zhang VIRTIO_VSOCK_OP_RESPONSE = 2, 76*117d6495STianjia Zhang VIRTIO_VSOCK_OP_RST = 3, 77*117d6495STianjia Zhang VIRTIO_VSOCK_OP_SHUTDOWN = 4, 78*117d6495STianjia Zhang 79*117d6495STianjia Zhang /* To send payload */ 80*117d6495STianjia Zhang VIRTIO_VSOCK_OP_RW = 5, 81*117d6495STianjia Zhang 82*117d6495STianjia Zhang /* Tell the peer our credit info */ 83*117d6495STianjia Zhang VIRTIO_VSOCK_OP_CREDIT_UPDATE = 6, 84*117d6495STianjia Zhang /* Request the peer to send the credit info to us */ 85*117d6495STianjia Zhang VIRTIO_VSOCK_OP_CREDIT_REQUEST = 7, 86*117d6495STianjia Zhang }; 87*117d6495STianjia Zhang 88*117d6495STianjia Zhang /* VIRTIO_VSOCK_OP_SHUTDOWN flags values */ 89*117d6495STianjia Zhang enum virtio_vsock_shutdown { 90*117d6495STianjia Zhang VIRTIO_VSOCK_SHUTDOWN_RCV = 1, 91*117d6495STianjia Zhang VIRTIO_VSOCK_SHUTDOWN_SEND = 2, 92*117d6495STianjia Zhang }; 93*117d6495STianjia Zhang 94*117d6495STianjia Zhang #endif /* _LINUX_VIRTIO_VSOCK_H */ 95