diff options
author | Nishanth V <nishanth.v@intel.com> | 2016-04-22 08:55:06 +0530 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2016-04-22 12:23:00 -0500 |
commit | dc1116876d443532ea367ee82a2364d6ed8db2d8 (patch) | |
tree | 9867daf82a83210128e8ecffcd5fbc616f8d2129 /drivers/rilmodem | |
parent | ca246413d189f958a2e665aeaa1704fcf7e533f1 (diff) | |
download | ofono-dc1116876d443532ea367ee82a2364d6ed8db2d8.tar.gz |
rilmodem: Add address to protocol type util func
Diffstat (limited to 'drivers/rilmodem')
-rw-r--r-- | drivers/rilmodem/rilutil.c | 27 | ||||
-rw-r--r-- | drivers/rilmodem/rilutil.h | 2 |
2 files changed, 29 insertions, 0 deletions
diff --git a/drivers/rilmodem/rilutil.c b/drivers/rilmodem/rilutil.c index 44e5a9c4..6cdce9a6 100644 --- a/drivers/rilmodem/rilutil.c +++ b/drivers/rilmodem/rilutil.c @@ -28,6 +28,7 @@ #include <gril.h> #include <string.h> #include <stdlib.h> +#include <arpa/inet.h> #define OFONO_API_SUBJECT_TO_CHANGE #include <ofono/log.h> @@ -132,3 +133,29 @@ int ril_util_registration_state_to_status(int reg_state) return reg_state; } + +int ril_util_address_to_gprs_proto(const char *addr) +{ + int ret = -1; + struct in_addr ipv4; + struct in6_addr ipv6; + char **addr_split = g_strsplit(addr, "/", 2); + + if (addr_split == NULL || g_strv_length(addr_split) == 0) + goto done; + + if (inet_pton(AF_INET, addr_split[0], &ipv4) > 0) { + ret = OFONO_GPRS_PROTO_IP; + goto done; + } + + if (inet_pton(AF_INET6, addr_split[0], &ipv6) > 0) { + ret = OFONO_GPRS_PROTO_IPV6; + goto done; + } + +done: + g_strfreev(addr_split); + + return ret; +} diff --git a/drivers/rilmodem/rilutil.h b/drivers/rilmodem/rilutil.h index 03618013..1791cda0 100644 --- a/drivers/rilmodem/rilutil.h +++ b/drivers/rilmodem/rilutil.h @@ -109,6 +109,8 @@ const char *ril_util_gprs_proto_to_ril_string(enum ofono_gprs_proto); int ril_util_registration_state_to_status(int reg_state); +int ril_util_address_to_gprs_proto(const char *addr); + #define DECLARE_FAILURE(e) \ struct ofono_error e; \ e.type = OFONO_ERROR_TYPE_FAILURE; \ |