summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2008-03-01 07:53:50 +0100
committerMarcel Holtmann <marcel@holtmann.org>2008-03-01 07:53:50 +0100
commite3db50a2ec3968dc31b780ad0bb794b908c227bb (patch)
tree5a191ab0a2d0a8f591dea64101a128aa82f506c4 /src
parent658e0e6d8699510d8ea94f0bb6e44718f9956e96 (diff)
downloadconnman-e3db50a2ec3968dc31b780ad0bb794b908c227bb.tar.gz
connman-e3db50a2ec3968dc31b780ad0bb794b908c227bb.tar.bz2
connman-e3db50a2ec3968dc31b780ad0bb794b908c227bb.zip
Add callbacks for starting and stopping interface
Diffstat (limited to 'src')
-rw-r--r--src/iface-inet.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/iface-inet.c b/src/iface-inet.c
index a09ba312..a0915af4 100644
--- a/src/iface-inet.c
+++ b/src/iface-inet.c
@@ -140,8 +140,13 @@ int __connman_iface_up(struct connman_iface *iface)
ifr.ifr_flags |= IFF_UP;
- if (ioctl(sk, SIOCSIFFLAGS, &ifr) < 0)
+ if (ioctl(sk, SIOCSIFFLAGS, &ifr) < 0) {
err = -errno;
+ goto done;
+ }
+
+ if (iface->driver->start)
+ err = iface->driver->start(iface);
else
err = 0;
@@ -158,6 +163,12 @@ int __connman_iface_down(struct connman_iface *iface)
DBG("iface %p", iface);
+ if (iface->driver->stop) {
+ err = iface->driver->stop(iface);
+ if (err < 0)
+ return err;
+ }
+
sk = socket(PF_INET, SOCK_DGRAM, 0);
if (sk < 0)
return -errno;