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); > >
signature.asc
Description: OpenPGP digital signature
_______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
