diff options
| author | Michael Biebl <biebl@debian.org> | 2023-03-09 20:01:53 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2023-03-09 20:01:53 +0100 |
| commit | cffb548b401e2cd3fad166aa92e0f634bbb1d4d6 (patch) | |
| tree | 6d803d8f7d0d92a1c5e5705974fff8975472af95 /src/core/settings | |
| parent | 647d6b95d5475e0a1bf3d6f299d1cb8c9041a7a4 (diff) | |
| parent | 12e1ee797bbf0b10d1fd5afd4b947484769f2b9f (diff) | |
Merge tag 'debian/1.42.4-1' into debian/bullseye-backports
network-manager Debian release 1.42.4-1
Diffstat (limited to 'src/core/settings')
27 files changed, 169 insertions, 81 deletions
diff --git a/src/core/settings/nm-agent-manager.c b/src/core/settings/nm-agent-manager.c index 295378bc..0a120649 100644 --- a/src/core/settings/nm-agent-manager.c +++ b/src/core/settings/nm-agent-manager.c @@ -1172,8 +1172,10 @@ _con_get_try_complete_early(Request *req) } /* Do we have everything we need? */ if (NM_FLAGS_HAS(req->con.get.flags, NM_SECRET_AGENT_GET_SECRETS_FLAG_ONLY_SYSTEM) - || ((nm_connection_need_secrets(tmp, NULL) == NULL) - && !NM_FLAGS_HAS(req->con.get.flags, NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW))) { + || (NM_FLAGS_HAS(req->con.get.flags, NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW) + && !nm_connection_need_secrets_for_rerequest(tmp)) + || (!NM_FLAGS_HAS(req->con.get.flags, NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW) + && !nm_connection_need_secrets(tmp, NULL))) { _LOGD(NULL, "(" LOG_REQ_FMT ") system settings secrets sufficient", LOG_REQ_ARG(req)); /* Got everything, we're done */ diff --git a/src/core/settings/nm-agent-manager.h b/src/core/settings/nm-agent-manager.h index cae8e8e0..e5c6e31c 100644 --- a/src/core/settings/nm-agent-manager.h +++ b/src/core/settings/nm-agent-manager.h @@ -13,7 +13,7 @@ #define NM_TYPE_AGENT_MANAGER (nm_agent_manager_get_type()) #define NM_AGENT_MANAGER(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_AGENT_MANAGER, NMAgentManager)) + (_NM_G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_AGENT_MANAGER, NMAgentManager)) #define NM_AGENT_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_AGENT_MANAGER, NMAgentManagerClass)) #define NM_IS_AGENT_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NM_TYPE_AGENT_MANAGER)) diff --git a/src/core/settings/nm-secret-agent.h b/src/core/settings/nm-secret-agent.h index 14458b38..eb8dd382 100644 --- a/src/core/settings/nm-secret-agent.h +++ b/src/core/settings/nm-secret-agent.h @@ -12,7 +12,7 @@ #define NM_TYPE_SECRET_AGENT (nm_secret_agent_get_type()) #define NM_SECRET_AGENT(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_SECRET_AGENT, NMSecretAgent)) + (_NM_G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_SECRET_AGENT, NMSecretAgent)) #define NM_SECRET_AGENT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_SECRET_AGENT, NMSecretAgentClass)) #define NM_IS_SECRET_AGENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NM_TYPE_SECRET_AGENT)) diff --git a/src/core/settings/nm-settings-connection.h b/src/core/settings/nm-settings-connection.h index 893b0d7b..47599c3d 100644 --- a/src/core/settings/nm-settings-connection.h +++ b/src/core/settings/nm-settings-connection.h @@ -122,7 +122,7 @@ typedef enum { #define NM_TYPE_SETTINGS_CONNECTION (nm_settings_connection_get_type()) #define NM_SETTINGS_CONNECTION(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_SETTINGS_CONNECTION, NMSettingsConnection)) + (_NM_G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_SETTINGS_CONNECTION, NMSettingsConnection)) #define NM_SETTINGS_CONNECTION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_SETTINGS_CONNECTION, NMSettingsConnectionClass)) #define NM_IS_SETTINGS_CONNECTION(obj) \ diff --git a/src/core/settings/nm-settings-plugin.h b/src/core/settings/nm-settings-plugin.h index 198447c0..c9d1265f 100644 --- a/src/core/settings/nm-settings-plugin.h +++ b/src/core/settings/nm-settings-plugin.h @@ -26,7 +26,7 @@ typedef struct { #define NM_TYPE_SETTINGS_PLUGIN (nm_settings_plugin_get_type()) #define NM_SETTINGS_PLUGIN(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_SETTINGS_PLUGIN, NMSettingsPlugin)) + (_NM_G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_SETTINGS_PLUGIN, NMSettingsPlugin)) #define NM_SETTINGS_PLUGIN_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_SETTINGS_PLUGIN, NMSettingsPluginClass)) #define NM_IS_SETTINGS_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NM_TYPE_SETTINGS_PLUGIN)) diff --git a/src/core/settings/nm-settings-storage.h b/src/core/settings/nm-settings-storage.h index 198b0e8b..65750152 100644 --- a/src/core/settings/nm-settings-storage.h +++ b/src/core/settings/nm-settings-storage.h @@ -12,7 +12,7 @@ #define NM_TYPE_SETTINGS_STORAGE (nm_settings_storage_get_type()) #define NM_SETTINGS_STORAGE(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_SETTINGS_STORAGE, NMSettingsStorage)) + (_NM_G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_SETTINGS_STORAGE, NMSettingsStorage)) #define NM_SETTINGS_STORAGE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_SETTINGS_STORAGE, NMSettingsStorageClass)) #define NM_IS_SETTINGS_STORAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NM_TYPE_SETTINGS_STORAGE)) diff --git a/src/core/settings/nm-settings.c b/src/core/settings/nm-settings.c index b7d846c6..9995b490 100644 --- a/src/core/settings/nm-settings.c +++ b/src/core/settings/nm-settings.c @@ -2009,6 +2009,7 @@ nm_settings_update_connection(NMSettings *self, const char *uuid; gboolean tombstone_in_memory = FALSE; gboolean tombstone_on_disk = FALSE; + NMSettingsConnectionIntFlags new_flags; g_return_val_if_fail(NM_IS_SETTINGS(self), FALSE); g_return_val_if_fail(NM_IS_SETTINGS_CONNECTION(sett_conn), FALSE); @@ -2228,13 +2229,16 @@ nm_settings_update_connection(NMSettings *self, } } + new_flags = nm_settings_connection_get_flags(sett_conn); + new_flags = NM_FLAGS_ASSIGN_MASK(new_flags, sett_mask, sett_flags); + if (!update_storage) { success = _add_connection_to_first_plugin(self, plugin_name, sett_conn_entry, connection, new_in_memory, - sett_flags, + new_flags, new_shadowed_storage_filename, new_shadowed_owned, &new_storage, @@ -2245,7 +2249,7 @@ nm_settings_update_connection(NMSettings *self, success = _update_connection_to_plugin(self, update_storage, connection, - sett_flags, + new_flags, update_reason, new_shadowed_storage_filename, new_shadowed_owned, @@ -3479,7 +3483,7 @@ _save_hostname_write_cb(GObject *source, GAsyncResult *result, gpointer user_dat nm_utils_user_data_unpack(user_data, &self, &context, &auth_subject, &hostname, &cancellable); - nm_hostname_manager_write_hostname_finish(NM_HOSTNAME_MANAGER(source), result, &error); + nm_hostname_manager_set_static_hostname_finish(NM_HOSTNAME_MANAGER(source), result, &error); nm_audit_log_control_op(NM_AUDIT_OP_HOSTNAME_SAVE, hostname ?: "", @@ -3544,7 +3548,7 @@ _save_hostname_pk_cb(NMAuthChain *chain, GDBusMethodInvocation *context, gpointe (gpointer *) &priv->shutdown_cancellable); } - nm_hostname_manager_write_hostname( + nm_hostname_manager_set_static_hostname( priv->hostname_manager, hostname, priv->shutdown_cancellable, diff --git a/src/core/settings/nm-settings.h b/src/core/settings/nm-settings.h index 8747d1dc..aba3c565 100644 --- a/src/core/settings/nm-settings.h +++ b/src/core/settings/nm-settings.h @@ -15,7 +15,7 @@ #include "nm-settings-connection.h" #define NM_TYPE_SETTINGS (nm_settings_get_type()) -#define NM_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_SETTINGS, NMSettings)) +#define NM_SETTINGS(obj) (_NM_G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_SETTINGS, NMSettings)) #define NM_SETTINGS_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_SETTINGS, NMSettingsClass)) #define NM_IS_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NM_TYPE_SETTINGS)) diff --git a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-plugin.h b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-plugin.h index dc1a01c8..49e04291 100644 --- a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-plugin.h +++ b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-plugin.h @@ -10,7 +10,7 @@ #define NMS_TYPE_IFCFG_RH_PLUGIN (nms_ifcfg_rh_plugin_get_type()) #define NMS_IFCFG_RH_PLUGIN(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), NMS_TYPE_IFCFG_RH_PLUGIN, NMSIfcfgRHPlugin)) + (_NM_G_TYPE_CHECK_INSTANCE_CAST((obj), NMS_TYPE_IFCFG_RH_PLUGIN, NMSIfcfgRHPlugin)) #define NMS_IFCFG_RH_PLUGIN_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), NMS_TYPE_IFCFG_RH_PLUGIN, NMSIfcfgRHPluginClass)) #define NMS_IS_IFCFG_RH_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NMS_TYPE_IFCFG_RH_PLUGIN)) diff --git a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c index 4d8e7bd6..aa593331 100644 --- a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c +++ b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c @@ -739,7 +739,7 @@ read_full_ip4_address(shvarFile *ifcfg, int prefix = 0; gboolean has_key; guint32 a; - char inet_buf[NM_UTILS_INET_ADDRSTRLEN]; + char inet_buf[NM_INET_ADDRSTRLEN]; g_return_val_if_fail(which >= -1, FALSE); g_return_val_if_fail(ifcfg != NULL, FALSE); @@ -761,7 +761,7 @@ read_full_ip4_address(shvarFile *ifcfg, if (!read_ip4_address(ifcfg, numbered_tag(tag, "GATEWAY", which), &has_key, &a, error)) return FALSE; if (has_key) - *out_gateway = nm_utils_inet4_ntop_dup(a); + *out_gateway = nm_inet4_ntop_dup(a); } /* Prefix */ @@ -782,16 +782,16 @@ read_full_ip4_address(shvarFile *ifcfg, if (!read_ip4_address(ifcfg, numbered_tag(tag, "NETMASK", which), &has_key, &a, error)) return FALSE; if (has_key) - prefix = _nm_utils_ip4_netmask_to_prefix(a); + prefix = nm_ip4_addr_netmask_to_prefix(a); else { if (base_addr) prefix = nm_ip_address_get_prefix(base_addr); else { /* Try to autodetermine the prefix for the address' class */ - prefix = _nm_utils_ip4_get_default_prefix(ipaddr); + prefix = nm_ip4_addr_get_default_prefix(ipaddr); PARSE_WARNING("missing %s, assuming %s/%d", prefix_tag, - _nm_utils_inet4_ntop(ipaddr, inet_buf), + nm_inet4_ntop(ipaddr, inet_buf), prefix); } } @@ -887,6 +887,7 @@ enum { PARSE_LINE_ATTR_ROUTE_ADVMSS, PARSE_LINE_ATTR_ROUTE_RTO_MIN, PARSE_LINE_ATTR_ROUTE_QUICKACK, + PARSE_LINE_ATTR_ROUTE_WEIGHT, /* iproute2 arguments that only matter when parsing the file. */ PARSE_LINE_ATTR_ROUTE_TO, @@ -966,6 +967,12 @@ parse_route_line(const char *line, .int_base_16 = TRUE, .ignore = PARSE_LINE_AF_FLAG_FOR_IPV6, }, + [PARSE_LINE_ATTR_ROUTE_WEIGHT] = + { + .key = NM_IP_ROUTE_ATTRIBUTE_WEIGHT, + .type = PARSE_LINE_TYPE_UINT32, + .disabled = PARSE_LINE_AF_FLAG_FOR_IPV6, + }, [PARSE_LINE_ATTR_ROUTE_SCOPE] = { .key = NM_IP_ROUTE_ATTRIBUTE_SCOPE, @@ -1282,7 +1289,7 @@ parse_line_type_addr_with_prefix: int prefix = -1; if (p_info->type == PARSE_LINE_TYPE_ADDR) { - if (!nm_utils_parse_inaddr_bin(addr_family, s, NULL, &p_data->v.addr.addr)) { + if (!nm_inet_parse_bin(addr_family, s, NULL, &p_data->v.addr.addr)) { if (p_info == &parse_infos[PARSE_LINE_ATTR_ROUTE_VIA] && nm_streq(s, "(null)")) { /* Due to a bug, would older versions of NM write "via (null)" @@ -1313,11 +1320,11 @@ parse_line_type_addr_with_prefix: if (p_info == &parse_infos[PARSE_LINE_ATTR_ROUTE_TO] && nm_streq(s, "default")) { memset(&p_data->v.addr.addr, 0, sizeof(p_data->v.addr.addr)); prefix = 0; - } else if (!nm_utils_parse_inaddr_prefix_bin(addr_family, - s, - NULL, - &p_data->v.addr.addr, - &prefix)) { + } else if (!nm_inet_parse_with_prefix_bin(addr_family, + s, + NULL, + &p_data->v.addr.addr, + &prefix)) { g_set_error(error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, @@ -1468,7 +1475,7 @@ read_one_ip4_route(shvarFile *ifcfg, guint32 which, NMIPRoute **out_route, GErro const char *v; gs_free char *value = NULL; gint64 prefix, metric; - char inet_buf[NM_UTILS_INET_ADDRSTRLEN]; + char inet_buf[NM_INET_ADDRSTRLEN]; g_return_val_if_fail(ifcfg != NULL, FALSE); g_return_val_if_fail(out_route && !*out_route, FALSE); @@ -1496,14 +1503,14 @@ read_one_ip4_route(shvarFile *ifcfg, guint32 which, NMIPRoute **out_route, GErro error)) return FALSE; if (has_key) { - prefix = _nm_utils_ip4_netmask_to_prefix(netmask); - if (netmask != _nm_utils_ip4_prefix_to_netmask(prefix)) { + prefix = nm_ip4_addr_netmask_to_prefix(netmask); + if (netmask != nm_ip4_addr_netmask_from_prefix(prefix)) { g_set_error(error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, "Invalid IP4 netmask '%s' \"%s\"", netmask_tag, - _nm_utils_inet4_ntop(netmask, inet_buf)); + nm_inet4_ntop(netmask, inet_buf)); return FALSE; } } else { @@ -1667,7 +1674,7 @@ parse_full_ip6_address(shvarFile *ifcfg, nm_assert(out_address && !*out_address); nm_assert(!error || !*error); - if (!nm_utils_parse_inaddr_prefix_bin(AF_INET6, addr_str, NULL, &addr_bin, &prefix)) { + if (!nm_inet_parse_with_prefix_bin(AF_INET6, addr_str, NULL, &addr_bin, &prefix)) { g_set_error(error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, @@ -1935,6 +1942,10 @@ make_ip4_setting(shvarFile *ifcfg, (guint) route_table, NM_SETTING_IP4_CONFIG_LINK_LOCAL, ipv4_link_local, + NM_SETTING_IP_CONFIG_AUTO_ROUTE_EXT_GW, + svGetValueTernary(ifcfg, "IPV4_AUTO_ROUTE_EXT_GW"), + NM_SETTING_IP_CONFIG_REPLACE_LOCAL_RULE, + svGetValueTernary(ifcfg, "IPV4_REPLACE_LOCAL_RULE"), NULL); if (nm_streq(method, NM_SETTING_IP4_CONFIG_METHOD_DISABLED)) @@ -2027,7 +2038,7 @@ make_ip4_setting(shvarFile *ifcfg, "because the connection has no static addresses", f); } else - gateway = nm_utils_inet4_ntop_dup(a); + gateway = nm_inet4_ntop_dup(a); } } } @@ -2047,7 +2058,9 @@ make_ip4_setting(shvarFile *ifcfg, * Pick up just IPv4 addresses (IPv6 addresses are taken by make_ip6_setting()) */ for (i = 1; i < 10000; i++) { - char tag[256]; + int af; + NMIPAddr ip; + char tag[256]; numbered_tag(tag, "DNS", i); nm_clear_g_free(&value); @@ -2055,18 +2068,18 @@ make_ip4_setting(shvarFile *ifcfg, if (!v) break; - if (nm_utils_ipaddr_is_valid(AF_INET, v)) { - if (!nm_setting_ip_config_add_dns(s_ip4, v)) - PARSE_WARNING("duplicate DNS server %s", tag); - } else if (nm_utils_ipaddr_is_valid(AF_INET6, v)) { - /* Ignore IPv6 addresses */ - } else { + if (!nm_utils_dnsname_parse(AF_UNSPEC, v, &af, &ip, NULL)) { g_set_error(error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, "Invalid DNS server address '%s'", v); return NULL; + } else if (af == AF_INET) { + if (!nm_setting_ip_config_add_dns(s_ip4, v)) + PARSE_WARNING("duplicate DNS server %s", tag); + } else { + /* Ignore IPv6 addresses */ } } @@ -2446,6 +2459,10 @@ make_ip6_setting(shvarFile *ifcfg, shvarFile *network_ifcfg, gboolean routes_rea (guint) route_table, NM_SETTING_IP6_CONFIG_IP6_PRIVACY, ip6_privacy_val, + NM_SETTING_IP_CONFIG_AUTO_ROUTE_EXT_GW, + svGetValueTernary(ifcfg, "IPV6_AUTO_ROUTE_EXT_GW"), + NM_SETTING_IP_CONFIG_REPLACE_LOCAL_RULE, + svGetValueTernary(ifcfg, "IPV6_REPLACE_LOCAL_RULE"), NULL); /* Don't bother to read IP, DNS and routes when IPv6 is disabled */ @@ -2546,7 +2563,7 @@ make_ip6_setting(shvarFile *ifcfg, shvarFile *network_ifcfg, gboolean routes_rea if ((ptr = strchr(v, '%')) != NULL) *ptr = '\0'; /* remove %interface prefix if present */ - if (!nm_utils_ipaddr_is_valid(AF_INET6, v)) { + if (!nm_inet_is_valid(AF_INET6, v)) { if (!is_disabled) { g_set_error(error, NM_SETTINGS_ERROR, @@ -2586,7 +2603,9 @@ make_ip6_setting(shvarFile *ifcfg, shvarFile *network_ifcfg, gboolean routes_rea * Pick up just IPv6 addresses (IPv4 addresses are taken by make_ip4_setting()) */ for (i = 1; i < 10000; i++) { - char tag[256]; + int af; + NMIPAddr ip; + char tag[256]; numbered_tag(tag, "DNS", i); nm_clear_g_free(&value); @@ -2594,16 +2613,7 @@ make_ip6_setting(shvarFile *ifcfg, shvarFile *network_ifcfg, gboolean routes_rea if (!v) break; - if (nm_utils_ipaddr_is_valid(AF_INET6, v)) { - if (is_disabled) { - PARSE_WARNING("ignore DNS server addresses with method disabled/ignore"); - break; - } - if (!nm_setting_ip_config_add_dns(s_ip6, v)) - PARSE_WARNING("duplicate DNS server %s", tag); - } else if (nm_utils_ipaddr_is_valid(AF_INET, v)) { - /* Ignore IPv4 addresses */ - } else { + if (!nm_utils_dnsname_parse(AF_UNSPEC, v, &af, &ip, NULL)) { if (is_disabled) continue; g_set_error(error, @@ -2612,6 +2622,15 @@ make_ip6_setting(shvarFile *ifcfg, shvarFile *network_ifcfg, gboolean routes_rea "Invalid DNS server address '%s'", v); return NULL; + } else if (af == AF_INET6) { + if (is_disabled) { + PARSE_WARNING("ignore DNS server addresses with method disabled/ignore"); + break; + } + if (!nm_setting_ip_config_add_dns(s_ip6, v)) + PARSE_WARNING("duplicate DNS server %s", tag); + } else { + /* Ignore IPv4 addresses */ } } @@ -6227,6 +6246,11 @@ make_vlan_setting(shvarFile *ifcfg, const char *file, GError **error) } g_object_set(s_vlan, NM_SETTING_VLAN_PARENT, parent, NULL); + v = svGetValueStr(ifcfg, "VLAN_PROTOCOL", &value); + if (v) { + g_object_set(s_vlan, NM_SETTING_VLAN_PROTOCOL, v, NULL); + } + vlan_flags |= NM_VLAN_FLAG_REORDER_HEADERS; gvrp = svGetValueBoolean(ifcfg, "GVRP", -1); diff --git a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-storage.h b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-storage.h index 2ab6beb6..737c9614 100644 --- a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-storage.h +++ b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-storage.h @@ -13,7 +13,7 @@ #define NMS_TYPE_IFCFG_RH_STORAGE (nms_ifcfg_rh_storage_get_type()) #define NMS_IFCFG_RH_STORAGE(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), NMS_TYPE_IFCFG_RH_STORAGE, NMSIfcfgRHStorage)) + (_NM_G_TYPE_CHECK_INSTANCE_CAST((obj), NMS_TYPE_IFCFG_RH_STORAGE, NMSIfcfgRHStorage)) #define NMS_IFCFG_RH_STORAGE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), NMS_TYPE_IFCFG_RH_STORAGE, NMSIfcfgRHStorageClass)) #define NMS_IS_IFCFG_RH_STORAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NMS_TYPE_IFCFG_RH_STORAGE)) diff --git a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.c b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.c index e1ef8174..552310dd 100644 --- a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.c +++ b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.c @@ -957,10 +957,12 @@ const NMSIfcfgKeyTypeInfo nms_ifcfg_well_known_keys[] = { _KEY_TYPE("IEEE_8021X_SUBJECT_MATCH", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IEEE_8021X_SYSTEM_CA_CERTS", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPADDR", NMS_IFCFG_KEY_TYPE_IS_NUMBERED), + _KEY_TYPE("IPV4_AUTO_ROUTE_EXT_GW", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPV4_DHCP_TIMEOUT", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPV4_DNS_PRIORITY", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPV4_FAILURE_FATAL", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPV4_LINK_LOCAL", NMS_IFCFG_KEY_TYPE_IS_PLAIN), + _KEY_TYPE("IPV4_REPLACE_LOCAL_RULE", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPV4_REQUIRED_TIMEOUT", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPV4_ROUTE_METRIC", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPV4_ROUTE_TABLE", NMS_IFCFG_KEY_TYPE_IS_PLAIN), @@ -971,6 +973,7 @@ const NMSIfcfgKeyTypeInfo nms_ifcfg_well_known_keys[] = { _KEY_TYPE("IPV6TUNNELIPV4", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPV6_ADDR_GEN_MODE", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPV6_AUTOCONF", NMS_IFCFG_KEY_TYPE_IS_PLAIN), + _KEY_TYPE("IPV6_AUTO_ROUTE_EXT_GW", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPV6_DEFAULTDEV", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPV6_DEFAULTGW", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPV6_DEFROUTE", NMS_IFCFG_KEY_TYPE_IS_PLAIN), @@ -984,6 +987,7 @@ const NMSIfcfgKeyTypeInfo nms_ifcfg_well_known_keys[] = { _KEY_TYPE("IPV6_PRIVACY", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPV6_PRIVACY_PREFER_PUBLIC_IP", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPV6_RA_TIMEOUT", NMS_IFCFG_KEY_TYPE_IS_PLAIN), + _KEY_TYPE("IPV6_REPLACE_LOCAL_RULE", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPV6_REQUIRED_TIMEOUT", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPV6_RES_OPTIONS", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("IPV6_ROUTE_METRIC", NMS_IFCFG_KEY_TYPE_IS_PLAIN), @@ -1061,6 +1065,7 @@ const NMSIfcfgKeyTypeInfo nms_ifcfg_well_known_keys[] = { _KEY_TYPE("VLAN_FLAGS", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("VLAN_ID", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("VLAN_INGRESS_PRIORITY_MAP", NMS_IFCFG_KEY_TYPE_IS_PLAIN), + _KEY_TYPE("VLAN_PROTOCOL", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("VRF", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("VRF_UUID", NMS_IFCFG_KEY_TYPE_IS_PLAIN), _KEY_TYPE("WAIT_ACTIVATION_DELAY", NMS_IFCFG_KEY_TYPE_IS_PLAIN), @@ -1080,12 +1085,12 @@ nms_ifcfg_well_known_key_find_info(const char *key, gssize *out_idx) G_STATIC_ASSERT(G_STRUCT_OFFSET(NMSIfcfgKeyTypeInfo, key_name) == 0); - idx = nm_utils_array_find_binary_search(nms_ifcfg_well_known_keys, - sizeof(nms_ifcfg_well_known_keys[0]), - G_N_ELEMENTS(nms_ifcfg_well_known_keys), - &key, - nm_strcmp_p_with_data, - NULL); + idx = nm_array_find_bsearch(nms_ifcfg_well_known_keys, + G_N_ELEMENTS(nms_ifcfg_well_known_keys), + sizeof(nms_ifcfg_well_known_keys[0]), + &key, + nm_strcmp_p_with_data, + NULL); NM_SET_OUT(out_idx, idx); if (idx < 0) return NULL; diff --git a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.h b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.h index d1f8dbad..4fa9f18c 100644 --- a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.h +++ b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.h @@ -33,7 +33,7 @@ typedef struct { NMSIfcfgKeyTypeFlags key_flags; } NMSIfcfgKeyTypeInfo; -extern const NMSIfcfgKeyTypeInfo nms_ifcfg_well_known_keys[256]; +extern const NMSIfcfgKeyTypeInfo nms_ifcfg_well_known_keys[261]; const NMSIfcfgKeyTypeInfo *nms_ifcfg_well_known_key_find_info(const char *key, gssize *out_idx); diff --git a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c index e8948c3d..41260020 100644 --- a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c +++ b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c @@ -1453,6 +1453,7 @@ write_vlan_setting(NMConnection *connection, shvarFile *ifcfg, gboolean *wired, svSetValueStr(ifcfg, "TYPE", TYPE_VLAN); svSetValueStr(ifcfg, "PHYSDEV", nm_setting_vlan_get_parent(s_vlan)); svSetValueInt64(ifcfg, "VLAN_ID", nm_setting_vlan_get_id(s_vlan)); + svSetValueStr(ifcfg, "VLAN_PROTOCOL", nm_setting_vlan_get_protocol(s_vlan)); vlan_flags = nm_setting_vlan_get_flags(s_vlan); svSetValueBoolean(ifcfg, "REORDER_HDR", NM_FLAGS_HAS(vlan_flags, NM_VLAN_FLAG_REORDER_HEADERS)); @@ -2359,13 +2360,14 @@ get_route_attributes_string(NMIPRoute *route, int family) /* we also have a corresponding attribute with the numeric value. The * lock setting is handled above. */ } - } else if (nm_streq(names[i], NM_IP_ROUTE_ATTRIBUTE_SCOPE)) { + } else if (NM_IN_STRSET(names[i], NM_IP_ROUTE_ATTRIBUTE_SCOPE)) { g_string_append_printf(str, "%s %u", names[i], (unsigned) g_variant_get_byte(attr)); } else if (nm_streq(names[i], NM_IP_ROUTE_ATTRIBUTE_TOS)) { g_string_append_printf(str, "%s 0x%02x", names[i], (unsigned) g_variant_get_byte(attr)); } else if (NM_IN_STRSET(names[i], + NM_IP_ROUTE_ATTRIBUTE_RTO_MIN, NM_IP_ROUTE_ATTRIBUTE_TABLE, - NM_IP_ROUTE_ATTRIBUTE_RTO_MIN)) { + NM_IP_ROUTE_ATTRIBUTE_WEIGHT)) { g_string_append_printf(str, "%s %u", names[i], (unsigned) g_variant_get_uint32(attr)); } else if (nm_streq(names[i], NM_IP_ROUTE_ATTRIBUTE_QUICKACK)) { g_string_append_printf(str, "%s %u", names[i], (unsigned) g_variant_get_boolean(attr)); @@ -2416,8 +2418,8 @@ write_route_file_svformat(const char *filename, NMSettingIPConfig *s_ip4) svSetValueStr(routefile, addr_key, nm_ip_route_get_dest(route)); - netmask = _nm_utils_ip4_prefix_to_netmask(nm_ip_route_get_prefix(route)); - svSetValueStr(routefile, netmask_key, _nm_utils_inet4_ntop(netmask, buf)); + netmask = nm_ip4_addr_netmask_from_prefix(nm_ip_route_get_prefix(route)); + svSetValueStr(routefile, netmask_key, nm_inet4_ntop(netmask, buf)); svSetValueStr(routefile, gw_key, nm_ip_route_get_next_hop(route)); @@ -2826,9 +2828,7 @@ write_ip4_setting(NMConnection *connection, if (has_netmask) { char buf[INET_ADDRSTRLEN]; - svSetValueStr(ifcfg, - tag, - _nm_utils_inet4_ntop(_nm_utils_ip4_prefix_to_netmask(prefix), buf)); + svSetValueStr(ifcfg, tag, nm_inet4_ntop(nm_ip4_addr_netmask_from_prefix(prefix), buf)); } n++; @@ -2937,6 +2937,14 @@ write_ip4_setting(NMConnection *connection, } svSetValueStr(ifcfg, "DHCP_REJECT_SERVERS", str->str); } + + svSetValueTernary(ifcfg, + "IPV4_AUTO_ROUTE_EXT_GW", + nm_setting_ip_config_get_auto_route_ext_gw(s_ip4)); + + svSetValueTernary(ifcfg, + "IPV4_REPLACE_LOCAL_RULE", + nm_setting_ip_config_get_replace_local_rule(s_ip4)); } static void @@ -3197,6 +3205,14 @@ write_ip6_setting(NMConnection *connection, shvarFile *ifcfg, GString **out_rout write_res_options(ifcfg, s_ip6, "IPV6_RES_OPTIONS"); NM_SET_OUT(out_route6_content, write_route_file(s_ip6)); + + svSetValueTernary(ifcfg, + "IPV6_AUTO_ROUTE_EXT_GW", + nm_setting_ip_config_get_auto_route_ext_gw(s_ip6)); + + svSetValueTernary(ifcfg, + "IPV6_REPLACE_LOCAL_RULE", + nm_setting_ip_config_get_replace_local_rule(s_ip6)); } static void diff --git a/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Vlan_test-vlan-interface.cexpected b/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Vlan_test-vlan-interface.cexpected index 6ad151aa..6373da90 100644 --- a/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Vlan_test-vlan-interface.cexpected +++ b/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Vlan_test-vlan-interface.cexpected @@ -2,6 +2,7 @@ VLAN=yes TYPE=Vlan PHYSDEV=eth9 VLAN_ID=43 +VLAN_PROTOCOL=802.1ad REORDER_HDR=yes GVRP=yes VLAN_FLAGS=LOOSE_BINDING diff --git a/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1 b/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1 index ecb36c37..5e40362e 100644 --- a/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1 +++ b/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1 @@ -1,4 +1,7 @@ DNS1="192.0.2.1" +DNS2="192.0.2.2#adfs.afddsaf" +DNS3="1::2" +DNS4="1::3#dfdf.er" IPADDR="102.0.2.2" GATEWAY="192.0.2.1" NETMASK="255.254.0.0" diff --git a/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1.cexpected b/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1.cexpected index 87493ac2..d0eeeb99 100644 --- a/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1.cexpected +++ b/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1.cexpected @@ -1,4 +1,7 @@ DNS1=192.0.2.1 +DNS2=192.0.2.2#adfs.afddsaf +DNS3=1::2 +DNS4=1::3#dfdf.er IPADDR=102.0.2.2 GATEWAY=192.0.2.1 NETMASK=255.254.0.0 diff --git a/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-interface b/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-interface index d8d9193f..38fe4069 100644 --- a/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-interface +++ b/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-interface @@ -5,6 +5,7 @@ PHYSDEV=eth9 VLAN_FLAGS=GVRP,LOOSE_BINDING VLAN_INGRESS_PRIORITY_MAP=0:1,2:5 VLAN_EGRESS_PRIORITY_MAP=12:3,14:7,3:1 +VLAN_PROTOCOL=802.1ad ONBOOT=yes BOOTPROTO=static IPADDR=192.168.43.149 diff --git a/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-routes b/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-routes index 7faf49bd..fac9a5a2 100644 --- a/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-routes +++ b/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-routes @@ -9,7 +9,7 @@ IPV6INIT=no MTU=1492 NM_CONTROLLED=yes DNS1=4.2.2.1 -DNS2=4.2.2.2 +DNS2=4.2.2.2#dns.name IPADDR=192.168.1.5 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 diff --git a/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-wired-static-routes b/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-wired-static-routes index 717ad1ac..728e8e96 100644 --- a/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-wired-static-routes +++ b/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-wired-static-routes @@ -6,7 +6,7 @@ ADDRESS1=44.55.66.77 NETMASK1=255.255.255.255 GATEWAY1=192.168.1.7 METRIC1=3 -OPTIONS1="mtu lock 9000 cwnd 12 src 1.1.1.1 tos 0x28 window 30000 scope 10 initcwnd lock 13 initrwnd 14 rto_min 300 advmss 1300 quickack 1" +OPTIONS1="mtu lock 9000 cwnd 12 src 1.1.1.1 tos 0x28 window 30000 scope 10 initcwnd lock 13 initrwnd 14 rto_min 300 advmss 1300 quickack 1 weight 5" ADDRESS2=44.55.66.78 NETMASK2=255.255.255.255 diff --git a/src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c b/src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c index 886a605f..40ff7c67 100644 --- a/src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c +++ b/src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c @@ -461,6 +461,7 @@ test_read_netmask_1(void) gs_free char *content = NULL; NMSettingConnection *s_con; NMSettingIPConfig *s_ip4; + NMSettingIPConfig *s_ip6; NMIPAddress *ip4_addr; const char *FILENAME = TEST_IFCFG_DIR "/ifcfg-netmask-1"; @@ -470,12 +471,20 @@ test_read_netmask_1(void) g_assert_cmpstr(nm_setting_connection_get_id(s_con), ==, "System netmask-1"); s_ip4 = nmtst_connection_assert_setting(connection, NM_TYPE_SETTING_IP4_CONFIG); - g_assert_cmpuint(nm_setting_ip_config_get_num_dns(s_ip4), ==, 1); + g_assert_cmpuint(nm_setting_ip_config_get_num_dns(s_ip4), ==, 2); + g_assert_cmpstr(nm_setting_ip_config_get_dns(s_ip4, 0), ==, "192.0.2.1"); + g_assert_cmpstr(nm_setting_ip_config_get_dns(s_ip4, 1), ==, "192.0.2.2#adfs.afddsaf"); + ip4_addr = nm_setting_ip_config_get_address(s_ip4, 0); g_assert(ip4_addr); g_assert_cmpstr(nm_ip_address_get_address(ip4_addr), ==, "102.0.2.2"); g_assert_cmpint(nm_ip_address_get_prefix(ip4_addr), ==, 15); + s_ip6 = nmtst_connection_assert_setting(connection, NM_TYPE_SETTING_IP6_CONFIG); + g_assert_cmpuint(nm_setting_ip_config_get_num_dns(s_ip6), ==, 2); + g_assert_cmpstr(nm_setting_ip_config_get_dns(s_ip6, 0), ==, "1::2"); + g_assert_cmpstr(nm_setting_ip_config_get_dns(s_ip6, 1), ==, "1::3#dfdf.er"); + nmtst_assert_connection_verifies_without_normalization(connection); content = nmtst_file_get_contents(FILENAME); @@ -1356,6 +1365,7 @@ test_read_wired_static_routes(void) nmtst_assert_route_attribute_byte(ip4_route, NM_IP_ROUTE_ATTRIBUTE_TOS, 0x28); nmtst_assert_route_attribute_uint32(ip4_route, NM_IP_ROUTE_ATTRIBUTE_WINDOW, 30000); nmtst_assert_route_attribute_uint32(ip4_route, NM_IP_ROUTE_ATTRIBUTE_CWND, 12); + nmtst_assert_route_attribute_uint32(ip4_route, NM_IP_ROUTE_ATTRIBUTE_WEIGHT, 5); nmtst_assert_route_attribute_uint32(ip4_route, NM_IP_ROUTE_ATTRIBUTE_INITCWND, 13); nmtst_assert_route_attribute_uint32(ip4_route, NM_IP_ROUTE_ATTRIBUTE_INITRWND, 14); nmtst_assert_route_attribute_uint32(ip4_route, NM_IP_ROUTE_ATTRIBUTE_MTU, 9000); @@ -1390,6 +1400,10 @@ test_read_wired_static_routes(void) g_assert_cmpint(nm_ip_route_get_prefix(ip4_route), ==, 32); nmtst_assert_route_attribute_string(ip4_route, NM_IP_ROUTE_ATTRIBUTE_TYPE, "local"); nmtst_assert_route_attribute_byte(ip4_route, NM_IP_ROUTE_ATTRIBUTE_SCOPE, 254); + + g_assert_cmpint(nm_setting_ip_config_get_num_dns(s_ip4), ==, 2); + g_assert_cmpstr(nm_setting_ip_config_get_dns(s_ip4, 0), ==, "4.2.2.1"); + g_assert_cmpstr(nm_setting_ip_config_get_dns(s_ip4, 1), ==, "4.2.2.2#dns.name"); } static void @@ -2036,11 +2050,11 @@ test_read_wired_aliases_good(gconstpointer test_data) NULL}; const char *expected_address_3[] = {"192.168.1.5", "192.168.1.6", NULL}; const char *expected_label_0[] = { - NULL, - "aliasem0:1", - "aliasem0:2", - "aliasem0:99", - NULL, + NULL, + "aliasem0:1", + "aliasem0:2", + "aliasem0:99", + NULL, }; const char *expected_label_3[] = { NULL, @@ -2082,7 +2096,7 @@ test_read_wired_aliases_good(gconstpointer test_data) g_assert(ip4_addr != NULL); addr = nm_ip_address_get_address(ip4_addr); - g_assert(nm_utils_ipaddr_is_valid(AF_INET, addr)); + g_assert(nm_inet_is_valid(AF_INET, addr)); for (j = 0; j < expected_num_addresses; j++) { if (!g_strcmp0(addr, expected_address[j])) @@ -4266,6 +4280,7 @@ static void test_write_wired_static(void) { nmtst_auto_unlinkfile char *testfile = NULL; + nmtst_auto_unlinkfile char *route4file = NULL; nmtst_auto_unlinkfile char *route6file = NULL; gs_unref_object NMConnection *connection = NULL; gs_unref_object NMConnection *reread = NULL; @@ -4275,6 +4290,7 @@ test_write_wired_static(void) NMSettingIPConfig *s_ip6, *reread_s_ip6; NMIPAddress *addr; NMIPAddress *addr6; + NMIPRoute *route4; NMIPRoute *route6; GError *error = NULL; @@ -4379,6 +4395,13 @@ test_write_wired_static(void) nm_setting_ip_config_add_route(s_ip6, route6); nm_ip_route_unref(route6); + route4 = nm_ip_route_new(AF_INET, "1.1.1.1", 24, "1.2.3.4", 99, &error); + g_assert_no_error(error); + nm_ip_route_set_attribute(route4, NM_IP_ROUTE_ATTRIBUTE_CWND, g_variant_new_uint32(100)); + nm_ip_route_set_attribute(route4, NM_IP_ROUTE_ATTRIBUTE_WEIGHT, g_variant_new_uint32(5)); + nm_setting_ip_config_add_route(s_ip4, route4); + nm_ip_route_unref(route4); + /* DNS servers */ nm_setting_ip_config_add_dns(s_ip6, "fade:0102:0103::face"); nm_setting_ip_config_add_dns(s_ip6, "cafe:ffff:eeee:dddd:cccc:bbbb:aaaa:feed"); @@ -4390,7 +4413,9 @@ test_write_wired_static(void) nmtst_assert_connection_verifies(connection); _writer_new_connection(connection, TEST_SCRATCH_DIR, &testfile); + route6file = utils_get_route6_path(testfile); + route4file = utils_get_route_path(testfile); reread = _connection_from_file(testfile, NULL, TYPE_ETHERNET, NULL); @@ -7754,6 +7779,7 @@ test_read_vlan_interface(void) g_assert_cmpstr(nm_setting_vlan_get_parent(s_vlan), ==, "eth9"); g_assert_cmpint(nm_setting_vlan_get_id(s_vlan), ==, 43); + g_assert_cmpstr(nm_setting_vlan_get_protocol(s_vlan), ==, "802.1ad"); g_assert_cmpint(nm_setting_vlan_get_flags(s_vlan), ==, NM_VLAN_FLAG_GVRP | NM_VLAN_FLAG_LOOSE_BINDING | NM_VLAN_FLAG_REORDER_HEADERS); @@ -7930,6 +7956,7 @@ test_read_vlan_flags_1(void) g_assert_cmpstr(nm_setting_vlan_get_parent(s_vlan), ==, "eth9"); g_assert_cmpint(nm_setting_vlan_get_id(s_vlan), ==, 44); + g_assert_cmpstr(nm_setting_vlan_get_protocol(s_vlan), ==, NULL); g_assert_cmpint(nm_setting_vlan_get_flags(s_vlan), ==, NM_VLAN_FLAG_LOOSE_BINDING | NM_VLAN_FLAG_REORDER_HEADERS); diff --git a/src/core/settings/plugins/ifupdown/nms-ifupdown-parser.c b/src/core/settings/plugins/ifupdown/nms-ifupdown-parser.c index a1d6781b..3bdd78c9 100644 --- a/src/core/settings/plugins/ifupdown/nms-ifupdown-parser.c +++ b/src/core/settings/plugins/ifupdown/nms-ifupdown-parser.c @@ -451,7 +451,7 @@ update_ip4_setting_from_if_block(NMConnection *connection, if_block *block, GErr netmask_v); return FALSE; } else { - netmask_int = _nm_utils_ip4_netmask_to_prefix(tmp_mask); + netmask_int = nm_ip4_addr_netmask_to_prefix(tmp_mask); } } @@ -470,7 +470,7 @@ update_ip4_setting_from_if_block(NMConnection *connection, if_block *block, GErr /* gateway */ gateway_v = ifparser_getkey(block, "gateway"); if (gateway_v) { - if (!nm_utils_ipaddr_is_valid(AF_INET, gateway_v)) { + if (!nm_inet_is_valid(AF_INET, gateway_v)) { g_set_error(error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, @@ -579,7 +579,7 @@ update_ip6_setting_from_if_block(NMConnection *connection, if_block *block, GErr gateway_v = ifparser_getkey(block, "gateway"); if (gateway_v) { - if (!nm_utils_ipaddr_is_valid(AF_INET6, gateway_v)) { + if (!nm_inet_is_valid(AF_INET6, gateway_v)) { g_set_error(error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, diff --git a/src/core/settings/plugins/ifupdown/nms-ifupdown-plugin.h b/src/core/settings/plugins/ifupdown/nms-ifupdown-plugin.h index edf1b317..570bf2a3 100644 --- a/src/core/settings/plugins/ifupdown/nms-ifupdown-plugin.h +++ b/src/core/settings/plugins/ifupdown/nms-ifupdown-plugin.h @@ -11,7 +11,7 @@ #define NMS_TYPE_IFUPDOWN_PLUGIN (nms_ifupdown_plugin_get_type()) #define NMS_IFUPDOWN_PLUGIN(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), NMS_TYPE_IFUPDOWN_PLUGIN, NMSIfupdownPlugin)) + (_NM_G_TYPE_CHECK_INSTANCE_CAST((obj), NMS_TYPE_IFUPDOWN_PLUGIN, NMSIfupdownPlugin)) #define NMS_IFUPDOWN_PLUGIN_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), NMS_TYPE_IFUPDOWN_PLUGIN, NMSIfupdownPluginClass)) #define NMS_IS_IFUPDOWN_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NMS_TYPE_IFUPDOWN_PLUGIN)) diff --git a/src/core/settings/plugins/keyfile/nms-keyfile-plugin.h b/src/core/settings/plugins/keyfile/nms-keyfile-plugin.h index 19e4122d..03a47526 100644 --- a/src/core/settings/plugins/keyfile/nms-keyfile-plugin.h +++ b/src/core/settings/plugins/keyfile/nms-keyfile-plugin.h @@ -14,7 +14,7 @@ #define NMS_TYPE_KEYFILE_PLUGIN (nms_keyfile_plugin_get_type()) #define NMS_KEYFILE_PLUGIN(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), NMS_TYPE_KEYFILE_PLUGIN, NMSKeyfilePlugin)) + (_NM_G_TYPE_CHECK_INSTANCE_CAST((obj), NMS_TYPE_KEYFILE_PLUGIN, NMSKeyfilePlugin)) #define NMS_KEYFILE_PLUGIN_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), NMS_TYPE_KEYFILE_PLUGIN, NMSKeyfilePluginClass)) #define NMS_IS_KEYFILE_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NMS_TYPE_KEYFILE_PLUGIN)) diff --git a/src/core/settings/plugins/keyfile/nms-keyfile-storage.h b/src/core/settings/plugins/keyfile/nms-keyfile-storage.h index 8343cb2b..66521618 100644 --- a/src/core/settings/plugins/keyfile/nms-keyfile-storage.h +++ b/src/core/settings/plugins/keyfile/nms-keyfile-storage.h @@ -14,7 +14,7 @@ #define NMS_TYPE_KEYFILE_STORAGE (nms_keyfile_storage_get_type()) #define NMS_KEYFILE_STORAGE(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), NMS_TYPE_KEYFILE_STORAGE, NMSKeyfileStorage)) + (_NM_G_TYPE_CHECK_INSTANCE_CAST((obj), NMS_TYPE_KEYFILE_STORAGE, NMSKeyfileStorage)) #define NMS_KEYFILE_STORAGE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), NMS_TYPE_KEYFILE_STORAGE, NMSKeyfileStorageClass)) #define NMS_IS_KEYFILE_STORAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NMS_TYPE_KEYFILE_STORAGE)) diff --git a/src/core/settings/plugins/keyfile/tests/keyfiles/Test_Wired_Connection b/src/core/settings/plugins/keyfile/tests/keyfiles/Test_Wired_Connection index f9ccc003..eb3754a2 100644 --- a/src/core/settings/plugins/keyfile/tests/keyfiles/Test_Wired_Connection +++ b/src/core/settings/plugins/keyfile/tests/keyfiles/Test_Wired_Connection @@ -36,7 +36,7 @@ routes9=1.1.1.9/19,0.0.0.0,0 route10=1.1.1.10/21,,0 routes10=1.1.1.10/20,,0 routes11=1.1.1.11/21,,21 -routes11_options=cwnd=10,lock-cwnd=true,mtu=1430,src=7.7.7.7,type=unicast +routes11_options=cwnd=10,lock-cwnd=true,mtu=1430,src=7.7.7.7,type=unicast,weight=5 routes12=1.2.3.4/32 routes12_options=type=local address30=1.2.3.30/24 diff --git a/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c b/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c index 47be3a5e..83019bab 100644 --- a/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c +++ b/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c @@ -311,6 +311,7 @@ test_read_valid_wired_connection(void) nmtst_assert_route_attribute_uint32(route, NM_IP_ROUTE_ATTRIBUTE_CWND, 10); nmtst_assert_route_attribute_uint32(route, NM_IP_ROUTE_ATTRIBUTE_MTU, 1430); + nmtst_assert_route_attribute_uint32(route, NM_IP_ROUTE_ATTRIBUTE_WEIGHT, 5); nmtst_assert_route_attribute_boolean(route, NM_IP_ROUTE_ATTRIBUTE_LOCK_CWND, TRUE); nmtst_assert_route_attribute_string(route, NM_IP_ROUTE_ATTRIBUTE_SRC, "7.7.7.7"); nmtst_assert_route_attribute_string(route, NM_IP_ROUTE_ATTRIBUTE_TYPE, "unicast"); @@ -495,6 +496,7 @@ test_write_wired_connection(void) g_assert_no_error(error); nm_ip_route_set_attribute(rt, NM_IP_ROUTE_ATTRIBUTE_CWND, g_variant_new_uint32(10)); nm_ip_route_set_attribute(rt, NM_IP_ROUTE_ATTRIBUTE_MTU, g_variant_new_uint32(1492)); + nm_ip_route_set_attribute(rt, NM_IP_ROUTE_ATTRIBUTE_WEIGHT, g_variant_new_uint32(5)); nm_ip_route_set_attribute(rt, NM_IP_ROUTE_ATTRIBUTE_SRC, g_variant_new_string("1.2.3.4")); g_assert(nm_setting_ip_config_add_route(s_ip4, rt)); nm_ip_route_unref(rt); @@ -2298,7 +2300,7 @@ test_read_missing_id_uuid(void) const char *FILENAME = TEST_KEYFILES_DIR "/Test_Missing_ID_UUID"; const char F[] = "keyfile\0" TEST_KEYFILES_DIR "/Test_Missing_ID_UUID"; - expected_uuid = nm_uuid_generate_from_strings("keyfile", FILENAME, NULL); + expected_uuid = nm_uuid_generate_from_strings_old("keyfile", FILENAME); expected_uuid2 = nm_uuid_generate_from_string_str(F, sizeof(F), NM_UUID_TYPE_VERSION3, &nm_uuid_ns_1); |