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

Reply via email to