goto done;
}
- if (iface->driver->start)
- err = iface->driver->start(iface);
- else
- err = 0;
+ err = 0;
done:
close(sk);
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;
iface->state = CONNMAN_IFACE_STATE_SHUTDOWN;
state_changed(iface);
connman_iface_clear_ipv4(iface);
- __connman_iface_down(iface);
+ if (iface->driver->stop)
+ iface->driver->stop(iface);
+ else
+ __connman_iface_down(iface);
break;
case CONNMAN_IFACE_POLICY_IGNORE:
break;
case CONNMAN_IFACE_POLICY_AUTO:
- __connman_iface_up(iface);
+ if (iface->driver->start)
+ iface->driver->start(iface);
+ else
+ __connman_iface_up(iface);
state_changed(iface);
break;
if (iface->policy == CONNMAN_IFACE_POLICY_AUTO) {
iface->state = CONNMAN_IFACE_STATE_ENABLED;
- __connman_iface_up(iface);
+ if (iface->driver->start)
+ iface->driver->start(iface);
+ else
+ __connman_iface_up(iface);
} else
iface->state = CONNMAN_IFACE_STATE_SHUTDOWN;
+
state_changed(iface);
}