[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH RFC 6/7] net/filter: Add a default filter to eac
From: |
Jason Wang |
Subject: |
Re: [Qemu-devel] [PATCH RFC 6/7] net/filter: Add a default filter to each netdev |
Date: |
Tue, 26 Jan 2016 11:18:23 +0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 |
On 01/25/2016 03:22 PM, Hailiang Zhang wrote:
> On 2016/1/25 13:18, Jason Wang wrote:
>>
>>
>> On 01/22/2016 04:36 PM, zhanghailiang wrote:
>>> We add each netdev a default buffer filter, which the name is
>>> 'nop', and the default buffer filter is disabled, so it has
>>> no side effect for packets delivering in qemu net layer.
>>>
>>> The default buffer filter can be used by COLO or Micro-checkpoint,
>>> The reason we add the default filter is we hope to support
>>> hot add network during COLO state in future.
>>>
>>> Signed-off-by: zhanghailiang <address@hidden>
>>> ---
>>> include/net/filter.h | 11 +++++++++++
>>> net/dump.c | 2 --
>>> net/filter.c | 15 ++++++++++++++-
>>> net/net.c | 18 ++++++++++++++++++
>>> 4 files changed, 43 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/include/net/filter.h b/include/net/filter.h
>>> index c7bd8f9..2043609 100644
>>> --- a/include/net/filter.h
>>> +++ b/include/net/filter.h
>>> @@ -22,6 +22,16 @@
>>> #define NETFILTER_CLASS(klass) \
>>> OBJECT_CLASS_CHECK(NetFilterClass, (klass), TYPE_NETFILTER)
>>>
[...]
>>>
>>> nf->netdev = ncs[0];
>>> + nf->is_default = !strcmp(path, DEFAULT_FILTER_NAME);
>>> + /*
>>> + * For the default buffer filter, it will be disabled by default,
>>> + * So it will not buffer any packets.
>>> + */
>>> + if (nf->is_default) {
>>> + nf->enabled = false;
>>> + }
>>
>> This seems not very elegant. Besides DEFAULT_FILTER_NAME(TYPE), we may
>> also want a DEFAULT_FILTER_PROPERTIES? Then you can store the "status"
>> into properties.
>>
>
> A little confused, do you mean add a 'default' property for filter ?
> Just like the new 'status' property which is exported to users ?
> Is the type of 'default' property string or bool ?
For example, is it possible to store the default property into a string
and just create the filter through qemu_opts_parse_noisily() by just
pass a string as its parameter? (Of course, it needs some code to
generate ids). With this, there's even no need for you to duplicate
codes like what patch 4 does.
>
>>>
>>> if (nfc->setup) {
>>> nfc->setup(nf, &local_err);
>>> diff --git a/net/net.c b/net/net.c
>>> index ec43105..9630234 100644
>>> --- a/net/net.c
>>> +++ b/net/net.c
>>> @@ -76,6 +76,12 @@ const char *host_net_devices[] = {
>>>
>>> int default_net = 1;
>>>
>>> +/*
>>> + * FIXME: Export this with an option for users to control
>>> + * this with comand line ?
>>
>> This could be done in the future.
>>
>
> Should i change the tag to 'TODO' ?
Ok.
>
>>> + */
>>> +int default_netfilter = NETFILTER_ID_BUFFER;
>>
>> Why not just use a string here?
>>
>
> No special, i will convert it to use string here.
>
>>> +
>>> /***********************************************************/
>>> /* network device redirectors */
>>>
>>> @@ -1032,6 +1038,18 @@ static int net_client_init1(const void
>>> *object, int is_netdev, Error **errp)
>>> }
>>> return -1;
>>> }
>>> +
>>> + if (is_netdev) {
>>> + const Netdev *netdev = object;
>>> + /*
>>> + * Here we add each netdev a default filter whose name is
>>> 'nop',
>>> + * it will disabled by default, Users can enable it when
>>> necessary.
>>> + */
>>
>> If we support default properties, the above comment could be removed.
>>
>>> + netdev_add_filter(netdev->id,
>>> + netfilter_type_lookup[default_netfilter],
>>> + DEFAULT_FILTER_NAME,
>>
>> I believe some logic to generate id automatically is needed here.
>>
>
> Yes, you are right, here this patch will break QEMU with multi-NICs
> configured,
> the error report is " attempt to add duplicate property 'nop' to object".
> I will fix it in next version.
>
> Thanks,
> Hailiang
>
>>> + errp);
>>> + }
>>> return 0;
>>> }
>>>
>>
>>
>> .
>>
>
>
- Re: [Qemu-devel] [PATCH RFC 3/7] net/filter: Skip the disabled filter when delivering packets, (continued)
[Qemu-devel] [PATCH RFC 5/7] filter-buffer: Accept zero interval, zhanghailiang, 2016/01/22
[Qemu-devel] [PATCH RFC 6/7] net/filter: Add a default filter to each netdev, zhanghailiang, 2016/01/22
- Re: [Qemu-devel] [PATCH RFC 6/7] net/filter: Add a default filter to each netdev, Jason Wang, 2016/01/25
- Re: [Qemu-devel] [PATCH RFC 6/7] net/filter: Add a default filter to each netdev,
Jason Wang <=
- Re: [Qemu-devel] [PATCH RFC 6/7] net/filter: Add a default filter to each netdev, Hailiang Zhang, 2016/01/25
- Re: [Qemu-devel] [PATCH RFC 6/7] net/filter: Add a default filter to each netdev, Hailiang Zhang, 2016/01/26
- Re: [Qemu-devel] [PATCH RFC 6/7] net/filter: Add a default filter to each netdev, Jason Wang, 2016/01/27
- Re: [Qemu-devel] [PATCH RFC 6/7] net/filter: Add a default filter to each netdev, Hailiang Zhang, 2016/01/27
Re: [Qemu-devel] [PATCH RFC 0/7] Netfilter: Add each netdev a default filter, Hailiang Zhang, 2016/01/22
Re: [Qemu-devel] [PATCH RFC 0/7] Netfilter: Add each netdev a default filter, Daniel P. Berrange, 2016/01/22