Committed in r39956
On 2014-03-18 16:43, Matthias Schiffer wrote: > 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); >> >> > > _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
