[libvirt] [libvirt PATCHv3 10/10] support multiple static IP addresses
Stefan Berger
stefanb at linux.vnet.ibm.com
Tue Oct 18 00:04:34 UTC 2011
On 10/12/2011 03:50 PM, David L Stevens wrote:
> This patch adds support for multiple static IP addresses in a
> comma-separated list. For example:
>
> <interface type='network'>
> <filterref filter='clean-traffic'>
> <parameter name='ip_learning' value='none'/>
> <parameter name='IP' value='10.0.0.1,10.1.0.7,10.0.3.8,10.0.9.244'/>
> </filterref>
> ...
>
> Signed-off-by: David L Stevens<dlstevens at us.ibm.com>
> ---
> src/nwfilter/nwfilter_gentech_driver.c | 26 ++++++++++++++++++++++++++
> 1 files changed, 26 insertions(+), 0 deletions(-)
>
> diff --git a/src/nwfilter/nwfilter_gentech_driver.c b/src/nwfilter/nwfilter_gentech_driver.c
> index 577b48d..8f74a01 100644
> --- a/src/nwfilter/nwfilter_gentech_driver.c
> +++ b/src/nwfilter/nwfilter_gentech_driver.c
> @@ -920,6 +920,8 @@ __virNWFilterInstantiateFilter(virConnectPtr conn,
> char *str_macaddr = NULL;
> const char *ipaddr;
> char *str_ipaddr = NULL;
> + char *ipaddrlist = NULL;
> + char *sep;
>
> techdriver = virNWFilterTechDriverForName(drvname);
>
> @@ -983,6 +985,17 @@ __virNWFilterInstantiateFilter(virConnectPtr conn,
> goto err_exit_vars1;
> }
>
> + ipaddr = virHashLookup(filterparams->hashTable, NWFILTER_STD_VAR_IP);
> + if (ipaddr) {
> + sep = strchr(ipaddr, ',');
> + if (sep) {
> + str_ipaddr = strndup(ipaddr, sep-ipaddr);
> + ipaddrlist = strdup(sep + 1);
Check for str_ipaddr or ipaddrlist being NULL.
> + virNWFilterHashTablePut(vars, NWFILTER_STD_VAR_IP, str_ipaddr, 1);
> + }
> + }
> + str_ipaddr = NULL;
> +
> filter = obj->def;
>
> switch (useNewFilter) {
> @@ -1011,6 +1024,19 @@ __virNWFilterInstantiateFilter(virConnectPtr conn,
> driver,
> forceWithPendingReq);
>
> + /* add the rest of the IP list */
> + for (ipaddr = ipaddrlist; ipaddr; ipaddr = sep) {
> + sep = strchr(ipaddr, ',');
> + if (sep) {
> + str_ipaddr = strndup(ipaddr, sep-ipaddr);
Test for NULL result.
> + sep++; /* skip ',' */
> + } else
> + str_ipaddr = strdup(ipaddr);
Also here.
> + virNWFilterChangeVar(conn, techdriver, nettype, filter, ifname, vars,
> + driver, NWFILTER_STD_VAR_IP, str_ipaddr, 0);
> +
> + }
> + str_ipaddr = NULL;
> virNWFilterHashTableFree(vars);
>
> err_exit_vars1:
More information about the libvir-list
mailing list