mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-09-16 06:40:41 +00:00
pppoe: merge branch 'bg/pppoe-fix'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1148
This commit is contained in:
commit
3a8a1b0e26
|
@ -1163,11 +1163,10 @@ _ppp_mgr_callback(NMPppMgr *ppp_mgr, const NMPppMgrCallbackData *callback_data,
|
|||
gs_free char *old_name = NULL;
|
||||
gs_free_error GError *error = NULL;
|
||||
|
||||
if (!nm_device_take_over_link(device, callback_data->data.ifindex, &old_name, &error)) {
|
||||
if (!nm_device_set_ip_ifindex(device, callback_data->data.ifindex)) {
|
||||
_LOGW(LOGD_DEVICE | LOGD_PPP,
|
||||
"could not take control of link %d: %s",
|
||||
callback_data->data.ifindex,
|
||||
error->message);
|
||||
"could not set ip-ifindex %d",
|
||||
callback_data->data.ifindex);
|
||||
_ppp_mgr_cleanup(self);
|
||||
nm_device_state_changed(device,
|
||||
NM_DEVICE_STATE_FAILED,
|
||||
|
@ -1892,6 +1891,32 @@ is_available(NMDevice *device, NMDeviceCheckDevAvailableFlags flags)
|
|||
return !!nm_device_get_initial_hw_address(device);
|
||||
}
|
||||
|
||||
static const char *
|
||||
get_ip_method_auto(NMDevice *device, int addr_family)
|
||||
{
|
||||
NMSettingConnection *s_con;
|
||||
|
||||
s_con = nm_device_get_applied_setting(device, NM_TYPE_SETTING_CONNECTION);
|
||||
g_return_val_if_fail(s_con,
|
||||
NM_IS_IPv4(addr_family) ? NM_SETTING_IP4_CONFIG_METHOD_AUTO
|
||||
: NM_SETTING_IP6_CONFIG_METHOD_AUTO);
|
||||
|
||||
if (!nm_streq(nm_setting_connection_get_connection_type(s_con),
|
||||
NM_SETTING_PPPOE_SETTING_NAME)) {
|
||||
return NM_DEVICE_CLASS(nm_device_ethernet_parent_class)
|
||||
->get_ip_method_auto(device, addr_family);
|
||||
}
|
||||
|
||||
if (NM_IS_IPv4(addr_family)) {
|
||||
/* We cannot do DHCPv4 on a PPP link, instead we get "auto" IP addresses
|
||||
* by pppd. Return "manual" here, which has the suitable effect to a
|
||||
* (zero) manual addresses in addition. */
|
||||
return NM_SETTING_IP6_CONFIG_METHOD_MANUAL;
|
||||
}
|
||||
|
||||
return NM_SETTING_IP6_CONFIG_METHOD_AUTO;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
can_reapply_change(NMDevice *device,
|
||||
const char *setting_name,
|
||||
|
@ -2047,6 +2072,7 @@ nm_device_ethernet_class_init(NMDeviceEthernetClass *klass)
|
|||
device_class->act_stage2_config = act_stage2_config;
|
||||
device_class->act_stage3_ip_config = act_stage3_ip_config;
|
||||
device_class->get_configured_mtu = get_configured_mtu;
|
||||
device_class->get_ip_method_auto = get_ip_method_auto;
|
||||
device_class->deactivate = deactivate;
|
||||
device_class->get_s390_subchannels = get_s390_subchannels;
|
||||
device_class->update_connection = update_connection;
|
||||
|
|
|
@ -222,10 +222,9 @@ get_ip_method_auto(NMDevice *device, int addr_family)
|
|||
return NM_SETTING_IP6_CONFIG_METHOD_MANUAL;
|
||||
}
|
||||
|
||||
/* We can do autoconf6 on an PPP link, but we should already get an IPv6
|
||||
* address from pppd. Use that instead. We however do want to generate our
|
||||
* (own) IPv6 link local address, so return "link-local". */
|
||||
return NM_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL;
|
||||
/* We get a interface identifier via IPV6CP, used to construct a link-local
|
||||
* address. Method auto means autoconf6 as usual.*/
|
||||
return NM_SETTING_IP6_CONFIG_METHOD_AUTO;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
|
Loading…
Reference in a new issue