All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v4 00/11] For QEMU 2.5: Add a netfilter object and netbuffer filter
@ 2015-08-04  8:30 Yang Hongyang
  2015-08-04  8:30 ` [Qemu-devel] [PATCH v4 01/11] net: add a new object netfilter Yang Hongyang
                   ` (10 more replies)
  0 siblings, 11 replies; 37+ messages in thread
From: Yang Hongyang @ 2015-08-04  8:30 UTC (permalink / raw)
  To: qemu-devel
  Cc: thuth, zhang.zhanghailiang, lizhijian, jasowang, eddie.dong,
	mrhines, stefanha, Yang Hongyang

This patch add a new object netfilter, capture all network packets.
Also implement a netbuffer based on this object.
the "buffer" netfilter could be used by VM FT solutions like
MicroCheckpointing, to buffer/release packets. Or to simulate
packet delay.

You can also get the series from:
https://github.com/macrosheep/qemu/tree/netfilter-v4

Usage:
 -netdev tap,id=bn0
 -netfilter buffer,id=f0,netdev=bn0,chain=in,interval=1000
 -device e1000,netdev=bn0

dynamically add/remove netfilters:
 netfilter_add buffer,id=f0,netdev=bn0,chain=in,interval=1000
 netfilter_del f0

NOTE:
 interval's scale is microsecond.
 chain is optional, and is one of in|out|all, default is "all".
       "in" means this filter will receive packets sent to the @netdev
       "out" means this filter will receive packets sent from the @netdev
       "all" means this filter will receive packets both sent to/from
             the @netdev

TODO:
 - multiqueue support
 - dump

v4:
 - get rid of struct Filter
 - squash the 4th patch into patch 2
 - fix qemu_netfilter_pass_to_next_iov
 - get rid of bh (buffer filter)
 - release the packet to next filter instead of to receiver (buffer filter)

v3:
 - add an api to pass the packet to next filter
 - remove netfilters when delete netdev
 - add qtest testcases for netfilter
 - addressed comments from Jason

v2:
 - add a chain option to netfilter object
 - move the hook place earlier, before net_queue_send
 - drop the unused api in buffer filter
 - squash buffer filter patches into one
 - remove receive() api from netfilter, only receive_iov() is enough
 - addressed comments from Jason&Thomas

v1:
 initial patch.

Yang Hongyang (11):
  net: add a new object netfilter
  init/cleanup of netfilter object
  netfilter: add netfilter_{add|del} commands
  net: delete netfilter object when delete netdev
  netfilter: hook packets before net queue send
  netfilter: add an API to pass the packet to next filter
  net/queue: export qemu_net_queue_append_iov
  move out net queue structs define
  netfilter: add a netbuffer filter
  filter/buffer: update command description and help
  tests: add test cases for netfilter object

 hmp-commands.hx         |  30 +++++
 hmp.c                   |  29 +++++
 hmp.h                   |   4 +
 include/net/filter.h    |  69 ++++++++++++
 include/net/net.h       |   1 +
 include/net/queue.h     |  26 +++++
 include/qemu/typedefs.h |   1 +
 include/sysemu/sysemu.h |   1 +
 monitor.c               |  33 ++++++
 net/Makefile.objs       |   2 +
 net/filter-buffer.c     | 120 ++++++++++++++++++++
 net/filter.c            | 293 ++++++++++++++++++++++++++++++++++++++++++++++++
 net/filters.h           |  17 +++
 net/net.c               |  81 ++++++++++++-
 net/queue.c             |  31 +----
 qapi-schema.json        | 100 +++++++++++++++++
 qemu-options.hx         |   4 +
 qmp-commands.hx         |  57 ++++++++++
 tests/.gitignore        |   1 +
 tests/Makefile          |   2 +
 tests/test-netfilter.c  | 194 ++++++++++++++++++++++++++++++++
 vl.c                    |  13 +++
 22 files changed, 1083 insertions(+), 26 deletions(-)
 create mode 100644 include/net/filter.h
 create mode 100644 net/filter-buffer.c
 create mode 100644 net/filter.c
 create mode 100644 net/filters.h
 create mode 100644 tests/test-netfilter.c

-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

end of thread, other threads:[~2015-08-06  9:35 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-04  8:30 [Qemu-devel] [PATCH v4 00/11] For QEMU 2.5: Add a netfilter object and netbuffer filter Yang Hongyang
2015-08-04  8:30 ` [Qemu-devel] [PATCH v4 01/11] net: add a new object netfilter Yang Hongyang
2015-08-04  8:30 ` [Qemu-devel] [PATCH v4 02/11] init/cleanup of netfilter object Yang Hongyang
2015-08-06  7:07   ` Jason Wang
2015-08-06  7:22     ` Yang Hongyang
2015-08-06  7:29       ` Jason Wang
2015-08-06  7:35         ` Yang Hongyang
2015-08-06  7:43           ` Jason Wang
2015-08-06  7:50             ` Yang Hongyang
2015-08-06  7:53               ` Jason Wang
2015-08-04  8:30 ` [Qemu-devel] [PATCH v4 03/11] netfilter: add netfilter_{add|del} commands Yang Hongyang
2015-08-04  8:30 ` [Qemu-devel] [PATCH v4 04/11] net: delete netfilter object when delete netdev Yang Hongyang
2015-08-06  7:09   ` Jason Wang
2015-08-06  7:22     ` Yang Hongyang
2015-08-06  8:44     ` Yang Hongyang
2015-08-06  9:14       ` Jason Wang
2015-08-04  8:30 ` [Qemu-devel] [PATCH v4 05/11] netfilter: hook packets before net queue send Yang Hongyang
2015-08-06  7:13   ` Jason Wang
2015-08-06  7:28     ` Yang Hongyang
2015-08-06  7:37       ` Jason Wang
2015-08-06  7:58         ` Yang Hongyang
2015-08-04  8:30 ` [Qemu-devel] [PATCH v4 06/11] netfilter: add an API to pass the packet to next filter Yang Hongyang
2015-08-06  7:16   ` Jason Wang
2015-08-06  7:29     ` Yang Hongyang
2015-08-04  8:30 ` [Qemu-devel] [PATCH v4 07/11] net/queue: export qemu_net_queue_append_iov Yang Hongyang
2015-08-04  8:30 ` [Qemu-devel] [PATCH v4 08/11] move out net queue structs define Yang Hongyang
2015-08-04  8:30 ` [Qemu-devel] [PATCH v4 09/11] netfilter: add a netbuffer filter Yang Hongyang
2015-08-06  7:21   ` Jason Wang
2015-08-06  8:19     ` Yang Hongyang
2015-08-06  9:09       ` Jason Wang
2015-08-06  9:23         ` Yang Hongyang
2015-08-06  9:35           ` Jason Wang
2015-08-04  8:30 ` [Qemu-devel] [PATCH v4 10/11] filter/buffer: update command description and help Yang Hongyang
2015-08-06  7:22   ` Jason Wang
2015-08-06  7:31     ` Yang Hongyang
2015-08-06  7:39       ` Jason Wang
2015-08-04  8:30 ` [Qemu-devel] [PATCH v4 11/11] tests: add test cases for netfilter object Yang Hongyang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.