diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2019-07-01 13:45:27 +0200 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2019-07-01 13:49:14 +0200 |
commit | 3c696fab41299f54ab5718e64a0a18482fe1eecd (patch) | |
tree | ca43b81720d815071d093db47b08fe2bf7557886 | |
parent | 3698e24eba3d3819fe4a5499fb0c0cd35848cf0c (diff) | |
download | NetworkManager-bg/pppoe.tar.gz |
device: ppp: check that connection has a PPPoE parentbg/pppoe
NMDevicePPP only handles connections with the pppoe.parent property
set. match_connection() already checks this when we creating a new
device. We should also perform the same check in
check_connection_compatible().
Fixes: 6c3195931e94 ('core: implement activation of PPP devices')
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/203
-rw-r--r-- | src/devices/nm-device-ppp.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/devices/nm-device-ppp.c b/src/devices/nm-device-ppp.c index 7a46c67d64..33c9fa74b6 100644 --- a/src/devices/nm-device-ppp.c +++ b/src/devices/nm-device-ppp.c @@ -116,6 +116,24 @@ ppp_ip4_config (NMPPPManager *ppp_manager, } } +static gboolean +check_connection_compatible (NMDevice *device, NMConnection *connection, GError **error) +{ + NMSettingPppoe *s_pppoe; + + if (!NM_DEVICE_CLASS (nm_device_ppp_parent_class)->check_connection_compatible (device, connection, error)) + return FALSE; + + s_pppoe = nm_connection_get_setting_pppoe (connection); + if (s_pppoe) + return FALSE; + + if (!nm_setting_pppoe_get_parent (s_pppoe)) + return FALSE; + + return TRUE; +} + static NMActStageReturn act_stage2_config (NMDevice *device, NMDeviceStateReason *out_failure_reason) { @@ -276,6 +294,7 @@ nm_device_ppp_class_init (NMDevicePppClass *klass) device_class->connection_type_supported = NM_SETTING_PPPOE_SETTING_NAME; device_class->connection_type_check_compatible = NM_SETTING_PPPOE_SETTING_NAME; device_class->link_types = NM_DEVICE_DEFINE_LINK_TYPES (NM_LINK_TYPE_PPP); + device_class->check_connection_compatible = check_connection_compatible; device_class->act_stage2_config = act_stage2_config; device_class->act_stage3_ip_config_start = act_stage3_ip_config_start; |