On Wed, May 26, 2021 at 10:54:19AM +0800, Zhang Chen wrote: > Since the real user scenario does not need COLO to monitor all traffic. > Add colo-passthrough-add and colo-passthrough-del to maintain > a COLO network passthrough list. Add IPFlowSpec struct for all QMP commands. > Except protocol field is necessary, other fields are optional.
That last sentence reads awkwardly, and I don't see a protocol field in the patch below. > > Signed-off-by: Zhang Chen <chen.zh...@intel.com> > --- > net/net.c | 10 ++++++++ > qapi/net.json | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 78 insertions(+) > > +++ b/qapi/net.json > @@ -7,6 +7,7 @@ > ## > > { 'include': 'common.json' } > +{ 'include': 'sockets.json' } > > ## > # @set_link: > @@ -694,3 +695,70 @@ > ## > { 'event': 'FAILOVER_NEGOTIATED', > 'data': {'device-id': 'str'} } > + > +## > +# @IPFlowSpec: > +# > +# IP flow specification. > +# > +# @protocol: Transport layer protocol like TCP/UDP... Why is this open-coded as 'str' instead of an enum? > +# > +# @object-name: Point out the IPflow spec effective range of object, > +# If there is no such part, it means global spec. > +# > +# @source: Source address and port. > +# > +# @destination: Destination address and port. > +# > +# Since: 6.1 > +## > +{ 'struct': 'IPFlowSpec', > + 'data': { '*protocol': 'str', '*object-name': 'str', > + '*source': 'InetSocketAddressBase', > + '*destination': 'InetSocketAddressBase' } } > + > +## > +# @colo-passthrough-add: > +# > +# Add passthrough entry according to user's needs in COLO-compare. > +# Source IP/port and destination IP/port both optional, If user just > +# input parts of infotmation, it will match all. information Grammar suggestion: The source and destination IP/ports are both optional; if the user only inputs part of the information, this will match all traffic. except I'm not sure if my rewrite conveys the actual intent. > +# > +# Returns: Nothing on success > +# > +# Since: 6.1 > +# > +# Example: > +# > +# -> { "execute": "colo-passthrough-add", > +# "arguments": { "protocol": "tcp", "object-name": "object0", > +# "source": {"host": "192.168.1.1", "port": "1234"}, > +# "destination": {"host": "192.168.1.2", "port": "4321"} } } > +# <- { "return": {} } > +# > +## > +{ 'command': 'colo-passthrough-add', 'boxed': true, > + 'data': 'IPFlowSpec' } > + > +## > +# @colo-passthrough-del: > +# > +# Delete passthrough entry according to user's needs in COLO-compare. > +# Source IP/port and destination IP/port both optional, If user just > +# input parts of infotmation, it will match all. Same problems as above. > +# > +# Returns: Nothing on success > +# > +# Since: 6.1 > +# > +# Example: > +# > +# -> { "execute": "colo-passthrough-del", > +# "arguments": { "protocol": "tcp", "object-name": "object0", > +# "source": {"host": "192.168.1.1", "port": "1234"}, > +# "destination": {"host": "192.168.1.2", "port": "4321"} } } > +# <- { "return": {} } > +# > +## > +{ 'command': 'colo-passthrough-del', 'boxed': true, > + 'data': 'IPFlowSpec' } > -- > 2.25.1 > -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org