forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.9 KiB
61 lines
1.9 KiB
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ |
|
#ifndef _UAPI_VSOCKMON_H |
|
#define _UAPI_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
|
|
|