diff options
-rw-r--r-- | drivers/atmodem/gprs-context.c | 13 |
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); |