summaryrefslogtreecommitdiff
path: root/drivers/rilmodem
diff options
context:
space:
mode:
authorNishanth V <nishanth.v@intel.com>2016-04-22 08:55:06 +0530
committerDenis Kenzior <denkenz@gmail.com>2016-04-22 12:23:00 -0500
commitdc1116876d443532ea367ee82a2364d6ed8db2d8 (patch)
tree9867daf82a83210128e8ecffcd5fbc616f8d2129 /drivers/rilmodem
parentca246413d189f958a2e665aeaa1704fcf7e533f1 (diff)
downloadofono-dc1116876d443532ea367ee82a2364d6ed8db2d8.tar.gz
rilmodem: Add address to protocol type util func
Diffstat (limited to 'drivers/rilmodem')
-rw-r--r--drivers/rilmodem/rilutil.c27
-rw-r--r--drivers/rilmodem/rilutil.h2
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; \