[libvirt] [PATCH V6 04/11] Use scripting for cleaning and renaming of chains
Stefan Berger
stefanb at linux.vnet.ibm.com
Fri Nov 18 16:37:45 UTC 2011
On 11/18/2011 11:01 AM, Eric Blake wrote:
> On 11/18/2011 06:32 AM, Stefan Berger wrote:
>> Use scripts for the renaming and cleaning up of chains. This allows us to get
>> rid of some of the code that is only capable of renaming and removing chains
>> whose names are hardcoded.
>>
>> +static const char ebtables_script_func_collect_chains[] =
>> + "collect_chains()\n"
>> + "{\n"
>> + " for tmp2 in $*; do\n"
>> + " for tmp in $(%s -t %s -L $tmp2 | \\\n"
>> + " sed -n \"/Bridge chain/,\\$ s/.*-j \\\\([%s]-.*\\\\)/\\\\1/p\");\n"
> No need to change this unless you want, but this could be written in
> fewer bytes as:
>
> " sed -n '/Bridge chain/,$ s/.*-j \\([%s]-.*\\)/\\1/p')\n"
>
>> + virBufferAsprintf(buf, NWFILTER_FUNC_SET_IFS);
>> + virBufferAddLit(buf, "a=\"$(collect_chains ");
>> + for (i = 0; chains[i] != 0; i++) {
>> + PRINT_ROOT_CHAIN(rootchain, chains[i], ifname);
>> + virBufferAsprintf(buf, "%s ", rootchain);
>> + }
>> + virBufferAddLit(buf, ")\"\n");
> As written, you generate:
> a="$(collect_chains a b )"
> with an odd space before ). I also think the name $a is rather terse;
> it might be better to use something a bit less cryptic. What you have
> works, but you could also make this tweak if you'd like:
>
> virBufferAddLit(buf, "chains=\"$(collect_chains");
> for ...
> virBufferAsprintf(buf, " %s", rootchain);
> virBufferAddLit(buf, ")\"\n");
> ...
> virBufferAddLit(buf, "rm_chains $chains\n");
>
Fixed this part.
More information about the libvir-list
mailing list