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

Felix Fietkau nbd at nbd.name
Fri Mar 10 03:13:52 PST 2017


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



More information about the Lede-dev mailing list