Message ID | 20230413-b4-vsock-dgram-v4-2-0cebbb2ae899@bytedance.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | virtio/vsock: support datagrams | expand |
On Sat, Jun 10, 2023 at 12:58:29AM +0000, Bobby Eshleman wrote: >Introduce new reusable function vsock_connectible_lookup_transport() >that performs the transport lookup logic. > >No functional change intended. > >Signed-off-by: Bobby Eshleman <bobby.eshleman@bytedance.com> >--- > net/vmw_vsock/af_vsock.c | 25 ++++++++++++++++++------- > 1 file changed, 18 insertions(+), 7 deletions(-) Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> > >diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c >index ffb4dd8b6ea7..74358f0b47fa 100644 >--- a/net/vmw_vsock/af_vsock.c >+++ b/net/vmw_vsock/af_vsock.c >@@ -422,6 +422,22 @@ static void vsock_deassign_transport(struct vsock_sock *vsk) > vsk->transport = NULL; > } > >+static const struct vsock_transport * >+vsock_connectible_lookup_transport(unsigned int cid, __u8 flags) >+{ >+ const struct vsock_transport *transport; >+ >+ if (vsock_use_local_transport(cid)) >+ transport = transport_local; >+ else if (cid <= VMADDR_CID_HOST || !transport_h2g || >+ (flags & VMADDR_FLAG_TO_HOST)) >+ transport = transport_g2h; >+ else >+ transport = transport_h2g; >+ >+ return transport; >+} >+ > /* Assign a transport to a socket and call the .init transport callback. > * > * Note: for connection oriented socket this must be called when vsk->remote_addr >@@ -462,13 +478,8 @@ int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk) > break; > case SOCK_STREAM: > case SOCK_SEQPACKET: >- if (vsock_use_local_transport(remote_cid)) >- new_transport = transport_local; >- else if (remote_cid <= VMADDR_CID_HOST || !transport_h2g || >- (remote_flags & VMADDR_FLAG_TO_HOST)) >- new_transport = transport_g2h; >- else >- new_transport = transport_h2g; >+ new_transport = vsock_connectible_lookup_transport(remote_cid, >+ remote_flags); > break; > default: > return -ESOCKTNOSUPPORT; > >-- >2.30.2 >
diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index ffb4dd8b6ea7..74358f0b47fa 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -422,6 +422,22 @@ static void vsock_deassign_transport(struct vsock_sock *vsk) vsk->transport = NULL; } +static const struct vsock_transport * +vsock_connectible_lookup_transport(unsigned int cid, __u8 flags) +{ + const struct vsock_transport *transport; + + if (vsock_use_local_transport(cid)) + transport = transport_local; + else if (cid <= VMADDR_CID_HOST || !transport_h2g || + (flags & VMADDR_FLAG_TO_HOST)) + transport = transport_g2h; + else + transport = transport_h2g; + + return transport; +} + /* Assign a transport to a socket and call the .init transport callback. * * Note: for connection oriented socket this must be called when vsk->remote_addr @@ -462,13 +478,8 @@ int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk) break; case SOCK_STREAM: case SOCK_SEQPACKET: - if (vsock_use_local_transport(remote_cid)) - new_transport = transport_local; - else if (remote_cid <= VMADDR_CID_HOST || !transport_h2g || - (remote_flags & VMADDR_FLAG_TO_HOST)) - new_transport = transport_g2h; - else - new_transport = transport_h2g; + new_transport = vsock_connectible_lookup_transport(remote_cid, + remote_flags); break; default: return -ESOCKTNOSUPPORT;
Introduce new reusable function vsock_connectible_lookup_transport() that performs the transport lookup logic. No functional change intended. Signed-off-by: Bobby Eshleman <bobby.eshleman@bytedance.com> --- net/vmw_vsock/af_vsock.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-)