On Wed, May 10, 2017 at 3:38 PM, Stefan Hajnoczi <stefa...@gmail.com> wrote: > Hi, > Gerard Garcia previously requested a linktype for AF_VSOCK in July 2016 > (http://seclists.org/tcpdump/2016/q3/17). I am picking up his work now > that the vsockmon Linux kernel module has been merged upstream. The > header files and struct definitions are available as part of the Linux > kernel headers. > > AF_VSOCK is a guest<->host communications mechanism available in VMware > and KVM hypervisors. It is not based on Ethernet or IP but offers > SOCK_STREAM and SOCK_DGRAM (only on VMware) semantics analogous to TCP > and UDP. > > The vsockmon packet capture headers are here: > > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/vsockmon.h > > The virtio-vsock transport headers are here: > > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/virtio_vsock.h > > For your convenience I have included a full header description below > based on a draft previously posted by Guy Harris. > > You can find more information about virtio-vsock and how to try it out > at http://qemu-project.org/Features/VirtioVsock. > > Please assign a linktype for AF_VSOCK.
Ping? > > Thanks, > Stefan > > --- > Vsockmon packet structure > > +---------------------------+ > | Source CID | > | (8 Octets) | > +---------------------------+ > | Destination CID | > | (8 Octets) | > +---------------------------+ > | Source port | > | (4 Octets) | > +---------------------------+ > | Destination port | > | (4 Octets) | > +---------------------------+ > | Operation | > | (2 Octets) | > +---------------------------+ > | Transport header type | > | (2 Octets) | > +---------------------------+ > | Transport header length | > | (2 Octets) | > +---------------------------+ > | Transport header | > . . > . . > . . > +---------------------------+ > | Payload | > . . > . . > . . > > > Description > > The source and destination CID fields are in little-endian byte order; > they identify the source and destination vsock devices. > > The source and destination port fields are in little-endian byte order; > they identify a connection or datagram flow between the source and > destination devices. > > The operation field is in little-endian byte order; it contains a value > that is one of: > > * 1, for a connect operation; > * 2, for a disconnect operation; > * 3, for a control operation; > * 4, for a data transfer operation. > > The transport header type field is in little-endian byte order; it > contains a value that is one of: > > * 1, if there is no transport header information; > * 2, if there is a virtio transport header. > > The transport header length field is in little-endian byte order; it > indicates how many bytes of transport header follow the length field. > It may be non-zero even if the transport header type field has a value > of 1; in that case, the bytes for the transport header should be > skipped. > > If the transport header type field has a value of 2, the transport > header is a virtio transport header as described below. High-level > information about the packet is available in the vsockmon packet header > so parsing the transport header is only necessary for low-level packet > analysis. This allows applications to process packet captures even when > the transport header type is unknown. > > For packets with an operation field with a value of 4, the payload > follows the transport header. > > Virtio transport header structure > > +---------------------------+ > | Source CID | > | (8 Octets) | > +---------------------------+ > | Destination CID | > | (8 Octets) | > +---------------------------+ > | Source port | > | (4 Octets) | > +---------------------------+ > | Destination port | > | (4 Octets) | > +---------------------------+ > | Payload length | > | (4 Octets) | > +---------------------------+ > | Socket type | > | (2 Octets) | > +---------------------------+ > | Operation | > | (2 Octets) | > +---------------------------+ > | Flags | > | (4 Octets) | > +---------------------------+ > | Available Space | > | (4 Octets) | > +---------------------------+ > | Receive Counter | > | (4 Octets) | > +---------------------------+ > > Description > > The source and destination CID fields are in little-endian byte order; > they identify the source and destination vsock devices. > > The source and destination port fields are in little-endian byte order; > they identify a connection or datagram flow between the source and > destination devices. > > The payload length field is in little-endian byte order; it indicates > how many bytes of data comprise the payload. > > The socket type field is in little-endian byte order; it contains a > value that is one of: > > * 1, for a connection-oriented, in-order, reliable stream > > The operation field is in little-endian byte order; it contains a value > that is one of: > > * 1, for a connection request > * 2, for a connection response > * 3, for a connection reset > * 4, for a connection shutdown > * 5, for a data packet > * 6, for a credit update > * 7, for a credit update request > > The flags field is in little-endian byte order; its meaning depends on > the operation field value. If the operation is a connection shutdown > then bit 0 indicates that no more data will be received and bit 1 > indicates that no more data will be sent. > > The available space field is in little-endian byte order; it indicates > how many bytes of payload data can be received without risk of dropping > packets. > > The receive counter field is in little-endian byte order; it indicates > how many bytes of payload data have been received. _______________________________________________ tcpdump-workers mailing list tcpdump-workers@lists.tcpdump.org https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers