qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v4 02/11] init/cleanup of netfilter object


From: Jason Wang
Subject: Re: [Qemu-devel] [PATCH v4 02/11] init/cleanup of netfilter object
Date: Thu, 06 Aug 2015 15:53:58 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0


On 08/06/2015 03:50 PM, Yang Hongyang wrote:
> On 08/06/2015 03:43 PM, Jason Wang wrote:
>> On 08/06/2015 03:35 PM, Yang Hongyang wrote:
>>> On 08/06/2015 03:29 PM, Jason Wang wrote:
>>>>
>>>>
>>>> On 08/06/2015 03:22 PM, Yang Hongyang wrote:
>>>>> On 08/06/2015 03:07 PM, Jason Wang wrote:
>>>>>>
>>>>>>
>>>>>> On 08/04/2015 04:30 PM, Yang Hongyang wrote:
>>>>>>> QTAILQ_ENTRY global_list but used by filter layer, so that we can
>>>>>>> manage all filters together.
>>>>>>> QTAILQ_ENTRY next used by netdev, filter belongs to the specific
>>>>>>> netdev is
>>>>>>> in this queue.
>>>>>>> This is mostly the same with init/cleanup of netdev object.
>>>>>>>
>>>>>>> Signed-off-by: Yang Hongyang <address@hidden>
>>>>>>> ---
>>>>>>>     include/net/filter.h    |  39 +++++++++++++
>>>>>>>     include/net/net.h       |   1 +
>>>>>>>     include/qemu/typedefs.h |   1 +
>>>>>>>     net/filter.c            | 147
>>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>>     net/net.c               |   1 +
>>>>>>>     qapi-schema.json        |  37 ++++++++++++
>>>>>>>     6 files changed, 226 insertions(+)
>>>>>>>
>>>>>>> diff --git a/include/net/filter.h b/include/net/filter.h
>>>>>>> index 4242ded..9aafe08 100644
>>>>>>> --- a/include/net/filter.h
>>>>>>> +++ b/include/net/filter.h
>>>>>>> @@ -9,7 +9,46 @@
>>>>>>>     #define QEMU_NET_FILTER_H
>>>>>>>
>>>>>>>     #include "qemu-common.h"
>>>>>>> +#include "qemu/typedefs.h"
>>>>>>> +
>>>>>>> +/* the netfilter chain */
>>>>>>> +enum {
>>>>>>> +    NET_FILTER_IN,
>>>>>>> +    NET_FILTER_OUT,
>>>>>>> +    NET_FILTER_ALL,
>>>>>>> +};
>>>>>>> +
>>>>>>> +typedef void (FilterCleanup) (NetFilterState *);
>>>>>>> +/*
>>>>>>> + * Return:
>>>>>>> + *   0: finished handling the packet, we should continue
>>>>>>> + *   size: filter stolen this packet, we stop pass this packet
>>>>>>> further
>>>>>>> + */
>>>>>>> +typedef ssize_t (FilterReceiveIOV)(NetFilterState *,
>>>>>>> NetClientState
>>>>>>> *sender,
>>>>>>> +                                   unsigned flags, const struct
>>>>>>> iovec *, int);
>>>>>>
>>>>>> Please name all parameters.
>>>>>
>>>>> Ok, thanks.
>>>>>
>>>>>>
>>>>>>> +
>>>>>>> +typedef struct NetFilterInfo {
>>>>>>> +    NetFilterOptionsKind type;
>>>>>>> +    size_t size;
>>>>>>> +    FilterCleanup *cleanup;
>>>>>>> +    FilterReceiveIOV *receive_iov;
>>>>>>> +} NetFilterInfo;
>>>>>>> +
>>>>>>> +struct NetFilterState {
>>>>>>> +    NetFilterInfo *info;
>>>>>>> +    char *model;
>>>>>>
>>>>>> Looks like model is never used?
>>>>>
>>>>> It can be used when we want to find filters by model. For example,
>>>>> when we need to find all "buffer" filter, and release all buffered
>>>>> packets.
>>>>
>>>> But this is not implemented in this series.
>>>
>>> true.
>>>
>>>> And I don't get why you need
>>>> a such command. Management should keep track of this.
>>>
>>> There's a patch in v1 which introduce an API use this, and I dropped
>>> that
>>> because there's no user currently, but that API I suppose to be used
>>> by MC or COLO which can do periodic checkpoint, to release packets.
>>> the API is filter_buffer_release_all() IIRC...
>>
>> I see, let's start with simple case to make review and merging easier.
>> You can re-introduce them when it has real users.
>
> So do I need to remove model also?

Yes, please.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]