From b9d5a8c37da02ccac5821b7599f4c9cd4461a662 Mon Sep 17 00:00:00 2001 From: Hans Dedecker Date: Mon, 20 Aug 2018 13:53:17 +0200 Subject: [PATCH] interface: extend interface error messages in interface_set_up() Don't return an error code in interface_set_up as it's ignored anyway by the calling functions; but rather add more interface error messages so the actual problem is visible for the user by doing ifstatus Signed-off-by: Hans Dedecker --- interface.c | 34 +++++++++++++++++++--------------- interface.h | 2 +- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/interface.c b/interface.c index 6be10e2..e143095 100644 --- a/interface.c +++ b/interface.c @@ -1047,31 +1047,35 @@ out: return ret; } -int +void interface_set_up(struct interface *iface) { int ret; + const char *error = NULL; iface->autostart = true; if (iface->state != IFS_DOWN) - return 0; + return; interface_clear_errors(iface); - if (!iface->available) { - interface_add_error(iface, "interface", "NO_DEVICE", NULL, 0); - return -1; - } - - if (iface->main_dev.dev) { - ret = device_claim(&iface->main_dev); - if (!ret) - interface_check_state(iface); - } - else - ret = __interface_set_up(iface); + if (iface->available) { + if (iface->main_dev.dev) { + ret = device_claim(&iface->main_dev); + if (!ret) + interface_check_state(iface); + else + error = "DEVICE_CLAIM_FAILED"; + } else { + ret = __interface_set_up(iface); + if (ret) + error = "SETUP_FAILED"; + } + } else + error = "NO_DEVICE"; - return ret; + if (error) + interface_add_error(iface, "interface", error, NULL, 0); } int diff --git a/interface.h b/interface.h index e5639eb..2b8b3b6 100644 --- a/interface.h +++ b/interface.h @@ -184,7 +184,7 @@ bool interface_add_alias(struct interface *iface, struct blob_attr *config); void interface_set_proto_state(struct interface *iface, struct interface_proto_state *state); void interface_set_available(struct interface *iface, bool new_state); -int interface_set_up(struct interface *iface); +void interface_set_up(struct interface *iface); int interface_set_down(struct interface *iface); void __interface_set_down(struct interface *iface, bool force); int interface_renew(struct interface *iface); -- 2.25.1