root/include/uapi/linux/vsockmon.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
   2 #ifndef _UAPI_VSOCKMON_H
   3 #define _UAPI_VSOCKMON_H
   4 
   5 #include <linux/virtio_vsock.h>
   6 
   7 /*
   8  * vsockmon is the AF_VSOCK packet capture device.  Packets captured have the
   9  * following layout:
  10  *
  11  *   +-----------------------------------+
  12  *   |           vsockmon header         |
  13  *   |      (struct af_vsockmon_hdr)     |
  14  *   +-----------------------------------+
  15  *   |          transport header         |
  16  *   | (af_vsockmon_hdr->len bytes long) |
  17  *   +-----------------------------------+
  18  *   |              payload              |
  19  *   |       (until end of packet)       |
  20  *   +-----------------------------------+
  21  *
  22  * The vsockmon header is a transport-independent description of the packet.
  23  * It duplicates some of the information from the transport header so that
  24  * no transport-specific knowledge is necessary to process packets.
  25  *
  26  * The transport header is useful for low-level transport-specific packet
  27  * analysis.  Transport type is given in af_vsockmon_hdr->transport and
  28  * transport header length is given in af_vsockmon_hdr->len.
  29  *
  30  * If af_vsockmon_hdr->op is AF_VSOCK_OP_PAYLOAD then the payload follows the
  31  * transport header.  Other ops do not have a payload.
  32  */
  33 
  34 struct af_vsockmon_hdr {
  35         __le64 src_cid;
  36         __le64 dst_cid;
  37         __le32 src_port;
  38         __le32 dst_port;
  39         __le16 op;                      /* enum af_vsockmon_op */
  40         __le16 transport;               /* enum af_vsockmon_transport */
  41         __le16 len;                     /* Transport header length */
  42         __u8 reserved[2];
  43 };
  44 
  45 enum af_vsockmon_op {
  46         AF_VSOCK_OP_UNKNOWN = 0,
  47         AF_VSOCK_OP_CONNECT = 1,
  48         AF_VSOCK_OP_DISCONNECT = 2,
  49         AF_VSOCK_OP_CONTROL = 3,
  50         AF_VSOCK_OP_PAYLOAD = 4,
  51 };
  52 
  53 enum af_vsockmon_transport {
  54         AF_VSOCK_TRANSPORT_UNKNOWN = 0,
  55         AF_VSOCK_TRANSPORT_NO_INFO = 1, /* No transport information */
  56 
  57         /* Transport header type: struct virtio_vsock_hdr */
  58         AF_VSOCK_TRANSPORT_VIRTIO = 2,
  59 };
  60 
  61 #endif

/* [<][>][^][v][top][bottom][index][help] */