qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v7 05/14] qapi: net: add stream and dgram netdevs


From: Laurent Vivier
Subject: Re: [PATCH v7 05/14] qapi: net: add stream and dgram netdevs
Date: Tue, 2 Aug 2022 11:39:10 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0

On 02/08/2022 10:37, Markus Armbruster wrote:
Laurent Vivier <lvivier@redhat.com> writes:

...
diff --git a/qemu-options.hx b/qemu-options.hx
index 79e00916a11f..170117e1adf0 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -2726,6 +2726,18 @@ DEF("netdev", HAS_ARG, QEMU_OPTION_netdev,
      "-netdev socket,id=str[,fd=h][,udp=host:port][,localaddr=host:port]\n"
      "                configure a network backend to connect to another 
network\n"
      "                using an UDP tunnel\n"
+    "-netdev 
stream,id=str[,server=on|off],addr.type=inet,addr.host=host,addr.port=port\n"
+    "-netdev stream,id=str[,server=on|off],addr.type=fd,addr.str=h\n"
+    "                configure a network backend to connect to another 
network\n"
+    "                using a socket connection in stream mode.\n"

From v6:
This part needs to match NetdevStreamOptions above.

Missing here: the optional members of InetSocketAddress: numeric, to,
ipv4, ...  Do we care?

At this patch level, no, because we decode them manually and not using socket_connect()/socket_listen(). But the doc should be updated for PATCH 13/14 as I move stream.c to QIO.


The next part needs to match NetdevDgramOptions above.


+    "-netdev 
dgram,id=str,remote.type=inet,remote.host=maddr,remote.port=port[,local.type=inet,local.host=addr]\n"
+    "-netdev 
dgram,id=str,remote.type=inet,remote.host=maddr,remote.port=port[,local.type=fd,local.str=h]\n"
+    "                configure a network backend to connect to a multicast maddr 
and port\n"
+    "                use ``local.host=addr`` to specify the host address to send 
packets from\n"

From v6:
I figure this covers table rows

   #    @remote         @local      |   okay?
   #    ----------------------------+--------
   #    multicast       absent      |   yes
   #    multicast       present     |   yes

for remote.type=inet and any local.type.

What about remote.type=fd?

multicast is only supported with remote.type=inet, not fd or unix

In net_dgram_init(), we initiate a multicast connection if remote.type is inet and address type is multicast, otherwise it's an unicast connection.

+    "-netdev 
dgram,id=str,local.type=inet,local.host=addr,local.port=port[,remote.type=inet,remote.host=addr,remote.port=port]\n"

From v6:
I figure this covers table rows

    #    absent          present     |   yes
    #    not multicast   present     |   yes

for *.type=inet.


+    "-netdev dgram,id=str,local.type=fd,local.str=h\n"
+    "                configure a network backend to connect to another 
network\n"
+    "                using an UDP tunnel\n"

From v6:
I figure this covers table row

   #    absent          present     |   yes

for local.type=fd.

Together, they cover table row

    #    absent          present     |   yes

for any local.type.  Good.

Table row

    #    not multicast   present     |   yes

is only covered for *.type=inet.  Could either of the types be fd?

In v7, I've update the table to include the case of fd:

    =============  ========  =====
    remote         local     okay?
    =============  ========  =====
    absent         absent    no
    absent         not fd    no
    absent         fd        yes
    multicast      absent    yes
    multicast      present   yes
    not multicast  absent    no
    not multicast  present   yes
    =============  ========  =====

For local, if it's not specified otherwise, fd is supported.
Remote and local type must be the same (inet or unix), if local is fd, remote must not be provided.

Thanks,
Laurent




reply via email to

[Prev in Thread] Current Thread [Next in Thread]