mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-04-23 02:50:43 +02:00
device: use subnet when the applied connection has IPv6 method shared
We should use the IPv6 subnet when we have an applied connection stored on the downlink device, and the IPv6 method should be "shared" for that applied connection. It does not make sense to register l3cd and set router config for ndisc instance when the downlink device is already deactivated. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1880 Resolves: https://issues.redhat.com/browse/RHEL-17350 Signed-off-by: Wen Liang <liangwen12year@gmail.com> (cherry picked from commit15901a7489) (cherry picked from commit86fbfb3806)
This commit is contained in:
parent
8d32bd3883
commit
546dd70178
1 changed files with 21 additions and 14 deletions
|
|
@ -11066,25 +11066,32 @@ nm_device_needs_ip6_subnet(NMDevice *self)
|
|||
void
|
||||
nm_device_use_ip6_subnet(NMDevice *self, const NMPlatformIP6Address *subnet)
|
||||
{
|
||||
nm_auto_unref_l3cd_init NML3ConfigData *l3cd = NULL;
|
||||
char sbuf[NM_UTILS_TO_STRING_BUFFER_SIZE];
|
||||
NMPlatformIP6Address address;
|
||||
NMConnection *connection = nm_device_get_applied_connection(self);
|
||||
|
||||
l3cd = nm_device_create_l3_config_data(self, NM_IP_CONFIG_SOURCE_SHARED);
|
||||
if (connection) {
|
||||
NMSettingIPConfig *s_ip6 = nm_connection_get_setting_ip6_config(connection);
|
||||
|
||||
/* Assign a ::1 address in the subnet for us. */
|
||||
address = *subnet;
|
||||
address.address.s6_addr32[3] |= htonl(1);
|
||||
if (nm_streq(nm_setting_ip_config_get_method(s_ip6), NM_SETTING_IP6_CONFIG_METHOD_SHARED)) {
|
||||
nm_auto_unref_l3cd_init NML3ConfigData *l3cd = NULL;
|
||||
char sbuf[NM_UTILS_TO_STRING_BUFFER_SIZE];
|
||||
NMPlatformIP6Address address;
|
||||
l3cd = nm_device_create_l3_config_data(self, NM_IP_CONFIG_SOURCE_SHARED);
|
||||
|
||||
nm_l3_config_data_add_address_6(l3cd, &address);
|
||||
/* Assign a ::1 address in the subnet for us. */
|
||||
address = *subnet;
|
||||
address.address.s6_addr32[3] |= htonl(1);
|
||||
|
||||
_LOGD(LOGD_IP6,
|
||||
"ipv6-pd: using %s",
|
||||
nm_platform_ip6_address_to_string(&address, sbuf, sizeof(sbuf)));
|
||||
nm_l3_config_data_add_address_6(l3cd, &address);
|
||||
|
||||
_dev_l3_register_l3cds_set_one(self, L3_CONFIG_DATA_TYPE_PD_6, l3cd, FALSE);
|
||||
_dev_l3_cfg_commit(self, TRUE);
|
||||
_dev_ipac6_ndisc_set_router_config(self);
|
||||
_LOGD(LOGD_IP6,
|
||||
"ipv6-pd: using %s",
|
||||
nm_platform_ip6_address_to_string(&address, sbuf, sizeof(sbuf)));
|
||||
|
||||
_dev_l3_register_l3cds_set_one(self, L3_CONFIG_DATA_TYPE_PD_6, l3cd, FALSE);
|
||||
_dev_l3_cfg_commit(self, TRUE);
|
||||
_dev_ipac6_ndisc_set_router_config(self);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue