diff options
| author | Sjoerd Simons <sjoerd@luon.net> | 2013-10-25 21:20:58 +0200 |
|---|---|---|
| committer | Sjoerd Simons <sjoerd@luon.net> | 2013-10-25 21:20:58 +0200 |
| commit | a4256940da049f91bbbea5e53e469a59ea9c10f7 (patch) | |
| tree | 2211c102aea3a33f34f960f48c8b8a55daccd97b /src/nm-device-wired.c | |
| parent | 8d275584fc94f398f0a7c990dcd057533d9a5856 (diff) | |
Imported Upstream version 0.9.8.8 upstream/0.9.8.8
Diffstat (limited to 'src/nm-device-wired.c')
| -rw-r--r-- | src/nm-device-wired.c | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/src/nm-device-wired.c b/src/nm-device-wired.c index 6d459630..5baf5f87 100644 --- a/src/nm-device-wired.c +++ b/src/nm-device-wired.c @@ -418,7 +418,24 @@ act_stage3_ip4_config_start (NMDevice *device, NMIP4Config **out_config, NMDeviceStateReason *reason) { - if (nm_device_is_master (device) && !nm_device_wired_get_carrier (NM_DEVICE_WIRED (device))) { + NMConnection *connection; + NMSettingIP4Config *s_ip4; + const char *method = NULL; + gboolean is_manual = FALSE; + + connection = nm_device_get_connection (device); + if (connection) { + s_ip4 = nm_connection_get_setting_ip4_config (connection); + if (s_ip4) + method = nm_setting_ip4_config_get_method (s_ip4); + + if (g_strcmp0 (method, NM_SETTING_IP4_CONFIG_METHOD_MANUAL) == 0) + is_manual = TRUE; + } + + if ( !is_manual + && nm_device_is_master (device) + && !nm_device_wired_get_carrier (NM_DEVICE_WIRED (device))) { nm_log_info (LOGD_IP4 | NM_DEVICE_WIRED_LOG_LEVEL (device), "(%s): IPv4 config waiting until carrier is on", nm_device_get_ip_iface (device)); @@ -433,7 +450,24 @@ act_stage3_ip6_config_start (NMDevice *device, NMIP6Config **out_config, NMDeviceStateReason *reason) { - if (nm_device_is_master (device) && !nm_device_wired_get_carrier (NM_DEVICE_WIRED (device))) { + NMConnection *connection; + NMSettingIP6Config *s_ip6; + const char *method = NULL; + gboolean is_manual = FALSE; + + connection = nm_device_get_connection (device); + if (connection) { + s_ip6 = nm_connection_get_setting_ip6_config (connection); + if (s_ip6) + method = nm_setting_ip6_config_get_method (s_ip6); + + if (g_strcmp0 (method, NM_SETTING_IP6_CONFIG_METHOD_MANUAL) == 0) + is_manual = TRUE; + } + + if ( !is_manual + && nm_device_is_master (device) + && !nm_device_wired_get_carrier (NM_DEVICE_WIRED (device))) { nm_log_info (LOGD_IP6 | NM_DEVICE_WIRED_LOG_LEVEL (device), "(%s): IPv6 config waiting until carrier is on", nm_device_get_ip_iface (device)); |