[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH COLO-Frame v10 36/38] netfilter: Introduce an API to
From: |
zhanghailiang |
Subject: |
[Qemu-devel] [PATCH COLO-Frame v10 36/38] netfilter: Introduce an API to delete all the automatically added netfilters |
Date: |
Tue, 3 Nov 2015 19:56:54 +0800 |
We add a new property 'auto' for netfilter to distinguish if netfilter is
added by user or automatically added.
Signed-off-by: zhanghailiang <address@hidden>
Cc: Jason Wang <address@hidden>
---
v10: new patch
---
include/net/filter.h | 2 ++
net/filter-buffer.c | 17 +++++++++++++++++
net/filter.c | 15 +++++++++++++++
3 files changed, 34 insertions(+)
diff --git a/include/net/filter.h b/include/net/filter.h
index b0954ba..46d3ef9 100644
--- a/include/net/filter.h
+++ b/include/net/filter.h
@@ -55,6 +55,7 @@ struct NetFilterState {
char *netdev_id;
NetClientState *netdev;
NetFilterDirection direction;
+ bool auto_add;
char info_str[256];
QTAILQ_ENTRY(NetFilterState) next;
};
@@ -76,5 +77,6 @@ ssize_t qemu_netfilter_pass_to_next(NetClientState *sender,
void filter_buffer_release_all(void);
void filter_buffer_del_all_timers(void);
void qemu_auto_add_filter_buffer(NetFilterDirection direction, Error **errp);
+void qemu_auto_del_filter_buffer(Error **errp);
#endif /* QEMU_NET_FILTER_H */
diff --git a/net/filter-buffer.c b/net/filter-buffer.c
index 0dc1efb..ea4481c 100644
--- a/net/filter-buffer.c
+++ b/net/filter-buffer.c
@@ -19,6 +19,7 @@
#include "qapi/qmp-output-visitor.h"
#include "qapi/qmp-input-visitor.h"
#include "monitor/monitor.h"
+#include "qmp-commands.h"
#define TYPE_FILTER_BUFFER "filter-buffer"
@@ -269,6 +270,22 @@ void qemu_auto_add_filter_buffer(NetFilterDirection
direction, Error **errp)
g_free(queue);
}
+static void netdev_del_filter_buffer(NetFilterState *nf, void *opaque,
+ Error **errp)
+{
+ if (!strcmp(object_get_typename(OBJECT(nf)), TYPE_FILTER_BUFFER) &&
+ nf->auto_add) {
+ char *id = object_get_canonical_path_component(OBJECT(nf));
+
+ qmp_object_del(id, errp);
+ }
+}
+
+void qemu_auto_del_filter_buffer(Error **errp)
+{
+ qemu_foreach_netfilter(netdev_del_filter_buffer, NULL, errp);
+}
+
static void filter_buffer_init(Object *obj)
{
object_property_add(obj, "interval", "int",
diff --git a/net/filter.c b/net/filter.c
index 326f2b5..dcbcb80 100644
--- a/net/filter.c
+++ b/net/filter.c
@@ -117,6 +117,18 @@ static void netfilter_set_direction(Object *obj, int
direction, Error **errp)
nf->direction = direction;
}
+static bool netfilter_get_auto_flag(Object *obj, Error **errp)
+{
+ NetFilterState *nf = NETFILTER(obj);
+ return nf->auto_add;
+}
+
+static void netfilter_set_auto_flag(Object *obj, bool flag, Error **errp)
+{
+ NetFilterState *nf = NETFILTER(obj);
+ nf->auto_add = flag;
+}
+
static void netfilter_init(Object *obj)
{
object_property_add_str(obj, "netdev",
@@ -126,6 +138,9 @@ static void netfilter_init(Object *obj)
NetFilterDirection_lookup,
netfilter_get_direction, netfilter_set_direction,
NULL);
+ object_property_add_bool(obj, "auto",
+ netfilter_get_auto_flag, netfilter_set_auto_flag,
+ NULL);
}
static void netfilter_complete(UserCreatable *uc, Error **errp)
--
1.8.3.1
- [Qemu-devel] [PATCH COLO-Frame v10 30/38] COLO: Separate the process of saving/loading ram and device state, (continued)
- [Qemu-devel] [PATCH COLO-Frame v10 30/38] COLO: Separate the process of saving/loading ram and device state, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 27/38] COLO: Process shutdown command for VM in COLO state, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 38/38] COLO: Add block replication into colo process, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 34/38] filter-buffer: Accept zero interval, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 05/38] migration: Integrate COLO checkpoint process into migration, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 36/38] netfilter: Introduce an API to delete all the automatically added netfilters,
zhanghailiang <=
- [Qemu-devel] [PATCH COLO-Frame v10 06/38] migration: Integrate COLO checkpoint process into loadvm, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 31/38] COLO: Split qemu_savevm_state_begin out of checkpoint process, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 08/38] COLO/migration: establish a new communication path from destination to source, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 16/38] COLO: Flush PVM's cached RAM into SVM's memory, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 13/38] COLO: Load PVM's dirty pages into SVM's RAM cache temporarily, zhanghailiang, 2015/11/03