summaryrefslogtreecommitdiff
path: root/src/libsystemd/sd-network/sd-network.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2019-06-10 04:56:03 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2019-06-16 23:17:28 +0900
commitac999bf07dcc9ed628115eacfcc7d94f582b5ad7 (patch)
tree9d592b26df340a587c7c75f6fc8042b35902eab6 /src/libsystemd/sd-network/sd-network.c
parent3cf7a9807e7165af1e76e5e04cad70e49883ec24 (diff)
downloadsystemd-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.c28
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;