2008-10-30 Dan Williams <dcbw@redhat.com>
authorDan Williams <dcbw@redhat.com>
Thu, 30 Oct 2008 04:31:29 +0000 (04:31 +0000)
committerDan Williams <dcbw@redhat.com>
Thu, 30 Oct 2008 04:31:29 +0000 (04:31 +0000)
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

ChangeLog
src/nm-device-ethernet.c
src/nm-serial-device.c

index 2056ae4..e76f584 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+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
+
 2008-10-29  Dan Williams  <dcbw@redhat.com>
 
        * libnm-util/libnm-util.ver
index 4ef4ee1..7f8fa9a 100644 (file)
@@ -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;
        }
 
index 4b3c102..eeea3b7 100644 (file)
@@ -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;
 }