[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 13/14] filter-buffer: Add status_changed callback pro
From: |
Jason Wang |
Subject: |
[Qemu-devel] [PULL 13/14] filter-buffer: Add status_changed callback processing |
Date: |
Mon, 7 Mar 2016 11:12:59 +0800 |
From: zhanghailiang <address@hidden>
While the status of filter-buffer changing from 'on' to 'off',
it need to release all the buffered packets, and delete the related
timer, while switch from 'off' to 'on', it need to resume the release
packets timer.
Here, we extract the process of setup timer into a new helper,
which will be used in the new status_changed callback.
Signed-off-by: zhanghailiang <address@hidden>
Cc: Jason Wang <address@hidden>
Cc: Yang Hongyang <address@hidden>
Signed-off-by: Jason Wang <address@hidden>
---
net/filter-buffer.c | 34 ++++++++++++++++++++++++++++------
1 file changed, 28 insertions(+), 6 deletions(-)
diff --git a/net/filter-buffer.c b/net/filter-buffer.c
index 12ad2e3..972177b 100644
--- a/net/filter-buffer.c
+++ b/net/filter-buffer.c
@@ -100,6 +100,19 @@ static void filter_buffer_cleanup(NetFilterState *nf)
}
}
+static void filter_buffer_setup_timer(NetFilterState *nf)
+{
+ FilterBufferState *s = FILTER_BUFFER(nf);
+
+ if (s->interval) {
+ timer_init_us(&s->release_timer, QEMU_CLOCK_VIRTUAL,
+ filter_buffer_release_timer, nf);
+ /* Timer armed to fire in s->interval microseconds. */
+ timer_mod(&s->release_timer,
+ qemu_clock_get_us(QEMU_CLOCK_VIRTUAL) + s->interval);
+ }
+}
+
static void filter_buffer_setup(NetFilterState *nf, Error **errp)
{
FilterBufferState *s = FILTER_BUFFER(nf);
@@ -115,12 +128,20 @@ static void filter_buffer_setup(NetFilterState *nf, Error
**errp)
}
s->incoming_queue = qemu_new_net_queue(qemu_netfilter_pass_to_next, nf);
- if (s->interval) {
- timer_init_us(&s->release_timer, QEMU_CLOCK_VIRTUAL,
- filter_buffer_release_timer, nf);
- /* Timer armed to fire in s->interval microseconds. */
- timer_mod(&s->release_timer,
- qemu_clock_get_us(QEMU_CLOCK_VIRTUAL) + s->interval);
+ filter_buffer_setup_timer(nf);
+}
+
+static void filter_buffer_status_changed(NetFilterState *nf, Error **errp)
+{
+ FilterBufferState *s = FILTER_BUFFER(nf);
+
+ if (!nf->on) {
+ if (s->interval) {
+ timer_del(&s->release_timer);
+ }
+ filter_buffer_flush(nf);
+ } else {
+ filter_buffer_setup_timer(nf);
}
}
@@ -131,6 +152,7 @@ static void filter_buffer_class_init(ObjectClass *oc, void
*data)
nfc->setup = filter_buffer_setup;
nfc->cleanup = filter_buffer_cleanup;
nfc->receive_iov = filter_buffer_receive_iov;
+ nfc->status_changed = filter_buffer_status_changed;
}
static void filter_buffer_get_interval(Object *obj, Visitor *v,
--
2.5.0
- [Qemu-devel] [PULL 03/14] MAINTAINERS: Add entries for include/net/ files, (continued)
- [Qemu-devel] [PULL 03/14] MAINTAINERS: Add entries for include/net/ files, Jason Wang, 2016/03/06
- [Qemu-devel] [PULL 04/14] net: simplify net_init_tap_one logic, Jason Wang, 2016/03/06
- [Qemu-devel] [PULL 05/14] net/filter-mirror:Add filter-mirror, Jason Wang, 2016/03/06
- [Qemu-devel] [PULL 06/14] tests/test-filter-mirror:add filter-mirror unit test, Jason Wang, 2016/03/06
- [Qemu-devel] [PULL 07/14] net: netmap: probe netmap interface for virtio-net header, Jason Wang, 2016/03/06
- [Qemu-devel] [PULL 08/14] rocker: forbid to change world type, Jason Wang, 2016/03/06
- [Qemu-devel] [PULL 09/14] rocker: return -ENOMEM in case of some world alloc fails, Jason Wang, 2016/03/06
- [Qemu-devel] [PULL 10/14] rocker: add name field into WorldOps ale let world specify its name, Jason Wang, 2016/03/06
- [Qemu-devel] [PULL 11/14] rocker: allow user to specify rocker world by property, Jason Wang, 2016/03/06
- [Qemu-devel] [PULL 12/14] filter: Add 'status' property for filter object, Jason Wang, 2016/03/06
- [Qemu-devel] [PULL 13/14] filter-buffer: Add status_changed callback processing,
Jason Wang <=
- [Qemu-devel] [PULL 14/14] net: check packet payload length, Jason Wang, 2016/03/06
- Re: [Qemu-devel] [PULL 00/14] Net patches, Peter Maydell, 2016/03/07
- Re: [Qemu-devel] [PULL 00/14] Net patches, Jason Wang, 2016/03/08
- Re: [Qemu-devel] [PULL 00/14] Net patches, Wen Congyang, 2016/03/08
- Re: [Qemu-devel] [PULL 00/14] Net patches, Jason Wang, 2016/03/08
- Re: [Qemu-devel] [PULL 00/14] Net patches, Zhang Chen, 2016/03/08
- Re: [Qemu-devel] [PULL 00/14] Net patches, Wen Congyang, 2016/03/08
- Re: [Qemu-devel] [PULL 00/14] Net patches, Peter Maydell, 2016/03/08
- Re: [Qemu-devel] [PULL 00/14] Net patches, Wen Congyang, 2016/03/08
- Re: [Qemu-devel] [PULL 00/14] Net patches, Li Zhijian, 2016/03/08