mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-26 17:00:08 +01: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) (cherry picked from commit546dd70178) (cherry picked from commit74f2c591ec)
This commit is contained in:
parent
f407868ee2
commit
a4b997b2ec
2 changed files with 22 additions and 15 deletions
|
|
@ -224,7 +224,7 @@ controller_update_port_connection(NMDevice *self,
|
|||
GError **error)
|
||||
{
|
||||
NMSettingBondPort *s_port;
|
||||
int ifindex_port = nm_device_get_ifindex(port);
|
||||
int ifindex_port = nm_device_get_ifindex(port);
|
||||
const NMPlatformLink *pllink;
|
||||
|
||||
g_return_val_if_fail(ifindex_port > 0, FALSE);
|
||||
|
|
|
|||
|
|
@ -10713,25 +10713,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