On Wed, Dec 11, 2013 at 04:04:37PM -0500, Dwight Engen wrote:
> - add missing print in lxc_list_nicconfigs() and in write_config() which
>   fixes lxc-clone so it will propagate the script.down config value
> 
> - add missing "script.down" to lxc_get_item_nic(). change "upscript" to
>   "script.up" to match actual key in config
> 
> - refactor to use config_string_item()
> 
> Signed-off-by: Dwight Engen <[email protected]>

Acked-by: Stéphane Graber <[email protected]>

> ---
>  src/lxc/confile.c | 52 ++++++++++++++++++++++++++++------------------------
>  1 file changed, 28 insertions(+), 24 deletions(-)
> 
> diff --git a/src/lxc/confile.c b/src/lxc/confile.c
> index 732a81a..3a60c58 100644
> --- a/src/lxc/confile.c
> +++ b/src/lxc/confile.c
> @@ -80,7 +80,8 @@ static int config_network_vlan_id(const char *, const char 
> *, struct lxc_conf *)
>  static int config_network_mtu(const char *, const char *, struct lxc_conf *);
>  static int config_network_ipv4(const char *, const char *, struct lxc_conf 
> *);
>  static int config_network_ipv4_gateway(const char *, const char *, struct 
> lxc_conf *);
> -static int config_network_script(const char *, const char *, struct lxc_conf 
> *);
> +static int config_network_script_up(const char *, const char *, struct 
> lxc_conf *);
> +static int config_network_script_down(const char *, const char *, struct 
> lxc_conf *);
>  static int config_network_ipv6(const char *, const char *, struct lxc_conf 
> *);
>  static int config_network_ipv6_gateway(const char *, const char *, struct 
> lxc_conf *);
>  static int config_cap_drop(const char *, const char *, struct lxc_conf *);
> @@ -123,8 +124,8 @@ static struct lxc_config_t config[] = {
>       { "lxc.network.name",         config_network_name         },
>       { "lxc.network.macvlan.mode", config_network_macvlan_mode },
>       { "lxc.network.veth.pair",    config_network_veth_pair    },
> -     { "lxc.network.script.up",    config_network_script       },
> -     { "lxc.network.script.down",  config_network_script       },
> +     { "lxc.network.script.up",    config_network_script_up    },
> +     { "lxc.network.script.down",  config_network_script_down  },
>       { "lxc.network.hwaddr",       config_network_hwaddr       },
>       { "lxc.network.mtu",          config_network_mtu          },
>       { "lxc.network.vlan.id",      config_network_vlan_id      },
> @@ -406,6 +407,7 @@ extern int lxc_list_nicconfigs(struct lxc_conf *c, const 
> char *key,
>               memset(retv, 0, inlen);
>  
>       strprint(retv, inlen, "script.up\n");
> +     strprint(retv, inlen, "script.down\n");
>       if (netdev->type != LXC_NET_EMPTY) {
>               strprint(retv, inlen, "flags\n");
>               strprint(retv, inlen, "link\n");
> @@ -822,31 +824,28 @@ static int config_network_ipv6_gateway(const char *key, 
> const char *value,
>       return 0;
>  }
>  
> -static int config_network_script(const char *key, const char *value,
> -                              struct lxc_conf *lxc_conf)
> +static int config_network_script_up(const char *key, const char *value,
> +                                 struct lxc_conf *lxc_conf)
>  {
>       struct lxc_netdev *netdev;
>  
>       netdev = network_netdev(key, value, &lxc_conf->network);
>       if (!netdev)
> -     return -1;
> +             return -1;
>  
> -     char *copy = strdup(value);
> -     if (!copy) {
> -             SYSERROR("failed to dup string '%s'", value);
> -             return -1;
> -     }
> -     if (strstr(key, "script.up") != NULL) {
> -             netdev->upscript = copy;
> -             return 0;
> -     }
> -     if (strcmp(key, "lxc.network.script.down") == 0) {
> -             netdev->downscript = copy;
> -             return 0;
> -     }
> -     SYSERROR("Unknown key: %s", key);
> -     free(copy);
> -     return -1;
> +     return config_string_item(&netdev->upscript, value);
> +}
> +
> +static int config_network_script_down(const char *key, const char *value,
> +                                   struct lxc_conf *lxc_conf)
> +{
> +     struct lxc_netdev *netdev;
> +
> +     netdev = network_netdev(key, value, &lxc_conf->network);
> +     if (!netdev)
> +             return -1;
> +
> +     return config_string_item(&netdev->downscript, value);
>  }
>  
>  static int add_hook(struct lxc_conf *lxc_conf, int which, char *hook)
> @@ -1778,7 +1777,7 @@ static int lxc_get_mount_entries(struct lxc_conf *c, 
> char *retv, int inlen)
>  
>  /*
>   * lxc.network.0.XXX, where XXX can be: name, type, link, flags, type,
> - * macvlan.mode, veth.pair, vlan, ipv4, ipv6, upscript, hwaddr, mtu,
> + * macvlan.mode, veth.pair, vlan, ipv4, ipv6, script.up, hwaddr, mtu,
>   * ipv4_gateway, ipv6_gateway.  ipvX_gateway can return 'auto' instead
>   * of an address.  ipv4 and ipv6 return lists (newline-separated).
>   * things like veth.pair return '' if invalid (i.e. if called for vlan
> @@ -1814,9 +1813,12 @@ static int lxc_get_item_nic(struct lxc_conf *c, char 
> *retv, int inlen,
>       } else if (strcmp(p1, "flags") == 0) {
>               if (netdev->flags & IFF_UP)
>                       strprint(retv, inlen, "up");
> -     } else if (strcmp(p1, "upscript") == 0) {
> +     } else if (strcmp(p1, "script.up") == 0) {
>               if (netdev->upscript)
>                       strprint(retv, inlen, "%s", netdev->upscript);
> +     } else if (strcmp(p1, "script.down") == 0) {
> +             if (netdev->downscript)
> +                     strprint(retv, inlen, "%s", netdev->downscript);
>       } else if (strcmp(p1, "hwaddr") == 0) {
>               if (netdev->hwaddr)
>                       strprint(retv, inlen, "%s", netdev->hwaddr);
> @@ -2069,6 +2071,8 @@ void write_config(FILE *fout, struct lxc_conf *c)
>               }
>               if (n->upscript)
>                       fprintf(fout, "lxc.network.script.up = %s\n", 
> n->upscript);
> +             if (n->downscript)
> +                     fprintf(fout, "lxc.network.script.down = %s\n", 
> n->downscript);
>               if (n->hwaddr)
>                       fprintf(fout, "lxc.network.hwaddr = %s\n", n->hwaddr);
>               if (n->mtu)
> -- 
> 1.8.3.1
> 
> _______________________________________________
> lxc-devel mailing list
> [email protected]
> http://lists.linuxcontainers.org/listinfo/lxc-devel

-- 
Stéphane Graber
Ubuntu developer
http://www.ubuntu.com

Attachment: signature.asc
Description: Digital signature

_______________________________________________
lxc-devel mailing list
[email protected]
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to