summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2014-03-04 18:37:03 +0100
committerFelix Fietkau <nbd@openwrt.org>2014-03-19 15:19:56 +0100
commit9cf7219d554f73c014b9c6efde7965384d8346ec (patch)
tree6e47c9cfa2813676a6cc72230e83036024eb2b2d
parent047a1ee7680e9a668896a12e2773d6544669d0e9 (diff)
uci: Allow setting the UCI config path on the command line
Add a -c switch which allows setting an alternative UCI path instead of using the libuci default. Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
-rw-r--r--config.c4
-rw-r--r--main.c7
-rw-r--r--netifd.h3
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 f70db54..c5e8e67 100644
--- a/main.c
+++ b/main.c
@@ -29,6 +29,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;
@@ -237,6 +238,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"
@@ -286,7 +288,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);
@@ -297,6 +299,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);