Critics have remarked that those four worthies were truly peerless throughout the ages; yet the present falls short of the pastβthe ancients favored unadorned simplicity, whereas the moderns prefer refined elegance. Styles of substance and ornament rise and fall in succession, shifting with the changing mores of the times; such evolution is simply the natural order of things. The ideal lies in honoring antiquity without clashing with the present, and embracing modernity without succumbing to its flawsβembodying that perfect balance of substance and refinement that defines the true gentleman. There is surely no need to abandon a carved palace in favor of a cave dwelling, or to trade a jade carriage for a primitive cart with solid wooden wheels.
Current path: usr/include/linux/
β Cloned to:
β¬οΈ Go up: /usr/include
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _VSOCKMON_H
#define _VSOCKMON_H
#include <linux/virtio_vsock.h>
/*
* vsockmon is the AF_VSOCK packet capture device. Packets captured have the
* following layout:
*
* +-----------------------------------+
* | vsockmon header |
* | (struct af_vsockmon_hdr) |
* +-----------------------------------+
* | transport header |
* | (af_vsockmon_hdr->len bytes long) |
* +-----------------------------------+
* | payload |
* | (until end of packet) |
* +-----------------------------------+
*
* The vsockmon header is a transport-independent description of the packet.
* It duplicates some of the information from the transport header so that
* no transport-specific knowledge is necessary to process packets.
*
* The transport header is useful for low-level transport-specific packet
* analysis. Transport type is given in af_vsockmon_hdr->transport and
* transport header length is given in af_vsockmon_hdr->len.
*
* If af_vsockmon_hdr->op is AF_VSOCK_OP_PAYLOAD then the payload follows the
* transport header. Other ops do not have a payload.
*/
struct af_vsockmon_hdr {
__le64 src_cid;
__le64 dst_cid;
__le32 src_port;
__le32 dst_port;
__le16 op; /* enum af_vsockmon_op */
__le16 transport; /* enum af_vsockmon_transport */
__le16 len; /* Transport header length */
__u8 reserved[2];
};
enum af_vsockmon_op {
AF_VSOCK_OP_UNKNOWN = 0,
AF_VSOCK_OP_CONNECT = 1,
AF_VSOCK_OP_DISCONNECT = 2,
AF_VSOCK_OP_CONTROL = 3,
AF_VSOCK_OP_PAYLOAD = 4,
};
enum af_vsockmon_transport {
AF_VSOCK_TRANSPORT_UNKNOWN = 0,
AF_VSOCK_TRANSPORT_NO_INFO = 1, /* No transport information */
/* Transport header type: struct virtio_vsock_hdr */
AF_VSOCK_TRANSPORT_VIRTIO = 2,
};
#endif