[LEDE-DEV] [PATCH][V2][netifd] ubus: propagate error code on netifd_reload()

Alexandru Ardelean ardeleanalex at gmail.com
Fri Mar 10 03:32:41 PST 2017


On Fri, Mar 10, 2017 at 1:13 PM, Felix Fietkau <nbd at nbd.name> wrote:
> On 2017-03-10 12:11, Alexandru Ardelean wrote:
>> The context is that we generate some of the UCI config
>> for netifd via scripts/programs.
>>
>> Every once in a while, there's a goof when doing that
>> UCI generation, and netifd prints out the error at
>> stderr, but returns 0 (success) err-code.
>>
>> This change will fail the ubus call if UCI config
>> is invalid for /etc/config/network & /etc/config/wireless,
>> or could not be loaded (via uci_load()).
>>
>> Admittedly, failing the entire ubus call could
>> be a bit much [depending on various views].
>> Probably one idea, would be to return the err-code
>> as a ubus reply data (via ubus_send_reply()).
>> Not sure.
>>
>> Signed-off-by: Alexandru Ardelean <ardeleanalex at gmail.com>
>> ---
>>  config.c | 10 ++++++++--
>>  config.h |  2 +-
>>  main.c   |  4 ++--
>>  netifd.h |  2 +-
>>  ubus.c   |  5 +++--
>>  5 files changed, 15 insertions(+), 8 deletions(-)
>>
>> diff --git a/config.c b/config.c
>> index 0d965d3..d70747c 100644
>> --- a/config.c
>> +++ b/config.c
>> @@ -393,16 +393,20 @@ config_init_wireless(void)
>>               vlist_flush(&wdev->interfaces);
>>  }
>>
>> -void
>> +int
>>  config_init_all(void)
>>  {
>>       uci_network = config_init_package("network");
>>       if (!uci_network) {
>>               fprintf(stderr, "Failed to load network config\n");
>> -             return;
>> +             return -1;
>>       }
>>
>>       uci_wireless = config_init_package("wireless");
>> +     if (!uci_wireless) {
>> +             fprintf(stderr, "Failed to load wireless config\n");
>> +             return -1;
>> +     }
>>
>>       vlist_update(&interfaces);
>>       config_init = true;
>> @@ -426,4 +430,6 @@ config_init_all(void)
>>       interface_refresh_assignments(false);
>>       interface_start_pending();
>>       wireless_start_pending();
>> +
>> +     return 0;
>>  }
> Failing the network config setup just because there is no wireless
> config (or an invalid one) is a bad idea.
> Please use a 'ret' variable to indicate the error without affecting
> runtime behavior.
>
> - Felix

ack
my bad



More information about the Lede-dev mailing list