sd-network: turn states 'unknown' and 'unmanaged' into errnos

This commit is contained in:
Tom Gundersen 2014-02-28 02:07:29 +01:00
parent 82bdf8ce36
commit cb6fa44cb5
2 changed files with 15 additions and 23 deletions

View file

@ -38,20 +38,15 @@ static bool all_configured(void) {
_cleanup_free_ char *state = NULL;
r = sd_network_get_link_state(indices[i], &state);
if (r < 0)
if (r == -EUNATCH)
continue;
if (r < 0 || !streq(state, "configured"))
return false;
if (streq(state, "configured"))
one_ready = true;
if (!streq(state, "configured") && !streq(state, "unmanaged"))
return false;
one_ready = true;
}
if (one_ready)
return true;
return false;
return one_ready;
}
static int event_handler(sd_event_source *s, int fd, uint32_t revents,

View file

@ -34,7 +34,7 @@
#include "dhcp-lease-internal.h"
_public_ int sd_network_get_link_state(unsigned index, char **state) {
char *p, *s = NULL;
_cleanup_free_ char *s = NULL, *p = NULL;
int r;
assert_return(index, -EINVAL);
@ -44,23 +44,20 @@ _public_ int sd_network_get_link_state(unsigned index, char **state) {
return -ENOMEM;
r = parse_env_file(p, NEWLINE, "STATE", &s, NULL);
free(p);
if (r == -ENOENT) {
free(s);
s = strdup("unknown");
if (!s)
return -ENOMEM;
*state = s;
return 0;
} else if (r < 0) {
free(s);
if (r == -ENOENT)
return -ENODATA;
else if (r < 0)
return r;
} else if (!s)
else if (!s)
return -EIO;
if (streq(s, "unmanaged"))
return -EUNATCH;
*state = s;
s = NULL;
return 0;
}