From 131653f997c516b21646e3b9d04fd47a0b3c7361 Mon Sep 17 00:00:00 2001 From: hyunuktak Date: Mon, 18 Apr 2016 15:56:23 +0900 Subject: [PATCH] Add some types for cellular pdn Change-Id: I8e629102055c78a8a6f269ae9b64c18a77a9efb9 Signed-off-by: hyunuktak --- include/profile/network-pm-intf.h | 16 +++++++++++++ packaging/libnet-client.spec | 2 +- src/include/network-internal.h | 4 ++++ src/network-dbus-request.c | 50 ++++++++++++++++++++++++++++++++++++++- src/network-profile-intf.c | 30 +++++++++++++++++++++++ 5 files changed, 100 insertions(+), 2 deletions(-) diff --git a/include/profile/network-pm-intf.h b/include/profile/network-pm-intf.h index 5bd302e..29f6c39 100755 --- a/include/profile/network-pm-intf.h +++ b/include/profile/network-pm-intf.h @@ -66,6 +66,18 @@ typedef enum } net_pdp_type_t; /** + * @enum net_pdn_type_e + * This enumeration defines the pdn type. + */ +typedef enum +{ + NET_PDN_TYPE_UNKNOWN = 0x00, + NET_PDN_TYPE_IPV4 = 0x02, + NET_PDN_TYPE_IPV6 = 0x05, + NET_PDN_TYPE_IPV4_IPV6 = 0x06, +} net_pdn_type_e; + +/** * @enum net_state_type_t * This enumeration defines the service state type. */ @@ -117,6 +129,10 @@ typedef struct { /** Specifies a protocol type */ net_pdp_type_t ProtocolType; + /** Specifies a pdn type */ + net_pdn_type_e PdnType; + /** Specifies a roam pdn type */ + net_pdn_type_e RoamPdnType; /** Specifies a service type(Internet, MMS, WAP, etc...) */ net_service_type_t ServiceType; /** Network Access Point Name */ diff --git a/packaging/libnet-client.spec b/packaging/libnet-client.spec index 923f7d6..7a78c06 100755 --- a/packaging/libnet-client.spec +++ b/packaging/libnet-client.spec @@ -1,6 +1,6 @@ Name: libnet-client Summary: Network Client library (Shared library) -Version: 1.1.49 +Version: 1.1.50 Release: 1 Group: System/Network License: Flora-1.1 diff --git a/src/include/network-internal.h b/src/include/network-internal.h index 8cbe469..54a5bd6 100755 --- a/src/include/network-internal.h +++ b/src/include/network-internal.h @@ -246,6 +246,10 @@ typedef struct char ProfileName[NET_PROFILE_NAME_LEN_MAX+1]; /** Service type of this profile context */ net_service_type_t ServiceType; + /** Pdn type of this profile context */ + net_pdn_type_e PdnType; + /** Roam Pdn type of this profile context */ + net_pdn_type_e RoamPdnType; /** Network Access Point Name */ char Apn[NET_PDP_APN_LEN_MAX+1]; /** Authentication info of the PDP profile */ diff --git a/src/network-dbus-request.c b/src/network-dbus-request.c index 4bbaa31..dcb6b56 100755 --- a/src/network-dbus-request.c +++ b/src/network-dbus-request.c @@ -586,7 +586,7 @@ static char *__net_make_group_name(const char *ssid, return NULL; if (NULL != ssid) { - for (i = 0; i < ssid_len; i++) + for (i = 0; i < ssid_len; i++) g_snprintf(ssid_hex + i * 2, 3, "%02x", ssid[i]); } else { g_snprintf(ssid_hex, strlen(hidden_str) + 1, "%s", hidden_str); @@ -1866,7 +1866,11 @@ int _net_dbus_add_pdp_profile(net_profile_info_t *prof_info) const char *auth_id = "auth_id"; const char *apn = "apn"; const char *keyword = "profile_name"; + const char *pdp_protocol = "pdp_protocol"; + const char *roam_pdp_protocol = "roam_pdp_protocol"; + char buff_pdn_type[10] = ""; + char buff_roam_pdn_type[10] = ""; char buff_svc_type[10] = ""; char buff_auth_type[10] = ""; char *temp_ptr = NULL; @@ -1940,6 +1944,26 @@ int _net_dbus_add_pdp_profile(net_profile_info_t *prof_info) g_variant_builder_add(builder, "{ss}", apn, temp_ptr); } + if (prof_info->ProfileInfo.Pdp.PdnType == NET_PDN_TYPE_IPV4 || + prof_info->ProfileInfo.Pdp.PdnType == NET_PDN_TYPE_IPV6 || + prof_info->ProfileInfo.Pdp.PdnType == NET_PDN_TYPE_IPV4_IPV6) { + g_snprintf(buff_pdn_type, 10, "%d", + prof_info->ProfileInfo.Pdp.PdnType); + temp_ptr = buff_pdn_type; + + g_variant_builder_add(builder, "{ss}", pdp_protocol, temp_ptr); + } + + if (prof_info->ProfileInfo.Pdp.RoamPdnType == NET_PDN_TYPE_IPV4 || + prof_info->ProfileInfo.Pdp.RoamPdnType == NET_PDN_TYPE_IPV6 || + prof_info->ProfileInfo.Pdp.RoamPdnType == NET_PDN_TYPE_IPV4_IPV6) { + g_snprintf(buff_roam_pdn_type, 10, "%d", + prof_info->ProfileInfo.Pdp.RoamPdnType); + temp_ptr = buff_roam_pdn_type; + + g_variant_builder_add(builder, "{ss}", roam_pdp_protocol, temp_ptr); + } + if (strlen(prof_info->ProfileInfo.Pdp.Keyword) > 0) { temp_ptr = prof_info->ProfileInfo.Pdp.Keyword; @@ -2025,7 +2049,11 @@ int _net_dbus_modify_pdp_profile(net_profile_info_t *prof_info, const char *prof const char *default_conn = "default_internet_conn"; const char *hidden = "hidden"; const char *editable = "editable"; + const char *pdp_protocol = "pdp_protocol"; + const char *roam_pdp_protocol = "roam_pdp_protocol"; + char buff_pdn_type[10] = ""; + char buff_roam_pdn_type[10] = ""; char buff_svc_type[10] = ""; char buff_auth_type[10] = ""; char *temp_ptr = NULL; @@ -2088,6 +2116,26 @@ int _net_dbus_modify_pdp_profile(net_profile_info_t *prof_info, const char *prof g_variant_builder_add(builder, "{ss}", apn, temp_ptr); } + if (prof_info->ProfileInfo.Pdp.PdnType == NET_PDN_TYPE_IPV4 || + prof_info->ProfileInfo.Pdp.PdnType == NET_PDN_TYPE_IPV6 || + prof_info->ProfileInfo.Pdp.PdnType == NET_PDN_TYPE_IPV4_IPV6) { + g_snprintf(buff_pdn_type, 10, "%d", + prof_info->ProfileInfo.Pdp.PdnType); + temp_ptr = buff_pdn_type; + + g_variant_builder_add(builder, "{ss}", pdp_protocol, temp_ptr); + } + + if (prof_info->ProfileInfo.Pdp.RoamPdnType == NET_PDN_TYPE_IPV4 || + prof_info->ProfileInfo.Pdp.RoamPdnType == NET_PDN_TYPE_IPV6 || + prof_info->ProfileInfo.Pdp.RoamPdnType == NET_PDN_TYPE_IPV4_IPV6) { + g_snprintf(buff_roam_pdn_type, 10, "%d", + prof_info->ProfileInfo.Pdp.RoamPdnType); + temp_ptr = buff_roam_pdn_type; + + g_variant_builder_add(builder, "{ss}", roam_pdp_protocol, temp_ptr); + } + if (strlen(prof_info->ProfileInfo.Pdp.Keyword) > 0) { temp_ptr = prof_info->ProfileInfo.Pdp.Keyword; diff --git a/src/network-profile-intf.c b/src/network-profile-intf.c index 04f5c75..1d62fbf 100755 --- a/src/network-profile-intf.c +++ b/src/network-profile-intf.c @@ -82,6 +82,8 @@ static int __net_pm_init_profile_info(net_device_t profile_type, net_profile_inf ProfInfo->profile_type = NET_DEVICE_CELLULAR; ProfInfo->ProfileInfo.Pdp.ProtocolType = NET_PDP_TYPE_NONE; ProfInfo->ProfileInfo.Pdp.ServiceType = NET_SERVICE_UNKNOWN; + ProfInfo->ProfileInfo.Pdp.PdnType = NET_PDN_TYPE_UNKNOWN; + ProfInfo->ProfileInfo.Pdp.RoamPdnType = NET_PDN_TYPE_UNKNOWN; ProfInfo->ProfileInfo.Pdp.AuthInfo.AuthType = NET_PDP_AUTH_NONE; ProfInfo->ProfileInfo.Pdp.IsStatic = FALSE; ProfInfo->ProfileInfo.Pdp.Roaming = FALSE; @@ -138,6 +140,8 @@ static int __net_telephony_init_profile_info(net_telephony_profile_info_t* ProfI memset(ProfInfo->ProfileName, '\0', NET_PROFILE_NAME_LEN_MAX+1); ProfInfo->ServiceType = NET_SERVICE_UNKNOWN; + ProfInfo->PdnType= NET_PDN_TYPE_UNKNOWN; + ProfInfo->RoamPdnType= NET_PDN_TYPE_UNKNOWN; memset(ProfInfo->Apn, '\0', NET_PDP_APN_LEN_MAX+1); ProfInfo->AuthInfo.AuthType = NET_PDP_AUTH_NONE; @@ -203,6 +207,30 @@ static int __net_telephony_get_profile_info(net_profile_name_t* ProfileName, net } else if (g_strcmp0(key, "apn") == 0) { if (value != NULL) g_strlcpy(ProfileInfo->Apn, value, NET_PDP_APN_LEN_MAX); + } else if (g_strcmp0(key, "pdp_protocol") == 0) { + net_pdn_type_e pdnType = NET_PDN_TYPE_UNKNOWN; + + if (value != NULL) + pdnType = atoi(value); + + if (pdnType == NET_PDN_TYPE_IPV4) + ProfileInfo->PdnType = NET_PDN_TYPE_IPV4; + else if (pdnType == NET_PDN_TYPE_IPV6) + ProfileInfo->PdnType = NET_PDN_TYPE_IPV6; + else if (pdnType == NET_PDN_TYPE_IPV4_IPV6) + ProfileInfo->PdnType = NET_PDN_TYPE_IPV4_IPV6; + } else if (g_strcmp0(key, "roam_pdp_protocol") == 0) { + net_pdn_type_e roamPdnType = NET_PDN_TYPE_UNKNOWN; + + if (value != NULL) + roamPdnType = atoi(value); + + if (roamPdnType == NET_PDN_TYPE_IPV4) + ProfileInfo->RoamPdnType = NET_PDN_TYPE_IPV4; + else if (roamPdnType == NET_PDN_TYPE_IPV6) + ProfileInfo->RoamPdnType = NET_PDN_TYPE_IPV6; + else if (roamPdnType == NET_PDN_TYPE_IPV4_IPV6) + ProfileInfo->RoamPdnType = NET_PDN_TYPE_IPV4_IPV6; } else if (g_strcmp0(key, "auth_type") == 0) { net_auth_type_t authType = NET_PDP_AUTH_NONE; @@ -1500,6 +1528,8 @@ static int __net_extract_mobile_info(GVariantIter *array, net_profile_info_t *Pr telephony_profinfo.HomeURL, NET_HOME_URL_LEN_MAX); ProfInfo->ProfileInfo.Pdp.AuthInfo.AuthType = telephony_profinfo.AuthInfo.AuthType; + ProfInfo->ProfileInfo.Pdp.PdnType = telephony_profinfo.PdnType; + ProfInfo->ProfileInfo.Pdp.RoamPdnType = telephony_profinfo.RoamPdnType; if (strlen(telephony_profinfo.AuthInfo.UserName) > 0) g_strlcpy(ProfInfo->ProfileInfo.Pdp.AuthInfo.UserName, -- 2.7.4