mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-09 13:10:39 +01:00
ppp: ignore certain pppd status changes
We don't actually care when pppd goes into the 'network' phase or the 'authenticate' phase, because we're looking for the IP4 configuration to come back, and the device is already in the IP_CONFIG state. Handling those phases would cause the device's state to jump around between NEED_AUTH and IP_CONFIG when we were already past that phase. Specifically, when the PPP link went down, the device would jump from FAILED to IP_CONFIG because pppd entered the 'network' phase when cleaning up the link. The device would also jump from IP_CONFIG to NEED_AUTH during the connection process when we already had secrets.
This commit is contained in:
parent
222869a7ef
commit
f28a0df4a6
3 changed files with 12 additions and 18 deletions
|
|
@ -105,18 +105,12 @@ ppp_state_changed (NMPPPManager *ppp_manager, NMPPPStatus status, gpointer user_
|
|||
NMDevice *device = NM_DEVICE (user_data);
|
||||
|
||||
switch (status) {
|
||||
case NM_PPP_STATUS_NETWORK:
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_IP_CONFIG, NM_DEVICE_STATE_REASON_NONE);
|
||||
break;
|
||||
case NM_PPP_STATUS_DISCONNECT:
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_PPP_DISCONNECT);
|
||||
break;
|
||||
case NM_PPP_STATUS_DEAD:
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_PPP_FAILED);
|
||||
break;
|
||||
case NM_PPP_STATUS_AUTHENTICATE:
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_NEED_AUTH, NM_DEVICE_STATE_REASON_NONE);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
@ -135,6 +129,10 @@ ppp_ip4_config (NMPPPManager *ppp_manager,
|
|||
guint32 bad_dns2 = htonl (0x0A0B0C0E);
|
||||
guint32 good_dns2 = htonl (0x04020202); /* GTE nameserver */
|
||||
|
||||
/* Ignore PPP IP4 events that come in after initial configuration */
|
||||
if (nm_device_get_state (device) != NM_DEVICE_STATE_IP_CONFIG)
|
||||
return;
|
||||
|
||||
/* Work around a PPP bug (#1732) which causes many mobile broadband
|
||||
* providers to return 10.11.12.13 and 10.11.12.14 for the DNS servers.
|
||||
* Apparently fixed in ppp-2.4.5 but we've had some reports that this is
|
||||
|
|
|
|||
|
|
@ -287,18 +287,12 @@ ppp_state_changed (NMPPPManager *ppp_manager, NMPPPStatus status, gpointer user_
|
|||
NMDevice *device = NM_DEVICE (user_data);
|
||||
|
||||
switch (status) {
|
||||
case NM_PPP_STATUS_NETWORK:
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_IP_CONFIG, NM_DEVICE_STATE_REASON_NONE);
|
||||
break;
|
||||
case NM_PPP_STATUS_DISCONNECT:
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_PPP_DISCONNECT);
|
||||
break;
|
||||
case NM_PPP_STATUS_DEAD:
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_PPP_FAILED);
|
||||
break;
|
||||
case NM_PPP_STATUS_AUTHENTICATE:
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_NEED_AUTH, NM_DEVICE_STATE_REASON_NONE);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
@ -312,6 +306,10 @@ ppp_ip4_config (NMPPPManager *ppp_manager,
|
|||
{
|
||||
NMDevice *device = NM_DEVICE (user_data);
|
||||
|
||||
/* Ignore PPP IP4 events that come in after initial configuration */
|
||||
if (nm_device_get_state (device) != NM_DEVICE_STATE_IP_CONFIG)
|
||||
return;
|
||||
|
||||
nm_device_set_ip_iface (device, iface);
|
||||
NM_DEVICE_BT_GET_PRIVATE (device)->pending_ip4_config = g_object_ref (config);
|
||||
nm_device_activate_schedule_stage4_ip4_config_get (device);
|
||||
|
|
|
|||
|
|
@ -1229,18 +1229,12 @@ ppp_state_changed (NMPPPManager *ppp_manager, NMPPPStatus status, gpointer user_
|
|||
NMDevice *device = NM_DEVICE (user_data);
|
||||
|
||||
switch (status) {
|
||||
case NM_PPP_STATUS_NETWORK:
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_IP_CONFIG, NM_DEVICE_STATE_REASON_NONE);
|
||||
break;
|
||||
case NM_PPP_STATUS_DISCONNECT:
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_PPP_DISCONNECT);
|
||||
break;
|
||||
case NM_PPP_STATUS_DEAD:
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_PPP_FAILED);
|
||||
break;
|
||||
case NM_PPP_STATUS_AUTHENTICATE:
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_NEED_AUTH, NM_DEVICE_STATE_REASON_NONE);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
@ -1254,6 +1248,10 @@ ppp_ip4_config (NMPPPManager *ppp_manager,
|
|||
{
|
||||
NMDevice *device = NM_DEVICE (user_data);
|
||||
|
||||
/* Ignore PPP IP4 events that come in after initial configuration */
|
||||
if (nm_device_get_state (device) != NM_DEVICE_STATE_IP_CONFIG)
|
||||
return;
|
||||
|
||||
nm_device_set_ip_iface (device, iface);
|
||||
NM_DEVICE_ETHERNET_GET_PRIVATE (device)->pending_ip4_config = g_object_ref (config);
|
||||
nm_device_activate_schedule_stage4_ip4_config_get (device);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue