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