-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <poll.h>
return network_get_string("ADDRESS_STATE", state);
}
+_public_ int sd_network_get_ipv4_address_state(char **state) {
+ return network_get_string("IPV4_ADDRESS_STATE", state);
+}
+
+_public_ int sd_network_get_ipv6_address_state(char **state) {
+ return network_get_string("IPV6_ADDRESS_STATE", state);
+}
+
+_public_ int sd_network_get_online_state(char **state) {
+ return network_get_string("ONLINE_STATE", state);
+}
+
static int network_get_strv(const char *key, char ***ret) {
_cleanup_strv_free_ char **a = NULL;
_cleanup_free_ char *s = NULL;
return network_link_get_string(ifindex, "OPER_STATE", state);
}
+_public_ int sd_network_link_get_required_family_for_online(int ifindex, char **state) {
+ _cleanup_free_ char *s = NULL;
+ int r;
+
+ assert_return(state, -EINVAL);
+
+ r = network_link_get_string(ifindex, "REQUIRED_FAMILY_FOR_ONLINE", &s);
+ if (r < 0) {
+ if (r != -ENODATA)
+ return r;
+
+ s = strdup("any");
+ if (!s)
+ return -ENOMEM;
+ }
+
+ *state = TAKE_PTR(s);
+ return 0;
+}
+
_public_ int sd_network_link_get_carrier_state(int ifindex, char **state) {
return network_link_get_string(ifindex, "CARRIER_STATE", state);
}
return network_link_get_string(ifindex, "ADDRESS_STATE", state);
}
-_public_ int sd_network_link_get_dhcp4_client_id_string(int ifindex, char **client_id) {
- return network_link_get_string(ifindex, "DHCP4_CLIENT_ID", client_id);
+_public_ int sd_network_link_get_ipv4_address_state(int ifindex, char **state) {
+ return network_link_get_string(ifindex, "IPV4_ADDRESS_STATE", state);
+}
+
+_public_ int sd_network_link_get_ipv6_address_state(int ifindex, char **state) {
+ return network_link_get_string(ifindex, "IPV6_ADDRESS_STATE", state);
+}
+
+_public_ int sd_network_link_get_online_state(int ifindex, char **state) {
+ return network_link_get_string(ifindex, "ONLINE_STATE", state);
}
_public_ int sd_network_link_get_dhcp6_client_iaid_string(int ifindex, char **iaid) {
return 0;
}
+_public_ int sd_network_link_get_activation_policy(int ifindex, char **policy) {
+ _cleanup_free_ char *s = NULL;
+ int r;
+
+ assert_return(policy, -EINVAL);
+
+ r = network_link_get_string(ifindex, "ACTIVATION_POLICY", &s);
+ if (r < 0) {
+ if (r != -ENODATA)
+ return r;
+
+ /* For compatibility, assuming up. */
+ s = strdup("up");
+ if (!s)
+ return -ENOMEM;
+ }
+
+ *policy = TAKE_PTR(s);
+ return 0;
+}
+
_public_ int sd_network_link_get_llmnr(int ifindex, char **llmnr) {
return network_link_get_string(ifindex, "LLMNR", llmnr);
}
return network_link_get_strv(ifindex, "DNSSEC_NTA", nta);
}
-_public_ int sd_network_link_get_timezone(int ifindex, char **ret) {
- return network_link_get_string(ifindex, "TIMEZONE", ret);
-}
-
-_public_ int sd_network_link_get_dhcp4_address(int ifindex, char **ret) {
- return network_link_get_string(ifindex, "DHCP4_ADDRESS", ret);
-}
-
_public_ int sd_network_link_get_dns(int ifindex, char ***ret) {
return network_link_get_strv(ifindex, "DNS", ret);
}
return network_link_get_strv(ifindex, "ROUTE_DOMAINS", ret);
}
-_public_ int sd_network_link_get_sip_servers(int ifindex, char ***ret) {
- return network_link_get_strv(ifindex, "SIP", ret);
-}
-
-_public_ int sd_network_link_get_pop3_servers(int ifindex, char ***pop3) {
- return network_link_get_strv(ifindex, "POP3_SERVERS", pop3);
-}
-
-_public_ int sd_network_link_get_smtp_servers(int ifindex, char ***ret) {
- return network_link_get_strv(ifindex, "SMTP_SERVERS", ret);
-}
-
-_public_ int sd_network_link_get_lpr_servers(int ifindex, char ***ret) {
- return network_link_get_strv(ifindex, "LPR_SERVERS", ret);
-}
-
_public_ int sd_network_link_get_dns_default_route(int ifindex) {
char path[STRLEN("/run/systemd/netif/links/") + DECIMAL_STR_MAX(ifindex) + 1];
_cleanup_free_ char *s = NULL;
char path[STRLEN("/run/systemd/netif/links/") + DECIMAL_STR_MAX(ifindex) + 1];
_cleanup_free_ int *ifis = NULL;
_cleanup_free_ char *s = NULL;
- size_t allocated = 0, c = 0;
+ size_t c = 0;
int r;
assert_return(ifindex > 0, -EINVAL);
if (r == 0)
break;
- if (!GREEDY_REALLOC(ifis, allocated, c + 2))
+ if (!GREEDY_REALLOC(ifis, c + 2))
return -ENOMEM;
r = ifis[c++] = parse_ifindex(word);
if (!good)
return -EINVAL;
- *m = FD_TO_MONITOR(fd);
- fd = -1;
-
+ *m = FD_TO_MONITOR(TAKE_FD(fd));
return 0;
}
_public_ sd_network_monitor* sd_network_monitor_unref(sd_network_monitor *m) {
- int fd;
-
- if (m) {
- fd = MONITOR_TO_FD(m);
- close_nointr(fd);
- }
+ if (m)
+ (void) close_nointr(MONITOR_TO_FD(m));
return NULL;
}
assert_return(m, -EINVAL);
assert_return(timeout_usec, -EINVAL);
- /* For now we will only return (uint64_t) -1, since we don't
+ /* For now we will only return UINT64_MAX, since we don't
* need any timeout. However, let's have this API to keep our
* options open should we later on need it. */
- *timeout_usec = (uint64_t) -1;
+ *timeout_usec = UINT64_MAX;
return 0;
}