diff --git a/ChangeLog b/ChangeLog index 2056ae4b2..e76f584a8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2008-10-30 Dan Williams + + Patch from Alexander Sack + + Fix "ppp connections don't honour ip4 connection settings" + + * src/nm-device-ethernet.c + - (real_act_stage4_get_ip4_config): merge ip4config settings + with results from ppp manager + + * src/nm-serial-device.c + - (real_act_stage4_get_ip4_config): merge ip4config settings + with results from ppp manager + 2008-10-29 Dan Williams * libnm-util/libnm-util.ver diff --git a/src/nm-device-ethernet.c b/src/nm-device-ethernet.c index 4ef4ee1e4..7f8fa9a83 100644 --- a/src/nm-device-ethernet.c +++ b/src/nm-device-ethernet.c @@ -1333,6 +1333,7 @@ real_act_stage4_get_ip4_config (NMDevice *device, g_return_val_if_fail (config != NULL, NM_ACT_STAGE_RETURN_FAILURE); g_return_val_if_fail (*config == NULL, NM_ACT_STAGE_RETURN_FAILURE); + g_return_val_if_fail (reason != NULL, NM_ACT_STAGE_RETURN_FAILURE); if (!priv->ppp_manager) { /* Regular ethernet connection. */ @@ -1356,9 +1357,17 @@ real_act_stage4_get_ip4_config (NMDevice *device, nm_ip4_config_set_mtu (*config, mtu); } } else { + NMConnection *connection; + NMSettingIP4Config *s_ip4; + + connection = nm_act_request_get_connection (nm_device_get_act_request (device)); + g_assert (connection); + s_ip4 = (NMSettingIP4Config *) nm_connection_get_setting (connection, NM_TYPE_SETTING_IP4_CONFIG); + /* PPPoE */ *config = priv->pending_ip4_config; priv->pending_ip4_config = NULL; + nm_utils_merge_ip4_config (*config, s_ip4); ret = NM_ACT_STAGE_RETURN_SUCCESS; } diff --git a/src/nm-serial-device.c b/src/nm-serial-device.c index 4b3c102b6..eeea3b755 100644 --- a/src/nm-serial-device.c +++ b/src/nm-serial-device.c @@ -21,6 +21,7 @@ #include "nm-marshal.h" #include "nm-utils.h" #include "nm-serial-device-glue.h" +#include "NetworkManagerUtils.h" static gboolean serial_debug = FALSE; @@ -1057,9 +1058,21 @@ real_act_stage4_get_ip4_config (NMDevice *device, NMDeviceStateReason *reason) { NMSerialDevicePrivate *priv = NM_SERIAL_DEVICE_GET_PRIVATE (device); + NMConnection *connection; + NMSettingIP4Config *s_ip4; + + g_return_val_if_fail (config != NULL, NM_ACT_STAGE_RETURN_FAILURE); + g_return_val_if_fail (*config == NULL, NM_ACT_STAGE_RETURN_FAILURE); + g_return_val_if_fail (reason != NULL, NM_ACT_STAGE_RETURN_FAILURE); + + connection = nm_act_request_get_connection (nm_device_get_act_request (device)); + g_assert (connection); + + s_ip4 = (NMSettingIP4Config *) nm_connection_get_setting (connection, NM_TYPE_SETTING_IP4_CONFIG); *config = priv->pending_ip4_config; priv->pending_ip4_config = NULL; + nm_utils_merge_ip4_config (*config, s_ip4); return NM_ACT_STAGE_RETURN_SUCCESS; }