From dc1116876d443532ea367ee82a2364d6ed8db2d8 Mon Sep 17 00:00:00 2001 From: Nishanth V Date: Fri, 22 Apr 2016 08:55:06 +0530 Subject: [PATCH] rilmodem: Add address to protocol type util func --- drivers/rilmodem/rilutil.c | 27 +++++++++++++++++++++++++++ drivers/rilmodem/rilutil.h | 2 ++ 2 files changed, 29 insertions(+) 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 #include #include +#include #define OFONO_API_SUBJECT_TO_CHANGE #include @@ -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; \