2 * QTest testcase for netfilter
4 * Copyright (c) 2015 FUJITSU LIMITED
7 * This work is licensed under the terms of the GNU GPL, version 2 or
8 * later. See the COPYING file in the top-level directory.
11 #include "qemu/osdep.h"
14 /* add a netfilter to a netdev and then remove it */
15 static void add_one_netfilter(void)
19 response = qmp("{'execute': 'object-add',"
21 " 'qom-type': 'filter-buffer',"
24 " 'netdev': 'qtest-bn0',"
30 g_assert(!qdict_haskey(response, "error"));
33 response = qmp("{'execute': 'object-del',"
38 g_assert(!qdict_haskey(response, "error"));
42 /* add a netfilter to a netdev and then remove the netdev */
43 static void remove_netdev_with_one_netfilter(void)
47 response = qmp("{'execute': 'object-add',"
49 " 'qom-type': 'filter-buffer',"
52 " 'netdev': 'qtest-bn0',"
58 g_assert(!qdict_haskey(response, "error"));
61 response = qmp("{'execute': 'netdev_del',"
66 g_assert(!qdict_haskey(response, "error"));
69 /* add back the netdev */
70 response = qmp("{'execute': 'netdev_add',"
76 g_assert(!qdict_haskey(response, "error"));
80 /* add multi(2) netfilters to a netdev and then remove them */
81 static void add_multi_netfilter(void)
85 response = qmp("{'execute': 'object-add',"
87 " 'qom-type': 'filter-buffer',"
90 " 'netdev': 'qtest-bn0',"
96 g_assert(!qdict_haskey(response, "error"));
99 response = qmp("{'execute': 'object-add',"
101 " 'qom-type': 'filter-buffer',"
104 " 'netdev': 'qtest-bn0',"
110 g_assert(!qdict_haskey(response, "error"));
113 response = qmp("{'execute': 'object-del',"
118 g_assert(!qdict_haskey(response, "error"));
121 response = qmp("{'execute': 'object-del',"
126 g_assert(!qdict_haskey(response, "error"));
130 /* add multi(2) netfilters to a netdev and then remove the netdev */
131 static void remove_netdev_with_multi_netfilter(void)
135 response = qmp("{'execute': 'object-add',"
137 " 'qom-type': 'filter-buffer',"
140 " 'netdev': 'qtest-bn0',"
146 g_assert(!qdict_haskey(response, "error"));
149 response = qmp("{'execute': 'object-add',"
151 " 'qom-type': 'filter-buffer',"
154 " 'netdev': 'qtest-bn0',"
160 g_assert(!qdict_haskey(response, "error"));
163 response = qmp("{'execute': 'netdev_del',"
168 g_assert(!qdict_haskey(response, "error"));
171 /* add back the netdev */
172 response = qmp("{'execute': 'netdev_add',"
178 g_assert(!qdict_haskey(response, "error"));
182 int main(int argc, char **argv)
186 g_test_init(&argc, &argv, NULL);
187 qtest_add_func("/netfilter/addremove_one", add_one_netfilter);
188 qtest_add_func("/netfilter/remove_netdev_one",
189 remove_netdev_with_one_netfilter);
190 qtest_add_func("/netfilter/addremove_multi", add_multi_netfilter);
191 qtest_add_func("/netfilter/remove_netdev_multi",
192 remove_netdev_with_multi_netfilter);
194 qtest_start("-netdev user,id=qtest-bn0 -device e1000,netdev=qtest-bn0");