Ping?

On 03/04/2014 06:37 PM, Matthias Schiffer wrote:
> Add a -c switch which allows setting an alternative UCI path instead of using
> the libuci default.
> 
> Signed-off-by: Matthias Schiffer <[email protected]>
> ---
> Hi, this is a little patch we cooked up during the development of our new
> Freifunk firmware, Project Gluon [1].
> 
> Use case:
> 
> Our firmware has a special mode of operation, the "config mode", in which the
> normal init scripts don't run; instead only a minimal network configuration is
> created and a first-configuration wizard runs on the web interface.
> 
> At first, we just manually configured eth0 like the failsafe mode does, but
> switching to netifd made this much more robust and flexible.
> 
> [1] https://github.com/freifunk-gluon/gluon
> 
> 
>  config.c | 4 +++-
>  main.c   | 7 ++++++-
>  netifd.h | 3 +++
>  3 files changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/config.c b/config.c
> index 6784dda..4fe72dc 100644
> --- a/config.c
> +++ b/config.c
> @@ -190,8 +190,10 @@ config_init_package(const char *config)
>               ctx = uci_alloc_context();
>               uci_ctx = ctx;
>  
> +             if (config_path)
> +                     uci_set_confdir(ctx, config_path);
> +
>  #ifdef DUMMY_MODE
> -             uci_set_confdir(ctx, "./config");
>               uci_set_savedir(ctx, "./tmp");
>  #endif
>       } else {
> diff --git a/main.c b/main.c
> index 43ec24f..3d450e6 100644
> --- a/main.c
> +++ b/main.c
> @@ -27,6 +27,7 @@
>  
>  unsigned int debug_mask = 0;
>  const char *main_path = DEFAULT_MAIN_PATH;
> +const char *config_path = DEFAULT_CONFIG_PATH;
>  const char *resolv_conf = DEFAULT_RESOLV_CONF;
>  static char **global_argv;
>  
> @@ -235,6 +236,7 @@ static int usage(const char *progname)
>               " -d <mask>:            Mask for debug messages\n"
>               " -s <path>:            Path to the ubus socket\n"
>               " -p <path>:            Path to netifd addons (default: %s)\n"
> +             " -c <path>:            Path to UCI configuration\n"
>               " -h <path>:            Path to the hotplug script\n"
>               " -r <path>:            Path to resolv.conf\n"
>               " -l <level>:           Log output level (default: %d)\n"
> @@ -284,7 +286,7 @@ int main(int argc, char **argv)
>  
>       global_argv = argv;
>  
> -     while ((ch = getopt(argc, argv, "d:s:p:h:r:l:S")) != -1) {
> +     while ((ch = getopt(argc, argv, "d:s:p:c:h:r:l:S")) != -1) {
>               switch(ch) {
>               case 'd':
>                       debug_mask = strtoul(optarg, NULL, 0);
> @@ -295,6 +297,9 @@ int main(int argc, char **argv)
>               case 'p':
>                       main_path = optarg;
>                       break;
> +             case 'c':
> +                     config_path = optarg;
> +                     break;
>               case 'h':
>                       hotplug_cmd_path = optarg;
>                       break;
> diff --git a/netifd.h b/netifd.h
> index 75e997c..5a90858 100644
> --- a/netifd.h
> +++ b/netifd.h
> @@ -30,10 +30,12 @@
>  
>  #ifdef DUMMY_MODE
>  #define DEFAULT_MAIN_PATH    "./examples"
> +#define DEFAULT_CONFIG_PATH  "./config"
>  #define DEFAULT_HOTPLUG_PATH "./examples/hotplug-cmd"
>  #define DEFAULT_RESOLV_CONF  "./tmp/resolv.conf"
>  #else
>  #define DEFAULT_MAIN_PATH    "/lib/netifd"
> +#define DEFAULT_CONFIG_PATH  NULL /* use the default set in libuci */
>  #define DEFAULT_HOTPLUG_PATH "/sbin/hotplug-call"
>  #define DEFAULT_RESOLV_CONF  "/tmp/resolv.conf.auto"
>  #endif
> @@ -94,6 +96,7 @@ struct device;
>  struct interface;
>  
>  extern const char *main_path;
> +extern const char *config_path;
>  void netifd_restart(void);
>  void netifd_reload(void);
>  
> 


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to