diff --git a/src/network.c b/src/network.c index 3e2b13e8..171053d3 100644 --- a/src/network.c +++ b/src/network.c @@ -210,6 +210,35 @@ enum security network_get_security(struct network *network) return network->security; } +bool network_settings_load(struct network *network) +{ + if (network->settings) + return true; + + switch (network->security) { + case SECURITY_8021X: + network->settings = storage_network_open("8021x", + network->ssid); + break; + case SECURITY_PSK: + network->settings = storage_network_open("psk", network->ssid); + break; + default: + return false; + }; + + return true; +} + +void network_settings_close(struct network *network) +{ + if (!network->settings) + return; + + l_settings_free(network->settings); + network->settings = NULL; +} + bool __iwd_network_append_properties(const struct network *network, struct l_dbus_message_builder *builder) { diff --git a/src/network.h b/src/network.h index 2821b188..4a66e97e 100644 --- a/src/network.h +++ b/src/network.h @@ -49,6 +49,9 @@ struct netdev *network_get_netdev(struct network *network); const char *network_get_path(struct network *network); enum security network_get_security(struct network *network); +bool network_settings_load(struct network *network); +void network_settings_close(struct network *network); + void network_emit_added(struct network *network); void network_emit_removed(struct network *network);