"Zhang, Chen" <chen.zh...@intel.com> writes: >> -----Original Message----- >> From: Markus Armbruster <arm...@redhat.com> >> Sent: Friday, March 19, 2021 11:48 PM >> To: Zhang, Chen <chen.zh...@intel.com> >> Cc: Jason Wang <jasow...@redhat.com>; qemu-dev <qemu- >> de...@nongnu.org>; Eric Blake <ebl...@redhat.com>; Dr. David Alan >> Gilbert <dgilb...@redhat.com>; Markus Armbruster <arm...@redhat.com>; >> Li Zhijian <lizhij...@cn.fujitsu.com>; Lukas Straub <lukasstra...@web.de>; >> Zhang Chen <zhangc...@gmail.com> >> Subject: Re: [PATCH V4 2/7] qapi/net.json: Add L4_Connection definition >> >> Zhang Chen <chen.zh...@intel.com> writes: >> >> > Add L4_Connection struct for other QMP commands. >> > Except protocol field is necessary, other fields are optional. >> > >> > Signed-off-by: Zhang Chen <chen.zh...@intel.com> >> > --- >> > qapi/net.json | 26 ++++++++++++++++++++++++++ >> > 1 file changed, 26 insertions(+) >> > >> > diff --git a/qapi/net.json b/qapi/net.json index >> > 498ea7aa72..cd4a8ed95e 100644 >> > --- a/qapi/net.json >> > +++ b/qapi/net.json >> > @@ -825,3 +825,29 @@ >> > { 'enum': 'IP_PROTOCOL', 'data': [ 'tcp', 'udp', 'dccp', 'sctp', >> > 'udplite', >> > 'icmp', 'igmp', 'ipv6' ] } >> > >> > +## >> > +# @L4_Connection: >> > +# >> > +# Layer 4 network connection. >> > +# >> > +# Just for IPv4. >> > +# >> > +# @protocol: Transport layer protocol like TCP/UDP... >> > +# >> > +# @id: For specific module with Qemu object ID, If there is no such part, >> > +# it means global rules. >> >> Clear as mud. > > Sorry, let me re-clear it. > If I understand correctly, The ID shouldn't be here, but I found the 'boxed' > flag just can add only one 'data' like this: > +## > +{ 'command': 'colo-passthrough-add', 'boxed': true, > + 'data': 'L4_Connection' } > > I original want to this: > +## > +{ 'command': 'colo-passthrough-add', > + 'data': { 'id': 'str', 'boxed': false, 'conn': 'L4_Connection', > 'boxed': true } > > So, I add the @id as an optional argument here. > > rewrite the comments: > +# @id: Assign the rule to Qemu network handle module object ID. Like > colo-compare, net-filter. > > Please see the ID details in patch3 too.
So, colo-passthrough-add takes an @id argument (to be tacked onto packets to help with further processing, I understand), and arguments to match packets. Naming the argument type L4_Connection is misleading. Even naming the match arguments L4_Connection would be misleading. "Connection" has a specific meaning in networking. There are TCP connections. There is no such thing as an UDP connection. A TCP connection is uniquely identified by a pair of endpoints, i.e. by source address, source port, destination address, destination port. Same for other connection-oriented protocols. The protocol is not part of the connection. Thus, L4_Connection would be misleading even for the connection-oriented case. You need a named type for colo-passthrough-add's argument because you share it with colo-passthrough-del. I'm not sure that's what we want (I'm going to write more on that in a moment). If it is what we want, then please pick a another, descriptive name.