]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - net/vmw_vsock/af_vsock.c
vsock: add vsock_create_connected() called by transports
[linux.git] / net / vmw_vsock / af_vsock.c
index 11b88094e3b2890e0150a31a7ad9b5b24a1195e8..7c11ac1bc5427019cf632020cf5ac98dd31bb66d 100644 (file)
@@ -567,12 +567,12 @@ static int __vsock_bind(struct sock *sk, struct sockaddr_vm *addr)
 
 static void vsock_connect_timeout(struct work_struct *work);
 
-struct sock *__vsock_create(struct net *net,
-                           struct socket *sock,
-                           struct sock *parent,
-                           gfp_t priority,
-                           unsigned short type,
-                           int kern)
+static struct sock *__vsock_create(struct net *net,
+                                  struct socket *sock,
+                                  struct sock *parent,
+                                  gfp_t priority,
+                                  unsigned short type,
+                                  int kern)
 {
        struct sock *sk;
        struct vsock_sock *psk;
@@ -639,7 +639,6 @@ struct sock *__vsock_create(struct net *net,
 
        return sk;
 }
-EXPORT_SYMBOL_GPL(__vsock_create);
 
 static void __vsock_release(struct sock *sk, int level)
 {
@@ -703,6 +702,13 @@ static int vsock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
        return err;
 }
 
+struct sock *vsock_create_connected(struct sock *parent)
+{
+       return __vsock_create(sock_net(parent), NULL, parent, GFP_KERNEL,
+                             parent->sk_type, 0);
+}
+EXPORT_SYMBOL_GPL(vsock_create_connected);
+
 s64 vsock_stream_has_data(struct vsock_sock *vsk)
 {
        return vsk->transport->stream_has_data(vsk);