From cfe55847a066960b05c73e27436500c58f9efbcb Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Thu, 10 Feb 2011 17:13:46 +0100 Subject: [PATCH] tethering: Check for kernel bridge support --- src/technology.c | 2 ++ src/tethering.c | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/technology.c b/src/technology.c index a5366dc..2a48698 100644 --- a/src/technology.c +++ b/src/technology.c @@ -388,6 +388,8 @@ static DBusMessage *set_property(DBusConnection *conn, return __connman_error_in_progress(msg); bridge = __connman_tethering_get_bridge(); + if (bridge == NULL) + return __connman_error_not_supported(msg); err = set_tethering(technology, bridge, tethering); if (err < 0) diff --git a/src/tethering.c b/src/tethering.c index 2609ab0..705f5ee 100644 --- a/src/tethering.c +++ b/src/tethering.c @@ -23,6 +23,8 @@ #include #endif +#include +#include #include #include #include @@ -33,6 +35,8 @@ #include +#define BRIDGE_SYSFS_DIR "/sys/module/bridge" + #define BRIDGE_NAME "tether" #define BRIDGE_IP "192.168.218.1" #define BRIDGE_BCAST "192.168.218.255" @@ -47,6 +51,13 @@ static GDHCPServer *tethering_dhcp_server = NULL; const char *__connman_tethering_get_bridge(void) { + struct stat st; + + if (stat(BRIDGE_SYSFS_DIR, &st) < 0) { + connman_error("Missing support for 802.1d ethernet bridging"); + return NULL; + } + return BRIDGE_NAME; } -- 2.7.4