diff mbox series

[v8,12/14] qemu-sockets: update socket_uri() and socket_parse() to be consistent

Message ID 20220913064000.79353-13-lvivier@redhat.com (mailing list archive)
State New, archived
Headers show
Series qapi: net: add unix socket type support to netdev backend | expand

Commit Message

Laurent Vivier Sept. 13, 2022, 6:39 a.m. UTC
To be consistent with socket_uri(), add 'tcp:' prefix for inet type in
socket_parse(), by default socket_parse() use tcp when no prefix is
provided (format is host:port).

In socket_uri(), use 'vsock:' prefix for vsock type rather than 'tcp:'
because it makes a vsock address look like an inet address with CID
misinterpreted as host.
Goes back to commit 9aca82ba31 "migration: Create socket-address parameter"

Signed-off-by: Laurent Vivier <lvivier@redhat.com>
---
 util/qemu-sockets.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Dr. David Alan Gilbert Sept. 14, 2022, 7:06 p.m. UTC | #1
* Laurent Vivier (lvivier@redhat.com) wrote:
> To be consistent with socket_uri(), add 'tcp:' prefix for inet type in
> socket_parse(), by default socket_parse() use tcp when no prefix is
> provided (format is host:port).
> 
> In socket_uri(), use 'vsock:' prefix for vsock type rather than 'tcp:'
> because it makes a vsock address look like an inet address with CID
> misinterpreted as host.
> Goes back to commit 9aca82ba31 "migration: Create socket-address parameter"
> 
> Signed-off-by: Laurent Vivier <lvivier@redhat.com>

Yeh I think that's safer than the last version for migrate URIs

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> ---
>  util/qemu-sockets.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
> index 9f6f655fd526..a9926af714c4 100644
> --- a/util/qemu-sockets.c
> +++ b/util/qemu-sockets.c
> @@ -1090,7 +1090,7 @@ char *socket_uri(SocketAddress *addr)
>      case SOCKET_ADDRESS_TYPE_FD:
>          return g_strdup_printf("fd:%s", addr->u.fd.str);
>      case SOCKET_ADDRESS_TYPE_VSOCK:
> -        return g_strdup_printf("tcp:%s:%s",
> +        return g_strdup_printf("vsock:%s:%s",
>                                 addr->u.vsock.cid,
>                                 addr->u.vsock.port);
>      default:
> @@ -1124,6 +1124,11 @@ SocketAddress *socket_parse(const char *str, Error **errp)
>          if (vsock_parse(&addr->u.vsock, str + strlen("vsock:"), errp)) {
>              goto fail;
>          }
> +    } else if (strstart(str, "tcp:", NULL)) {
> +        addr->type = SOCKET_ADDRESS_TYPE_INET;
> +        if (inet_parse(&addr->u.inet, str + strlen("tcp:"), errp)) {
> +            goto fail;
> +        }
>      } else {
>          addr->type = SOCKET_ADDRESS_TYPE_INET;
>          if (inet_parse(&addr->u.inet, str, errp)) {
> -- 
> 2.37.3
>
Markus Armbruster Sept. 21, 2022, 3:01 p.m. UTC | #2
Laurent Vivier <lvivier@redhat.com> writes:

> To be consistent with socket_uri(), add 'tcp:' prefix for inet type in
> socket_parse(), by default socket_parse() use tcp when no prefix is
> provided (format is host:port).
>
> In socket_uri(), use 'vsock:' prefix for vsock type rather than 'tcp:'
> because it makes a vsock address look like an inet address with CID
> misinterpreted as host.
> Goes back to commit 9aca82ba31 "migration: Create socket-address parameter"
>
> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
> ---
>  util/qemu-sockets.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
> index 9f6f655fd526..a9926af714c4 100644
> --- a/util/qemu-sockets.c
> +++ b/util/qemu-sockets.c
> @@ -1090,7 +1090,7 @@ char *socket_uri(SocketAddress *addr)
>      case SOCKET_ADDRESS_TYPE_FD:
>          return g_strdup_printf("fd:%s", addr->u.fd.str);
>      case SOCKET_ADDRESS_TYPE_VSOCK:
> -        return g_strdup_printf("tcp:%s:%s",
> +        return g_strdup_printf("vsock:%s:%s",
>                                 addr->u.vsock.cid,
>                                 addr->u.vsock.port);
>      default:
> @@ -1124,6 +1124,11 @@ SocketAddress *socket_parse(const char *str, Error **errp)
>          if (vsock_parse(&addr->u.vsock, str + strlen("vsock:"), errp)) {
>              goto fail;
>          }
> +    } else if (strstart(str, "tcp:", NULL)) {
> +        addr->type = SOCKET_ADDRESS_TYPE_INET;
> +        if (inet_parse(&addr->u.inet, str + strlen("tcp:"), errp)) {
> +            goto fail;
> +        }
>      } else {
>          addr->type = SOCKET_ADDRESS_TYPE_INET;
>          if (inet_parse(&addr->u.inet, str, errp)) {

I'd be tempted to split this patch, but I'm a compulsive patch splitter
;)

Reviewed-by: Markus Armbruster <armbru@redhat.com>
diff mbox series

Patch

diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index 9f6f655fd526..a9926af714c4 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -1090,7 +1090,7 @@  char *socket_uri(SocketAddress *addr)
     case SOCKET_ADDRESS_TYPE_FD:
         return g_strdup_printf("fd:%s", addr->u.fd.str);
     case SOCKET_ADDRESS_TYPE_VSOCK:
-        return g_strdup_printf("tcp:%s:%s",
+        return g_strdup_printf("vsock:%s:%s",
                                addr->u.vsock.cid,
                                addr->u.vsock.port);
     default:
@@ -1124,6 +1124,11 @@  SocketAddress *socket_parse(const char *str, Error **errp)
         if (vsock_parse(&addr->u.vsock, str + strlen("vsock:"), errp)) {
             goto fail;
         }
+    } else if (strstart(str, "tcp:", NULL)) {
+        addr->type = SOCKET_ADDRESS_TYPE_INET;
+        if (inet_parse(&addr->u.inet, str + strlen("tcp:"), errp)) {
+            goto fail;
+        }
     } else {
         addr->type = SOCKET_ADDRESS_TYPE_INET;
         if (inet_parse(&addr->u.inet, str, errp)) {