summaryrefslogtreecommitdiff
path: root/src/tethering.c
diff options
context:
space:
mode:
authorPatrik Flykt <patrik.flykt@linux.intel.com>2011-11-15 13:19:51 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2011-11-15 13:31:34 +0100
commit43a29da43f9d9f518c939d0251bc0f266dff7887 (patch)
tree128f6186cb87e8d95d0dac7865754473fc77ccd6 /src/tethering.c
parent1e55b7082ddad54711949af3a5ae35fb900bb138 (diff)
downloadconnman-43a29da43f9d9f518c939d0251bc0f266dff7887.tar.gz
connman-43a29da43f9d9f518c939d0251bc0f266dff7887.tar.bz2
connman-43a29da43f9d9f518c939d0251bc0f266dff7887.zip
tethering: Use already existing 'tether' bridge interface
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
Diffstat (limited to 'src/tethering.c')
-rw-r--r--src/tethering.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/tethering.c b/src/tethering.c
index b4ab993c..8d6532b7 100644
--- a/src/tethering.c
+++ b/src/tethering.c
@@ -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;
}