mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 16:37:19 +09:00
sd-network: read IPv4/IPv6 address states from state files
This commit is contained in:
committed by
Yu Watanabe
parent
8430841b5e
commit
bbea881312
@@ -48,6 +48,14 @@ _public_ int sd_network_get_address_state(char **state) {
|
||||
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);
|
||||
}
|
||||
|
||||
static int network_get_strv(const char *key, char ***ret) {
|
||||
_cleanup_strv_free_ char **a = NULL;
|
||||
_cleanup_free_ char *s = NULL;
|
||||
@@ -160,6 +168,26 @@ _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_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);
|
||||
}
|
||||
@@ -168,6 +196,14 @@ _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_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_dhcp6_client_iaid_string(int ifindex, char **iaid) {
|
||||
return network_link_get_string(ifindex, "DHCP6_CLIENT_IAID", iaid);
|
||||
}
|
||||
|
||||
@@ -51,6 +51,8 @@ _SD_BEGIN_DECLARATIONS;
|
||||
int sd_network_get_operational_state(char **state);
|
||||
int sd_network_get_carrier_state(char **state);
|
||||
int sd_network_get_address_state(char **state);
|
||||
int sd_network_get_ipv4_address_state(char **state);
|
||||
int sd_network_get_ipv6_address_state(char **state);
|
||||
|
||||
/* Get DNS entries for all links. These are string representations of
|
||||
* IP addresses */
|
||||
@@ -92,8 +94,11 @@ int sd_network_link_get_setup_state(int ifindex, char **state);
|
||||
*/
|
||||
int sd_network_link_get_operational_state(int ifindex, char **state);
|
||||
int sd_network_link_get_required_operstate_for_online(int ifindex, char **state);
|
||||
int sd_network_link_get_required_family_for_online(int ifindex, char **state);
|
||||
int sd_network_link_get_carrier_state(int ifindex, char **state);
|
||||
int sd_network_link_get_address_state(int ifindex, char **state);
|
||||
int sd_network_link_get_ipv4_address_state(int ifindex, char **state);
|
||||
int sd_network_link_get_ipv6_address_state(int ifindex, char **state);
|
||||
|
||||
/* Indicates whether the network is relevant to being online.
|
||||
* Possible return codes:
|
||||
|
||||
Reference in New Issue
Block a user