static gboolean nas_update_cb (gpointer user_data) { NMDeviceAdsl *self = NM_DEVICE_ADSL (user_data); NMDeviceAdslPrivate *priv = NM_DEVICE_ADSL_GET_PRIVATE (self); NMDevice *device = NM_DEVICE (self); g_assert (priv->nas_ifname); priv->nas_update_count++; if (priv->nas_update_count > 10) { priv->nas_update_id = 0; _LOGW (LOGD_ADSL, "failed to find br2684 interface %s ifindex after timeout", priv->nas_ifname); nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_BR2684_FAILED); return G_SOURCE_REMOVE; } g_warn_if_fail (priv->nas_ifindex < 0); priv->nas_ifindex = nm_platform_link_get_ifindex (NM_PLATFORM_GET, priv->nas_ifname); if (priv->nas_ifindex < 0) { /* Keep waiting for it to appear */ return G_SOURCE_CONTINUE; } priv->nas_update_id = 0; _LOGD (LOGD_ADSL, "using br2684 iface '%s' index %d", priv->nas_ifname, priv->nas_ifindex); if (pppoe_vcc_config (self)) { nm_device_activate_schedule_stage3_ip_config_start (device); } else { nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_BR2684_FAILED); } return G_SOURCE_REMOVE; }
static void deactivate (NMDevice *device) { adsl_cleanup (NM_DEVICE_ADSL (device)); }