diff options
author | Dan Williams <dcbw@redhat.com> | 2008-10-30 04:31:29 +0000 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2008-10-30 04:31:29 +0000 |
commit | b955a8197e07b71f10942c3f1a197f5f1b3b0f90 (patch) | |
tree | 134707b4b9f7a2639c31274b1b6e46556830ce11 /src | |
parent | bfb72436631fcfc07478d7474b88959471b17e9a (diff) | |
download | NetworkManager-b955a8197e07b71f10942c3f1a197f5f1b3b0f90.tar.gz |
2008-10-30 Dan Williams <dcbw@redhat.com>
Patch from Alexander Sack <asac@canonical.com>
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
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4234 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Diffstat (limited to 'src')
-rw-r--r-- | src/nm-device-ethernet.c | 9 | ||||
-rw-r--r-- | src/nm-serial-device.c | 13 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/nm-device-ethernet.c b/src/nm-device-ethernet.c index 4ef4ee1e42..7f8fa9a839 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 4b3c102b6d..eeea3b7556 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; } |