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:
parent
e2521f0e03
commit
00d5c2406b
@ -368,6 +368,22 @@ static void filter_redirector_set_outdev(Object *obj,
|
|||||||
s->outdev = g_strdup(value);
|
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)
|
static void filter_mirror_init(Object *obj)
|
||||||
{
|
{
|
||||||
MirrorState *s = FILTER_MIRROR(obj);
|
MirrorState *s = FILTER_MIRROR(obj);
|
||||||
@ -383,10 +399,17 @@ static void filter_mirror_init(Object *obj)
|
|||||||
|
|
||||||
static void filter_redirector_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,
|
object_property_add_str(obj, "indev", filter_redirector_get_indev,
|
||||||
filter_redirector_set_indev, NULL);
|
filter_redirector_set_indev, NULL);
|
||||||
object_property_add_str(obj, "outdev", filter_redirector_get_outdev,
|
object_property_add_str(obj, "outdev", filter_redirector_get_outdev,
|
||||||
filter_redirector_set_outdev, NULL);
|
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)
|
static void filter_mirror_fini(Object *obj)
|
||||||
|
@ -4253,11 +4253,11 @@ queue @var{all|rx|tx} is an option that can be applied to any netfilter.
|
|||||||
|
|
||||||
filter-mirror on netdev @var{netdevid},mirror net packet to chardev@var{chardevid}, if it has the vnet_hdr_support flag, filter-mirror will mirror packet with vnet_hdr_len.
|
filter-mirror on netdev @var{netdevid},mirror net packet to chardev@var{chardevid}, if it has the vnet_hdr_support flag, filter-mirror will mirror packet with vnet_hdr_len.
|
||||||
|
|
||||||
@item -object filter-redirector,id=@var{id},netdev=@var{netdevid},indev=@var{chardevid},
|
@item -object filter-redirector,id=@var{id},netdev=@var{netdevid},indev=@var{chardevid},outdev=@var{chardevid},queue=@var{all|rx|tx}[,vnet_hdr_support]
|
||||||
outdev=@var{chardevid}[,queue=@var{all|rx|tx}]
|
|
||||||
|
|
||||||
filter-redirector on netdev @var{netdevid},redirect filter's net packet to chardev
|
filter-redirector on netdev @var{netdevid},redirect filter's net packet to chardev
|
||||||
@var{chardevid},and redirect indev's packet to filter.
|
@var{chardevid},and redirect indev's packet to filter.if it has the vnet_hdr_support flag,
|
||||||
|
filter-redirector will redirect packet with vnet_hdr_len.
|
||||||
Create a filter-redirector we need to differ outdev id from indev id, id can not
|
Create a filter-redirector we need to differ outdev id from indev id, id can not
|
||||||
be the same. we can just use indev or outdev, but at least one of indev or outdev
|
be the same. we can just use indev or outdev, but at least one of indev or outdev
|
||||||
need to be specified.
|
need to be specified.
|
||||||
|
Loading…
Reference in New Issue
Block a user