diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2019-06-10 04:56:03 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2019-06-16 23:17:28 +0900 |
commit | ac999bf07dcc9ed628115eacfcc7d94f582b5ad7 (patch) | |
tree | 9d592b26df340a587c7c75f6fc8042b35902eab6 /src/libsystemd/sd-network/sd-network.c | |
parent | 3cf7a9807e7165af1e76e5e04cad70e49883ec24 (diff) | |
download | systemd-ac999bf07dcc9ed628115eacfcc7d94f582b5ad7.tar.gz |
sd-network: introduce functions for new link and manager states
Diffstat (limited to 'src/libsystemd/sd-network/sd-network.c')
-rw-r--r-- | src/libsystemd/sd-network/sd-network.c | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/libsystemd/sd-network/sd-network.c b/src/libsystemd/sd-network/sd-network.c index 2d715043e1..a3c0542d7a 100644 --- a/src/libsystemd/sd-network/sd-network.c +++ b/src/libsystemd/sd-network/sd-network.c @@ -18,13 +18,13 @@ #include "strv.h" #include "util.h" -_public_ int sd_network_get_operational_state(char **state) { +static int network_get_string(const char *field, char **ret) { _cleanup_free_ char *s = NULL; int r; - assert_return(state, -EINVAL); + assert_return(ret, -EINVAL); - r = parse_env_file(NULL, "/run/systemd/netif/state", "OPER_STATE", &s); + r = parse_env_file(NULL, "/run/systemd/netif/state", field, &s); if (r == -ENOENT) return -ENODATA; if (r < 0) @@ -32,11 +32,23 @@ _public_ int sd_network_get_operational_state(char **state) { if (isempty(s)) return -ENODATA; - *state = TAKE_PTR(s); + *ret = TAKE_PTR(s); return 0; } +_public_ int sd_network_get_operational_state(char **state) { + return network_get_string("OPER_STATE", state); +} + +_public_ int sd_network_get_carrier_state(char **state) { + return network_get_string("CARRIER_STATE", state); +} + +_public_ int sd_network_get_address_state(char **state) { + return network_get_string("ADDRESS_STATE", state); +} + static int network_get_strv(const char *key, char ***ret) { _cleanup_strv_free_ char **a = NULL; _cleanup_free_ char *s = NULL; @@ -149,6 +161,14 @@ _public_ int sd_network_link_get_operational_state(int ifindex, char **state) { return network_link_get_string(ifindex, "OPER_STATE", state); } +_public_ int sd_network_link_get_carrier_state(int ifindex, char **state) { + return network_link_get_string(ifindex, "CARRIER_STATE", state); +} + +_public_ int sd_network_link_get_address_state(int ifindex, char **state) { + return network_link_get_string(ifindex, "ADDRESS_STATE", state); +} + _public_ int sd_network_link_get_required_for_online(int ifindex) { _cleanup_free_ char *s = NULL; int r; |