VSOCK: transport-specific vsock_transport functions
authorStefan Hajnoczi <stefanha@redhat.com>
Thu, 28 Jul 2016 14:36:30 +0000 (15:36 +0100)
committerMichael S. Tsirkin <mst@redhat.com>
Mon, 1 Aug 2016 23:57:28 +0000 (02:57 +0300)
struct vsock_transport contains function pointers called by AF_VSOCK
core code.  The transport may want its own transport-specific function
pointers and they can be added after struct vsock_transport.

Allow the transport to fetch vsock_transport.  It can downcast it to
access transport-specific function pointers.

The virtio transport will use this.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
include/net/af_vsock.h
net/vmw_vsock/af_vsock.c

index e9eb2d6..23f5525 100644 (file)
@@ -165,6 +165,9 @@ static inline int vsock_core_init(const struct vsock_transport *t)
 }
 void vsock_core_exit(void);
 
+/* The transport may downcast this to access transport-specific functions */
+const struct vsock_transport *vsock_core_get_transport(void);
+
 /**** UTILS ****/
 
 void vsock_release_pending(struct sock *pending);
index b96ac91..e34d96f 100644 (file)
@@ -1995,6 +1995,15 @@ void vsock_core_exit(void)
 }
 EXPORT_SYMBOL_GPL(vsock_core_exit);
 
+const struct vsock_transport *vsock_core_get_transport(void)
+{
+       /* vsock_register_mutex not taken since only the transport uses this
+        * function and only while registered.
+        */
+       return transport;
+}
+EXPORT_SYMBOL_GPL(vsock_core_get_transport);
+
 MODULE_AUTHOR("VMware, Inc.");
 MODULE_DESCRIPTION("VMware Virtual Socket Family");
 MODULE_VERSION("1.0.1.0-k");