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>
This commit is contained in:
Zhang Chen
2017-07-04 14:53:49 +08:00
committed by Jason Wang
parent e2521f0e03
commit 00d5c2406b
2 changed files with 26 additions and 3 deletions

View File

@ -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)