tethering: Use already existing 'tether' bridge interface
authorPatrik Flykt <patrik.flykt@linux.intel.com>
Tue, 15 Nov 2011 11:19:51 +0000 (13:19 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Tue, 15 Nov 2011 12:31:34 +0000 (13:31 +0100)
When creating bridge interface 'tether', don't report error if
it already exists. Check also -EALREADY given by connman_inet_ifup()
via enable_bridge() if the bridge interface was already up.

Fixes BMC#23931

src/tethering.c

index b4ab993..8d6532b 100644 (file)
@@ -210,10 +210,11 @@ static int create_bridge(const char *name)
        if (sk < 0)
                return -EOPNOTSUPP;
 
-       err = ioctl(sk, SIOCBRADDBR, name);
-
-       if (err < 0)
-               return -EOPNOTSUPP;
+       if (ioctl(sk, SIOCBRADDBR, name) == -1) {
+               err = -errno;
+               if (err != -EEXIST)
+                       return -EOPNOTSUPP;
+       }
 
        err = set_forward_delay(name, 0);
 
@@ -348,7 +349,7 @@ void __connman_tethering_set_enabled(void)
                return;
 
        err = enable_bridge(BRIDGE_NAME);
-       if (err < 0) {
+       if (err < 0 && err != -EALREADY) {
                remove_bridge(BRIDGE_NAME);
                return;
        }