cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

vsockmon.h (1895B)


      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
     34struct 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
     45enum 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
     53enum 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