Re: [PATCH net-next v3 1/4] vm_sockets: Add flags field in the vsock address data structure

From: Stefano Garzarella
Date: Fri Dec 11 2020 - 10:24:25 EST


On Fri, Dec 11, 2020 at 12:32:38PM +0200, Andra Paraschiv wrote:
vsock enables communication between virtual machines and the host they
are running on. With the multi transport support (guest->host and
host->guest), nested VMs can also use vsock channels for communication.

In addition to this, by default, all the vsock packets are forwarded to
the host, if no host->guest transport is loaded. This behavior can be
implicitly used for enabling vsock communication between sibling VMs.

Add a flags field in the vsock address data structure that can be used
to explicitly mark the vsock connection as being targeted for a certain
type of communication. This way, can distinguish between different use
cases such as nested VMs and sibling VMs.

This field can be set when initializing the vsock address variable used
for the connect() call.

Changelog

v2 -> v3

* Add "svm_flags" as a new field, not reusing "svm_reserved1".

Using the previous 'svn_zero[0]' for the new 'svn_flags' field make sure that if an application sets a flag and runs on an older kernel, it will receive an error and I think it's perfect, since that kernel is not able to handle the flag.

So I think is okay and I confirm my R-b tag ;-)


v1 -> v2

* Update the field name to "svm_flags".
* Split the current patch in 2 patches.

Signed-off-by: Andra Paraschiv <andraprs@xxxxxxxxxx>
Reviewed-by: Stefano Garzarella <sgarzare@xxxxxxxxxx>
---
include/uapi/linux/vm_sockets.h | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/include/uapi/linux/vm_sockets.h b/include/uapi/linux/vm_sockets.h
index fd0ed7221645d..619f8e9d55ca4 100644
--- a/include/uapi/linux/vm_sockets.h
+++ b/include/uapi/linux/vm_sockets.h
@@ -148,10 +148,13 @@ struct sockaddr_vm {
unsigned short svm_reserved1;
unsigned int svm_port;
unsigned int svm_cid;
+ unsigned short svm_flags;
unsigned char svm_zero[sizeof(struct sockaddr) -
sizeof(sa_family_t) -
sizeof(unsigned short) -
- sizeof(unsigned int) - sizeof(unsigned int)];
+ sizeof(unsigned int) -
+ sizeof(unsigned int) -
+ sizeof(unsigned short)];
};

#define IOCTL_VM_SOCKETS_GET_LOCAL_CID _IO(7, 0xb9)
--
2.20.1 (Apple Git-117)




Amazon Development Center (Romania) S.R.L. registered office: 27A Sf. Lazar Street, UBC5, floor 2, Iasi, Iasi County, 700045, Romania. Registered in Romania. Registration number J22/2621/2005.