diff --git a/src/modem-manager/nm-modem.c b/src/modem-manager/nm-modem.c index 67de76c424..91c0b06dae 100644 --- a/src/modem-manager/nm-modem.c +++ b/src/modem-manager/nm-modem.c @@ -384,6 +384,17 @@ nm_modem_stage3_ip4_config_start (NMModem *self, return ret; } +NMActStageReturn +nm_modem_stage3_ip6_config_start (NMModem *self, + NMDevice *device, + NMDeviceClass *device_class, + NMDeviceStateReason *reason) +{ + /* FIXME: We don't support IPv6 on modems quite yet... */ + nm_device_activate_schedule_ip6_config_timeout (device); + return NM_ACT_STAGE_RETURN_POSTPONE; +} + static void cancel_get_secrets (NMModem *self) { diff --git a/src/modem-manager/nm-modem.h b/src/modem-manager/nm-modem.h index 8653c35587..8fe52bc05c 100644 --- a/src/modem-manager/nm-modem.h +++ b/src/modem-manager/nm-modem.h @@ -130,6 +130,11 @@ NMActStageReturn nm_modem_stage3_ip4_config_start (NMModem *modem, NMDeviceClass *device_class, NMDeviceStateReason *reason); +NMActStageReturn nm_modem_stage3_ip6_config_start (NMModem *modem, + NMDevice *device, + NMDeviceClass *device_class, + NMDeviceStateReason *reason); + gboolean nm_modem_get_secrets (NMModem *modem, const char *setting_name, gboolean request_new, diff --git a/src/nm-device-bt.c b/src/nm-device-bt.c index 964e2d765a..c3754cddfa 100644 --- a/src/nm-device-bt.c +++ b/src/nm-device-bt.c @@ -941,6 +941,25 @@ real_act_stage3_ip4_config_start (NMDevice *device, return ret; } +static NMActStageReturn +real_act_stage3_ip6_config_start (NMDevice *device, + NMIP6Config **out_config, + NMDeviceStateReason *reason) +{ + NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (device); + NMActStageReturn ret; + + if (priv->bt_type == NM_BT_CAPABILITY_DUN) { + ret = nm_modem_stage3_ip6_config_start (NM_DEVICE_BT_GET_PRIVATE (device)->modem, + device, + NM_DEVICE_CLASS (nm_device_bt_parent_class), + reason); + } else + ret = NM_DEVICE_CLASS (nm_device_bt_parent_class)->act_stage3_ip6_config_start (device, out_config, reason); + + return ret; +} + static void real_deactivate (NMDevice *device) { @@ -1133,6 +1152,7 @@ nm_device_bt_class_init (NMDeviceBtClass *klass) device_class->deactivate = real_deactivate; device_class->act_stage2_config = real_act_stage2_config; device_class->act_stage3_ip4_config_start = real_act_stage3_ip4_config_start; + device_class->act_stage3_ip6_config_start = real_act_stage3_ip6_config_start; device_class->check_connection_compatible = real_check_connection_compatible; device_class->complete_connection = real_complete_connection; device_class->hwaddr_matches = hwaddr_matches; diff --git a/src/nm-device-modem.c b/src/nm-device-modem.c index 8689a88015..b8280caf11 100644 --- a/src/nm-device-modem.c +++ b/src/nm-device-modem.c @@ -279,6 +279,17 @@ real_act_stage3_ip4_config_start (NMDevice *device, reason); } +static NMActStageReturn +real_act_stage3_ip6_config_start (NMDevice *device, + NMIP6Config **out_config, + NMDeviceStateReason *reason) +{ + return nm_modem_stage3_ip6_config_start (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem, + device, + NM_DEVICE_CLASS (nm_device_modem_parent_class), + reason); +} + /*****************************************************************************/ static gboolean @@ -446,6 +457,7 @@ nm_device_modem_class_init (NMDeviceModemClass *mclass) device_class->act_stage1_prepare = real_act_stage1_prepare; device_class->act_stage2_config = real_act_stage2_config; device_class->act_stage3_ip4_config_start = real_act_stage3_ip4_config_start; + device_class->act_stage3_ip6_config_start = real_act_stage3_ip6_config_start; device_class->get_enabled = real_get_enabled; device_class->set_enabled = real_set_enabled; diff --git a/src/nm-device.c b/src/nm-device.c index d5a69c350b..1d55d14c08 100644 --- a/src/nm-device.c +++ b/src/nm-device.c @@ -917,8 +917,8 @@ ip6_method_matches (NMConnection *connection, const char *match) g_assert (method); } - /* Treat missing IP6 setting as IGNORE */ - if (!s_ip6 && !strcmp (match, NM_SETTING_IP6_CONFIG_METHOD_IGNORE)) + /* Treat missing IP6 setting as AUTO */ + if (!s_ip6 && !strcmp (match, NM_SETTING_IP6_CONFIG_METHOD_AUTO)) return TRUE; return method && !strcmp (method, match);