[libvirt] [PATCH V3 2/4] Create rules for each member of a list
Stefan Berger
stefanb at linux.vnet.ibm.com
Thu Oct 27 17:03:17 UTC 2011
On 10/27/2011 06:14 AM, Daniel P. Berrange wrote:
> On Mon, Oct 24, 2011 at 12:07:28PM -0400, Stefan Berger wrote:
>> This patch extends the NWFilter driver for Linux (ebiptables) to create
>> rules for each member of a previously introduced list. If for example
>> an attribute value (internally) looks like this:
>>
>> IP = [10.0.0.1, 10.0.0.2, 10.0.0.3]
>>
>> then 3 rules will be generated for a rule accessing the variable 'IP',
>> one for each member of the list. The effect of this is that this now
>> allows for filtering for multiple values in one field. This can then be
>> used to support for filtering/allowing of multiple IP addresses per
>> interface.
>>
>> An interator is introduced that extracts each member of a list and
>> puts it into a hash table which then is passed to the function creating
>> a rule. For the above example the iterator would cause 3 loops.
>>
>> v2:
>> - pass the iterator all the way to the function that accesses the
>> hash table and provide a function to pick the value of a variable
>> that is reflected by the current state of the iterator
>>
>> Signed-off-by: Stefan Berger<stefanb at linux.vnet.ibm.com>
>>
>> ---
>> src/conf/nwfilter_params.c | 129 ++++++++++++++++++++++++++++++
>> src/conf/nwfilter_params.h | 25 +++++
>> src/libvirt_private.syms | 4
>> src/nwfilter/nwfilter_ebiptables_driver.c | 84 +++++++++++++------
>> 4 files changed, 215 insertions(+), 27 deletions(-)
> ACK
I now modified the iterator to NOT create every combination of the items
of multiple lists, but have all lists processed in parallel. I think
this is for now the needed behaviour. So if someone has a rule
containing $IP and $MAC, then both lists have to have the same size and
their elements will be accessed $IP[m] and $MAC[m] to instantiate the
rule. To have them independently processed we'll need to go through how
the variables are accessed and then maybe a notation of $IP[@1] and
$MAC[@2] will create all possible combinations. Sorry for the confusion.
Stefan
> Daniel
More information about the libvir-list
mailing list