diff options
author | Zhang Chen <zhangchen.fnst@cn.fujitsu.com> | 2017-07-04 14:53:49 +0800 |
---|---|---|
committer | Jason Wang <jasowang@redhat.com> | 2017-07-17 20:13:47 +0800 |
commit | 00d5c2406bceb2eb5b77b47948311bf3ef8653a7 (patch) | |
tree | cd36d12002f1f8ce0a38f57a003d589af7563437 /net | |
parent | e2521f0e038e912bc8d3747813c3e6dffd9a2eaf (diff) |
net/filter-mirror.c: Add new option to enable vnet support for filter-redirector
We add the vnet_hdr_support option for filter-redirector, default is disabled.
If you use virtio-net-pci net driver or other driver needs vnet_hdr, please enable it.
Because colo-compare or other modules needs the vnet_hdr_len to parse
packet, we add this new option send the len to others.
You can use it for example:
-object filter-redirector,id=r0,netdev=hn0,queue=tx,outdev=red0,vnet_hdr_support
Signed-off-by: Zhang Chen <zhangchen.fnst@cn.fujitsu.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/filter-mirror.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/net/filter-mirror.c b/net/filter-mirror.c index 32ecdb3050..90e2c92337 100644 --- a/net/filter-mirror.c +++ b/net/filter-mirror.c @@ -368,6 +368,22 @@ static void filter_redirector_set_outdev(Object *obj, s->outdev = g_strdup(value); } +static bool filter_redirector_get_vnet_hdr(Object *obj, Error **errp) +{ + MirrorState *s = FILTER_REDIRECTOR(obj); + + return s->vnet_hdr; +} + +static void filter_redirector_set_vnet_hdr(Object *obj, + bool value, + Error **errp) +{ + MirrorState *s = FILTER_REDIRECTOR(obj); + + s->vnet_hdr = value; +} + static void filter_mirror_init(Object *obj) { MirrorState *s = FILTER_MIRROR(obj); @@ -383,10 +399,17 @@ static void filter_mirror_init(Object *obj) static void filter_redirector_init(Object *obj) { + MirrorState *s = FILTER_REDIRECTOR(obj); + object_property_add_str(obj, "indev", filter_redirector_get_indev, filter_redirector_set_indev, NULL); object_property_add_str(obj, "outdev", filter_redirector_get_outdev, filter_redirector_set_outdev, NULL); + + s->vnet_hdr = false; + object_property_add_bool(obj, "vnet_hdr_support", + filter_redirector_get_vnet_hdr, + filter_redirector_set_vnet_hdr, NULL); } static void filter_mirror_fini(Object *obj) |