Hi Thomas, Jason, Stefan I'm reading the QEMU network subsystem and am thinking implement a network filter between network backend and NIC devices. All packets will pass by this filter, therefore, dump can be easily done with the filter.
+--------------+ +-------------+ +----------+ | filter | |frontend(NIC)| | real | | | | | | network <--+backend <-------+ | | backend | | peer +-------> peer | +----------+ +--------------+ +-------------+ The filter is actually a full featured network backend, either you can call this a transparent proxy. A prototype patch will be sent in reply to this mail. The patch tested with tap backend. I want your input about whether this is plausible or the design of this is completely wrong? Thank you in advance. On 07/13/2015 03:39 PM, Thomas Huth wrote:
The "-net dump" option only works with the "-net" option. So far, it is not possible to dump network traffic with the "-netdev" option yet. This patch series now fixes this ugliness by enabling dumping for the "-netdev" option, too. Unlike with the "-net dump" option, the "-netdev" parameter does not "abuse" the disliked internal vlan hub infrastructure to achieve this functionality. This patch series introduces a new, clean "dumpfile=xxx" option for the -netdev parameters instead. The patches are intended for QEMU version 2.5, but I'm sending them now already in case somebody got some spare minutes left for reviewing them again. Note: I did not address multiqueue devices yet (but added a TODO in the source code) ... I will address that later when the basic patches have been accepted. v2: - Restructured the code a little bit - Updated target QEMU version from 2.4. to 2.5 - Addressed review feedback from Jason, Stefan and Markus: - Use iov_copy() instead of copying the iov manually - Fix return value of net_dump_receive_iov() if fd is invalid - Use get_vhost_net() to detect vhost devices - Close the fd when netdev is deleted - Added some more comments in the source code Thomas Huth (5): net/dump: Add support for receive_iov function net/dump: Move DumpState into NetClientState net/dump: Rework net-dump init functions net/dump: Add dump option for netdev devices qemu options: Add information about dumpfile to help text include/net/net.h | 8 +++++ net/clients.h | 6 ++++ net/dump.c | 99 +++++++++++++++++++++++++++++++++++++++---------------- net/net.c | 38 ++++++++++++++++++++- qapi-schema.json | 12 +++++-- qemu-options.hx | 26 ++++++++++----- 6 files changed, 149 insertions(+), 40 deletions(-)
-- Thanks, Yang.