int net_get_metered_state(void *handle, int *state);
/**
+ * \brief This API is only for Connection CAPI. Don't use this.
+ *
+ * \param[in] enable Enable EAP over Ethernet network.
+ * \param[in] pofilename Profile name of ethernet.
+ *
+ ******************************************************************************************/
+int net_ethernet_eap_enable(gboolean enable, const char *profilename);
+
+/**
+ * \brief This API is only for Connection CAPI. Don't use this.
+ *
+ * \param[out] supported Indicating whether the EAP over Ethernet is supported.
+ *
+ ******************************************************************************************/
+int net_ethernet_eap_supported(gboolean *supported);
+
+/**
+ * \brief This API is only for Connection CAPI. Don't use this.
+ *
+ * \param[in] net_info Ethernet device information.
+ *
+ ******************************************************************************************/
+int net_save_ethernet_eap_config(void *handle, net_dev_info_t *net_info);
+
+/**
* \}
*/
#define CONNMAN_CONFIG_FIELD_SSID "SSID"
#define CONNMAN_CONFIG_FIELD_EAP_METHOD "EAP"
#define CONNMAN_CONFIG_FIELD_IDENTITY "Identity"
+#define CONNMAN_CONFIG_FIELD_ANONYMOUS_IDENTITY "AnonymousIdentity"
#define CONNMAN_CONFIG_FIELD_PASSPHRASE "Passphrase"
#define CONNMAN_CONFIG_FIELD_PHASE2 "Phase2"
+#define CONNMAN_CONFIG_FIELD_PHASE1 "Phase1"
#define CONNMAN_CONFIG_FIELD_CA_CERT_FILE "CACertFile"
#define CONNMAN_CONFIG_FIELD_CLIENT_CERT_FILE "ClientCertFile"
#define CONNMAN_CONFIG_FIELD_PVT_KEY_FILE "PrivateKeyFile"
+#define CONNMAN_CONFIG_FIELD_PAC_FILE "PacFile"
#define CONNMAN_CONFIG_FIELD_PVT_KEY_PASSPHRASE "PrivateKeyPassphrase"
#define CONNMAN_CONFIG_FIELD_EAP_KEYMGMT_TYPE "KeymgmtType"
int _net_dbus_mptcp_get_path_manager(network_info_t *network_info, char **pm);
int _net_dbus_mptcp_set_scheduler(network_info_t *network_info, const char *scheduler);
int _net_dbus_mptcp_get_scheduler(network_info_t *network_info, char **scheduler);
+
+int _net_dbus_ethernet_eap_enable(gboolean enable, const char *profilename);
+int _net_dbus_ethernet_eap_supported(gboolean *supported);
+int _net_dbus_save_ethernet_eap_connection(network_info_t *network_info,
+ net_dev_info_t *net_info);
#ifdef __cplusplus
}
#endif
#define NETCONFIG_WIFI_INTERFACE NETCONFIG_SERVICE ".wifi"
#define NETCONFIG_STATISTICS_INTERFACE NETCONFIG_SERVICE ".network_statistics"
#define NETCONFIG_MPTCP_INTERFACE NETCONFIG_SERVICE ".mptcp"
+#define NETCONFIG_ETHERNET_INTERFACE NETCONFIG_SERVICE ".ethernet"
#define NETCONFIG_NETWORK_PATH "/net/netconfig/network"
#define NETCONFIG_WIFI_PATH "/net/netconfig/wifi"
#define NETCONFIG_STATISTICS_PATH "/net/netconfig/network_statistics"
#define NETCONFIG_MPTCP_PATH "/net/netconfig/mptcp"
+#define NETCONFIG_ETHERNET_PATH "/net/netconfig/ethernet"
#define NETCONFIG_TV_PROFILE_INTERFACE NETCONFIG_SERVICE ".tv_profile"
/** Maximum length of IPv6 Prefix */
#define NETPM_IPV6_MAX_PREFIX_LEN 128
+
+/**
+ * These lengths depends on authentication server being used,
+ * In case of freeradius server Max allowed length for username/password is 255
+ * Let us restrict this value to some optimal value say 50.
+ */
+#define NET_USERNAME_LEN 50
+
+/**
+ * These lengths depends on authentication server being used,
+ * In case of freeradius server Max allowed length for username/password is 255
+ * Let us restrict this value to some optimal value say 150.
+ */
+#define NET_PASSWORD_LEN 150
+
+/**
+ * length of CA Cert file name
+ * Used by EAP-TLS, EAP-TTLS and EAP-PEAP
+ */
+#define NET_CA_CERT_FILENAME_LEN 128
+
+/**
+ * length of Client Cert file name
+ * only used by EAP-TLS
+ */
+#define NET_CLIENT_CERT_FILENAME_LEN 128
+
+/**
+ * length of private key file name
+ * only used by EAP-TLS
+ */
+#define NET_PRIVATE_KEY_FILENAME_LEN 128
+
+/**
+ * length of PAC file name
+ * only used by EAP-FAST
+ */
+#define NET_PAC_FILENAME_LEN 128
+
+/**
+ * length of Private key password
+ * only used by EAP-TLS
+ */
+#define NET_PRIVATE_KEY_PASSWD_LEN 50
/*==================================================================================================
ENUMS
==================================================================================================*/
NET_DNS_CONFIG_TYPE_DYNAMIC,
} net_dns_config_type_t;
+/**
+ * @enum net_ethernet_eap_type_t
+ * Net Ethernet EAP Type
+ */
+typedef enum {
+ NET_ETHERNET_EAP_TYPE_MD5 = 0, /**< EAP MD5 type */
+ NET_ETHERNET_EAP_TYPE_PEAP = 1, /**< EAP PEAP type */
+ NET_ETHERNET_EAP_TYPE_TLS = 2, /**< EAP TLS type */
+ NET_ETHERNET_EAP_TYPE_TTLS = 3, /**< EAP TTLS type */
+ NET_ETHERNET_EAP_TYPE_FAST = 4, /**< EAP FAST type */
+} net_ethernet_eap_type_t;
+
+/**
+ * @enum net_ethernet_eap_auth_type_t
+ * Net Ethernet EAP Auth Type
+ */
+typedef enum {
+ NET_ETHERNET_EAP_AUTH_TYPE_NONE = 0, /**< EAP phase2 authentication none */
+ NET_ETHERNET_EAP_AUTH_TYPE_PAP = 1, /**< EAP phase2 authentication PAP */
+ NET_ETHERNET_EAP_AUTH_TYPE_MSCHAP = 2, /**< EAP phase2 authentication MSCHAP */
+ NET_ETHERNET_EAP_AUTH_TYPE_MSCHAPV2 = 3, /**< EAP phase2 authentication MSCHAPv2 */
+ NET_ETHERNET_EAP_AUTH_TYPE_GTC = 4, /**< EAP phase2 authentication GTC */
+ NET_ETHERNET_EAP_AUTH_TYPE_MD5 = 5, /**< EAP phase2 authentication MD5 */
+} net_ethernet_eap_auth_type_t;
+
+/**
+ * @enum net_ethernet_eap_peap_version_t
+ * Net Ethernet EAP PEAP Version
+ */
+typedef enum {
+ NET_ETHERNET_EAP_PEAP_VERSION_AUTO = 0, /**< PEAP version Automatic */
+ NET_ETHERNET_EAP_PEAP_VERSION_0 = 1, /**< PEAP version 0 */
+ NET_ETHERNET_EAP_PEAP_VERSION_1 = 2, /**< PEAP version 1 */
+} net_ethernet_eap_peap_version_t;
/*==================================================================================================
STRUCTURES AND OTHER TYPEDEFS
==================================================================================================*/
} net_auth_info_t;
/**
+ * Below structure is used by EAP over Ethernet
+ */
+typedef struct {
+ char username[NET_USERNAME_LEN+1]; /** User name */
+ char password[NET_PASSWORD_LEN+1]; /** Password */
+ char anonymous_identity[NET_USERNAME_LEN+1]; /** AnonymousIdentity */
+
+ /**
+ * Following fields are mandatory for EAP-TLS.
+ * Optional for EAP-PEAP and EAP-TTLS
+ *
+ * For EAP-PEAP and EAP-TTLS only ca_cert_filename[] is required
+ */
+ char ca_cert_filename[NET_CA_CERT_FILENAME_LEN+1]; /** Used to authenticate server */
+ char client_cert_filename[NET_CLIENT_CERT_FILENAME_LEN+1]; /** client certificate file name */
+ char private_key_filename[NET_PRIVATE_KEY_FILENAME_LEN+1]; /** private key file name */
+ char private_key_passwd[NET_PRIVATE_KEY_PASSWD_LEN+1]; /** private key password */
+
+ /** only for EAP-FAST */
+ char pac_filename[NET_PAC_FILENAME_LEN+1]; /** PAC file name */
+
+ net_ethernet_eap_type_t eap_type; /** eap type */
+ net_ethernet_eap_auth_type_t eap_auth; /** eap phase2 authentication type */
+
+ /** only for EAP-PEAP */
+ net_ethernet_eap_peap_version_t peap_version; /** eap-peap version */
+} net_ethernet_eap_info_t;
+
+/**
* Device Info in Connect response event
*/
typedef struct
/** Privacy of the connection link */
char Privacy6[NETPM_IPV6_MAX_PRIVACY_LEN+1];
+
+ /** Whether to use EAP over Ethernet or not */
+ gboolean use_eapol;
+
+ /** EAP over ethernet info */
+ net_ethernet_eap_info_t eap;
} net_dev_info_t;
/**
return Error;
}
+EXPORT_API int net_ethernet_eap_enable(gboolean enable, const char *profilename)
+{
+ __NETWORK_FUNC_ENTER__;
+ net_err_t Error = NET_ERR_NONE;
+
+ Error = _net_dbus_ethernet_eap_enable(enable, profilename);
+
+ if (Error != NET_ERR_NONE)
+ NETWORK_LOG(NETWORK_ERROR, "_net_dbus_ethernet_eap_enable failed");
+
+ __NETWORK_FUNC_EXIT__;
+ return Error;
+}
+
+EXPORT_API int net_ethernet_eap_supported(gboolean *supported)
+{
+ __NETWORK_FUNC_ENTER__;
+ net_err_t Error = NET_ERR_NONE;
+
+ Error = _net_dbus_ethernet_eap_supported(supported);
+
+ if (Error != NET_ERR_NONE)
+ NETWORK_LOG(NETWORK_ERROR, "_net_dbus_ethernet_eap_supported failed");
+
+ __NETWORK_FUNC_EXIT__;
+ return Error;
+}
+
+EXPORT_API int net_save_ethernet_eap_config(void *handle, net_dev_info_t *net_info)
+{
+ __NETWORK_FUNC_ENTER__;
+
+ net_err_t Error = NET_ERR_NONE;
+ network_info_t *network_info = (network_info_t *)handle;
+ const char *profile_name = net_info->ProfileName;
+
+ NETWORK_LOG(NETWORK_LOW, "Save eap config for profile: %s", profile_name);
+
+ if (_net_check_profile_name(profile_name) != NET_ERR_NONE) {
+ NETWORK_LOG(NETWORK_ERROR, "Invalid profile name");
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_INVALID_PARAM;
+ }
+
+ Error = _net_dbus_save_ethernet_eap_connection(network_info, net_info);
+ if (Error != NET_ERR_NONE) {
+ NETWORK_LOG(NETWORK_ERROR,
+ "Failed to save ethernet eap config, Error [%s]",
+ _net_print_error(Error));
+
+ __NETWORK_FUNC_EXIT__;
+ return Error;
+ }
+
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_NONE;
+}
+
/*****************************************************************************
* ConnMan Mesh Client Interface Async Function Definition
*****************************************************************************/
profile_name, NET_PROFILE_NAME_LEN_MAX+1);
Error = _net_dbus_open_connection(network_info, profile_name);
+
if (Error != NET_ERR_NONE) {
/* LCOV_EXCL_START */
NETWORK_LOG(NETWORK_ERROR,
return Error;
}
+static char *_net_convert_eap_type_to_string(net_ethernet_eap_type_t eap_type)
+{
+ switch (eap_type) {
+ case NET_ETHERNET_EAP_TYPE_MD5:
+ return "MD5";
+ case NET_ETHERNET_EAP_TYPE_PEAP:
+ return "PEAP";
+ case NET_ETHERNET_EAP_TYPE_TLS:
+ return "TLS";
+ case NET_ETHERNET_EAP_TYPE_TTLS:
+ return "TTLS";
+ case NET_ETHERNET_EAP_TYPE_FAST:
+ return "FAST";
+ default:
+ return NULL;
+ }
+}
+
+static char *_net_convert_eap_auth_type_to_string(net_ethernet_eap_auth_type_t eap_auth_type)
+{
+ switch (eap_auth_type) {
+ case NET_ETHERNET_EAP_AUTH_TYPE_NONE:
+ return "NONE";
+ case NET_ETHERNET_EAP_AUTH_TYPE_PAP:
+ return "PAP";
+ case NET_ETHERNET_EAP_AUTH_TYPE_MSCHAP:
+ return "MSCHAP";
+ case NET_ETHERNET_EAP_AUTH_TYPE_MSCHAPV2:
+ return "MSCHAPV2";
+ case NET_ETHERNET_EAP_AUTH_TYPE_GTC:
+ return "GTC";
+ case NET_ETHERNET_EAP_AUTH_TYPE_MD5:
+ return "MD5";
+ default:
+ return NULL;
+ }
+}
+
+static char *_net_convert_eap_peap_version_to_string(net_ethernet_eap_peap_version_t peap_version)
+{
+ switch (peap_version) {
+ case NET_ETHERNET_EAP_PEAP_VERSION_AUTO:
+ return "VERSION_AUTO";
+ case NET_ETHERNET_EAP_PEAP_VERSION_0:
+ return "VERSION_0";
+ case NET_ETHERNET_EAP_PEAP_VERSION_1:
+ return "VERSION_1";
+ default:
+ return NULL;
+ }
+}
+
+int _net_dbus_save_ethernet_eap_connection(network_info_t *network_info, net_dev_info_t *net_info)
+{
+ __NETWORK_FUNC_ENTER__;
+
+ net_err_t Error = NET_ERR_NONE;
+ GVariant *params = NULL;
+ GVariantBuilder *builder;
+
+ builder = g_variant_builder_new(G_VARIANT_TYPE("a{ss}"));
+ g_variant_builder_add(builder, "{ss}", CONNMAN_CONFIG_FIELD_TYPE, "wired");
+
+ char *eap_type = _net_convert_eap_type_to_string(net_info->eap.eap_type);
+ if (eap_type)
+ g_variant_builder_add(builder, "{ss}",
+ CONNMAN_CONFIG_FIELD_EAP_METHOD, eap_type);
+
+ switch(net_info->eap.eap_type) {
+ case NET_ETHERNET_EAP_TYPE_MD5:
+ if (net_info->eap.username[0] != '\0')
+ g_variant_builder_add(builder, "{ss}",
+ CONNMAN_CONFIG_FIELD_IDENTITY, net_info->eap.username);
+
+ if (net_info->eap.password[0] != '\0')
+ g_variant_builder_add(builder, "{ss}",
+ CONNMAN_CONFIG_FIELD_PASSPHRASE, net_info->eap.password);
+ break;
+ case NET_ETHERNET_EAP_TYPE_PEAP:
+ case NET_ETHERNET_EAP_TYPE_TTLS:
+ case NET_ETHERNET_EAP_TYPE_FAST:
+ if (net_info->eap.username[0] != '\0')
+ g_variant_builder_add(builder, "{ss}",
+ CONNMAN_CONFIG_FIELD_IDENTITY, net_info->eap.username);
+
+ if (net_info->eap.password[0] != '\0')
+ g_variant_builder_add(builder, "{ss}",
+ CONNMAN_CONFIG_FIELD_PASSPHRASE, net_info->eap.password);
+
+ if (net_info->eap.anonymous_identity[0] != '\0')
+ g_variant_builder_add(builder, "{ss}",
+ CONNMAN_CONFIG_FIELD_ANONYMOUS_IDENTITY, net_info->eap.anonymous_identity);
+
+ if (net_info->eap.eap_type != NET_ETHERNET_EAP_TYPE_FAST && net_info->eap.ca_cert_filename[0] != '\0')
+ g_variant_builder_add(builder, "{ss}",
+ CONNMAN_CONFIG_FIELD_CA_CERT_FILE, net_info->eap.ca_cert_filename);
+
+ char *auth_type = _net_convert_eap_auth_type_to_string(net_info->eap.eap_auth);
+ if (auth_type)
+ g_variant_builder_add(builder, "{ss}",
+ CONNMAN_CONFIG_FIELD_PHASE2, auth_type);
+
+ char *peap_version = _net_convert_eap_peap_version_to_string(net_info->eap.peap_version);
+ if (net_info->eap.eap_type == NET_ETHERNET_EAP_TYPE_PEAP && peap_version)
+ g_variant_builder_add(builder, "{ss}",
+ CONNMAN_CONFIG_FIELD_PHASE1, peap_version);
+
+ if (net_info->eap.eap_type == NET_ETHERNET_EAP_TYPE_FAST && net_info->eap.pac_filename[0] != '\0')
+ g_variant_builder_add(builder, "{ss}",
+ CONNMAN_CONFIG_FIELD_PAC_FILE, net_info->eap.pac_filename);
+ break;
+ case NET_ETHERNET_EAP_TYPE_TLS:
+ if (net_info->eap.username[0] != '\0')
+ g_variant_builder_add(builder, "{ss}",
+ CONNMAN_CONFIG_FIELD_IDENTITY, net_info->eap.username);
+
+ if (net_info->eap.ca_cert_filename[0] != '\0')
+ g_variant_builder_add(builder, "{ss}",
+ CONNMAN_CONFIG_FIELD_CA_CERT_FILE, net_info->eap.ca_cert_filename);
+
+ if (net_info->eap.client_cert_filename[0] != '\0')
+ g_variant_builder_add(builder, "{ss}",
+ CONNMAN_CONFIG_FIELD_CLIENT_CERT_FILE, net_info->eap.client_cert_filename);
+
+ if (net_info->eap.private_key_filename[0] != '\0')
+ g_variant_builder_add(builder, "{ss}",
+ CONNMAN_CONFIG_FIELD_PVT_KEY_FILE, net_info->eap.private_key_filename);
+
+ if (net_info->eap.private_key_passwd[0] != '\0')
+ g_variant_builder_add(builder, "{ss}",
+ CONNMAN_CONFIG_FIELD_PVT_KEY_PASSPHRASE, net_info->eap.private_key_passwd);
+ break;
+ }
+
+ params = g_variant_new("(o@a{ss})",
+ net_info->ProfileName, g_variant_builder_end(builder));
+ g_variant_builder_unref(builder);
+
+ /* Create the ethernet EAP config file and set property in connman */
+ Error = _net_invoke_dbus_method_nonblock(network_info,
+ NETCONFIG_SERVICE, NETCONFIG_ETHERNET_PATH,
+ NETCONFIG_ETHERNET_INTERFACE, "SetEapConfig", params,
+ DBUS_REPLY_TIMEOUT,
+ __net_open_connection_reply,
+ network_info);
+
+ __NETWORK_FUNC_EXIT__;
+ return Error;
+}
+
int _net_dbus_close_connection(network_info_t *network_info, const char* profile_name)
{
__NETWORK_FUNC_ENTER__;
return Error;
}
/* LCOV_EXCL_STOP */
+
+int _net_dbus_ethernet_eap_enable(gboolean enable, const char *profilename)
+{
+ __NETWORK_FUNC_ENTER__;
+
+ net_err_t Error = NET_ERR_NONE;
+ GVariant *message = NULL;
+ GVariant *params = NULL;
+ char *method = "EnableEap";
+
+ params = g_variant_new("(sb)", profilename, enable);
+ message = _net_invoke_dbus_method(NULL, NETCONFIG_SERVICE, NETCONFIG_ETHERNET_PATH,
+ NETCONFIG_ETHERNET_INTERFACE, method, params, &Error);
+
+ if (message == NULL) {
+ NETWORK_LOG(NETWORK_ERROR, "Failed to %s EAPoL.\n", enable ? "enable" : "disable");
+ __NETWORK_FUNC_EXIT__;
+ return Error;
+ }
+
+ g_variant_unref(message);
+
+ __NETWORK_FUNC_EXIT__;
+ return Error;
+}
+
+int _net_dbus_ethernet_eap_supported(gboolean *supported)
+{
+ __NETWORK_FUNC_ENTER__;
+ net_err_t Error = NET_ERR_NONE;
+ GVariant *message = NULL;
+
+ message = _net_invoke_dbus_method(NULL, NETCONFIG_SERVICE, NETCONFIG_ETHERNET_PATH,
+ NETCONFIG_ETHERNET_INTERFACE, "IsEapSupported", NULL, &Error);
+
+ if (message == NULL) {
+ NETWORK_LOG(NETWORK_ERROR, "Failed to get EAP over Ethernet status");
+ __NETWORK_FUNC_EXIT__;
+ return Error;
+ }
+
+ g_variant_get(message, "(b)", supported);
+ g_variant_unref(message);
+
+ __NETWORK_FUNC_EXIT__;
+ return Error;
+}
g_free(servers);
}
+static net_ethernet_eap_type_t __net_convert_eap_type_from_string(const char *eap_type)
+{
+ if (g_strcmp0(eap_type, "MD5") == 0)
+ return NET_ETHERNET_EAP_TYPE_MD5;
+ else if (g_strcmp0(eap_type, "PEAP") == 0)
+ return NET_ETHERNET_EAP_TYPE_PEAP;
+ else if (g_strcmp0(eap_type, "TLS") == 0)
+ return NET_ETHERNET_EAP_TYPE_TLS;
+ else if (g_strcmp0(eap_type, "TTLS") == 0)
+ return NET_ETHERNET_EAP_TYPE_TTLS;
+ else if (g_strcmp0(eap_type, "FAST") == 0)
+ return NET_ETHERNET_EAP_TYPE_FAST;
+ else
+ return -1;
+}
+
+static net_ethernet_eap_auth_type_t __net_convert_eap_auth_from_string(const char *eap_auth)
+{
+ if (g_strcmp0(eap_auth, "PAP") == 0)
+ return NET_ETHERNET_EAP_AUTH_TYPE_PAP;
+ else if (g_strcmp0(eap_auth, "MSCHAP") == 0)
+ return NET_ETHERNET_EAP_AUTH_TYPE_MSCHAP;
+ else if (g_strcmp0(eap_auth, "MSCHAPV2") == 0)
+ return NET_ETHERNET_EAP_AUTH_TYPE_MSCHAPV2;
+ else if (g_strcmp0(eap_auth, "GTC") == 0)
+ return NET_ETHERNET_EAP_AUTH_TYPE_GTC;
+ else if (g_strcmp0(eap_auth, "MD5") == 0)
+ return NET_ETHERNET_EAP_AUTH_TYPE_MD5;
+ else
+ return NET_ETHERNET_EAP_AUTH_TYPE_NONE;
+}
+
+static void __net_extract_eapol_value(GVariant *variant, net_dev_info_t *net_info)
+{
+ const gchar *subKey = NULL;
+ const gchar *value = NULL;
+ GVariant *var = NULL;
+ GVariantIter *iter = NULL;
+
+ g_variant_get(variant, "a{sv}", &iter);
+ while (g_variant_iter_loop(iter, "{sv}", &subKey, &var)) {
+ if (g_strcmp0(subKey, "UseEapol") == 0) {
+ net_info->use_eapol = g_variant_get_boolean(var);
+
+ } else if (g_strcmp0(subKey, "EAP") == 0) {
+ value = g_variant_get_string(var, NULL);
+
+ if (value != NULL)
+ net_info->eap.eap_type = __net_convert_eap_type_from_string(value);
+ } else if (g_strcmp0(subKey, "Identity") == 0) {
+ value = g_variant_get_string(var, NULL);
+
+ if (value != NULL)
+ g_strlcpy(net_info->eap.username, value, NET_USERNAME_LEN+1);
+ } else if (g_strcmp0(subKey, "AnonymousIdentity") == 0) {
+ value = g_variant_get_string(var, NULL);
+
+ if (value != NULL)
+ g_strlcpy(net_info->eap.anonymous_identity, value, NET_USERNAME_LEN+1);
+ } else if (g_strcmp0(subKey, "CACertFile") == 0) {
+ value = g_variant_get_string(var, NULL);
+
+ if (value != NULL)
+ g_strlcpy(net_info->eap.ca_cert_filename, value, NET_CA_CERT_FILENAME_LEN+1);
+ } else if (g_strcmp0(subKey, "ClientCertFile") == 0) {
+ value = g_variant_get_string(var, NULL);
+
+ if (value != NULL)
+ g_strlcpy(net_info->eap.client_cert_filename, value, NET_CLIENT_CERT_FILENAME_LEN+1);
+ } else if (g_strcmp0(subKey, "PrivateKeyFile") == 0) {
+ value = g_variant_get_string(var, NULL);
+
+ if (value != NULL)
+ g_strlcpy(net_info->eap.private_key_filename, value, NET_PRIVATE_KEY_FILENAME_LEN+1);
+ } else if (g_strcmp0(subKey, "Phase2") == 0) {
+ value = g_variant_get_string(var, NULL);
+
+ if (value != NULL)
+ net_info->eap.eap_auth = __net_convert_eap_auth_from_string(value);
+ } else if (g_strcmp0(subKey, "Phase1") == 0) {
+ value = g_variant_get_string(var, NULL);
+
+ if (value != NULL) {
+ if (g_strcmp0(value, "1") == 0)
+ net_info->eap.peap_version = 1;
+ else
+ net_info->eap.peap_version = 0;
+ }
+ } else if (g_strcmp0(subKey, "PacFile") == 0) {
+ value = g_variant_get_string(var, NULL);
+
+ if (value != NULL)
+ g_strlcpy(net_info->eap.pac_filename, value, NET_PAC_FILENAME_LEN+1);
+ }
+ }
+ g_variant_iter_free(iter);
+}
+
static int __net_extract_common_info(const char *key, GVariant *variant, net_profile_info_t *ProfInfo)
{
__NETWORK_FUNC_ENTER__;
__net_extract_proxy_configuration_value(variant, net_info);
} else if (g_strcmp0(key, "Provider") == 0) {
/* Do nothing */
+ } else if (g_strcmp0(key, "EapOverEthernet") == 0) {
+ __net_extract_eapol_value(variant, net_info);
}
__NETWORK_FUNC_EXIT__;