summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/atmodem/gprs-context.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/atmodem/gprs-context.c b/drivers/atmodem/gprs-context.c
index c90d6c2e..df5b08b3 100644
--- a/drivers/atmodem/gprs-context.c
+++ b/drivers/atmodem/gprs-context.c
@@ -27,6 +27,8 @@
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
+#include <errno.h>
+#include <sys/stat.h>
#include <glib.h>
@@ -40,6 +42,8 @@
#include "atmodem.h"
+#define TUN_SYSFS_DIR "/sys/devices/virtual/misc/tun"
+
#define STATIC_IP_NETMASK "255.255.255.255"
static const char *none_prefix[] = { NULL };
@@ -255,8 +259,17 @@ static int at_gprs_context_probe(struct ofono_gprs_context *gc,
{
GAtChat *chat = data;
struct gprs_context_data *gcd;
+ struct stat st;
+
+ if (stat(TUN_SYSFS_DIR, &st) < 0) {
+ ofono_error("Missing support for TUN/TAP devices");
+ return -ENODEV;
+ }
gcd = g_new0(struct gprs_context_data, 1);
+ if (!gcd)
+ return -ENOMEM;
+
gcd->chat = g_at_chat_clone(chat);
ofono_gprs_context_set_data(gc, gcd);