summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2009-12-21 21:45:37 +0100
committerMarcel Holtmann <marcel@holtmann.org>2009-12-21 20:11:30 -0800
commitad619e369a8144af4a28c9be0e794f8468686162 (patch)
tree3f7bd0ee9f9365d44ca76ce356d7567718b54dd7
parent24ac91cc37126d8f2080585163f6317d1fd95837 (diff)
downloadconnman-ad619e369a8144af4a28c9be0e794f8468686162.tar.gz
connman-ad619e369a8144af4a28c9be0e794f8468686162.tar.bz2
connman-ad619e369a8144af4a28c9be0e794f8468686162.zip
Add IEEE 802.1x related fields to network structure
In order to support IEEE 802.1x serveral additional fields needs to be stored. In addition the network's EAP is displayed when listing the network's properties.
-rw-r--r--src/network.c51
1 files changed, 50 insertions, 1 deletions
diff --git a/src/network.c b/src/network.c
index dcd64f1e..7879f04f 100644
--- a/src/network.c
+++ b/src/network.c
@@ -65,6 +65,13 @@ struct connman_network {
unsigned short channel;
char *security;
char *passphrase;
+ char *eap;
+ char *identity;
+ char *ca_cert_path;
+ char *client_cert_path;
+ char *private_key_path;
+ char *private_key_passphrase;
+ char *phase2_auth;
} wifi;
};
@@ -152,10 +159,17 @@ static DBusMessage *get_properties(DBusConnection *conn,
connman_dbus_dict_append_basic(&dict, "WiFi.Channel",
DBUS_TYPE_UINT16, &network->wifi.channel);
- if (network->wifi.security != NULL)
+ if (network->wifi.security != NULL) {
connman_dbus_dict_append_basic(&dict, "WiFi.Security",
DBUS_TYPE_STRING, &network->wifi.security);
+ if (g_strcmp0(network->wifi.security, "ieee8021x") == 0 &&
+ network->wifi.eap != NULL)
+ connman_dbus_dict_append_basic(&dict, "WiFi.EAP",
+ DBUS_TYPE_STRING, &network->wifi.eap);
+ }
+
+
if (network->wifi.passphrase != NULL &&
__connman_security_check_privilege(msg,
CONNMAN_SECURITY_PRIVILEGE_SECRET) == 0)
@@ -977,6 +991,27 @@ int connman_network_set_string(struct connman_network *network,
} else if (g_str_equal(key, "WiFi.Passphrase") == TRUE) {
g_free(network->wifi.passphrase);
network->wifi.passphrase = g_strdup(value);
+ } else if (g_str_equal(key, "WiFi.EAP") == TRUE) {
+ g_free(network->wifi.eap);
+ network->wifi.eap = g_strdup(value);
+ } else if (g_str_equal(key, "WiFi.Identity") == TRUE) {
+ g_free(network->wifi.identity);
+ network->wifi.identity = g_strdup(value);
+ } else if (g_str_equal(key, "WiFi.CACertFile") == TRUE) {
+ g_free(network->wifi.ca_cert_path);
+ network->wifi.ca_cert_path = g_strdup(value);
+ } else if (g_str_equal(key, "WiFi.ClientCertFile") == TRUE) {
+ g_free(network->wifi.client_cert_path);
+ network->wifi.client_cert_path = g_strdup(value);
+ } else if (g_str_equal(key, "WiFi.PrivateKeyFile") == TRUE) {
+ g_free(network->wifi.private_key_path);
+ network->wifi.private_key_path = g_strdup(value);
+ } else if (g_str_equal(key, "WiFi.PrivateKeyPassphrase") == TRUE) {
+ g_free(network->wifi.private_key_passphrase);
+ network->wifi.private_key_passphrase = g_strdup(value);
+ } else if (g_str_equal(key, "WiFi.Phase2") == TRUE) {
+ g_free(network->wifi.phase2_auth);
+ network->wifi.phase2_auth = g_strdup(value);
}
return connman_element_set_string(&network->element, key, value);
@@ -1006,6 +1041,20 @@ const char *connman_network_get_string(struct connman_network *network,
return network->wifi.security;
else if (g_str_equal(key, "WiFi.Passphrase") == TRUE)
return network->wifi.passphrase;
+ else if (g_str_equal(key, "WiFi.EAP") == TRUE)
+ return network->wifi.eap;
+ else if (g_str_equal(key, "WiFi.Identity") == TRUE)
+ return network->wifi.identity;
+ else if (g_str_equal(key, "WiFi.CACertFile") == TRUE)
+ return network->wifi.ca_cert_path;
+ else if (g_str_equal(key, "WiFi.ClientCertFile") == TRUE)
+ return network->wifi.client_cert_path;
+ else if (g_str_equal(key, "WiFi.PrivateKeyFile") == TRUE)
+ return network->wifi.private_key_path;
+ else if (g_str_equal(key, "WiFi.PrivateKeyPassphrase") == TRUE)
+ return network->wifi.private_key_passphrase;
+ else if (g_str_equal(key, "WiFi.Phase2") == TRUE)
+ return network->wifi.phase2_auth;
return connman_element_get_string(&network->element, key);
}