diff options
| author | Michael Biebl <biebl@debian.org> | 2023-02-10 11:50:34 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2023-02-10 11:50:34 +0100 |
| commit | 1372848511cb896b80b51ed1a3e9606bd9816631 (patch) | |
| tree | 674792b9385bdef935988894b45f06b2af39f88c /src/core/NetworkManagerUtils.c | |
| parent | 40ec077ea305994c1fc2130add6787ca0c73e2c6 (diff) | |
New upstream version 1.42.0 upstream/1.42.0
Diffstat (limited to 'src/core/NetworkManagerUtils.c')
| -rw-r--r-- | src/core/NetworkManagerUtils.c | 73 |
1 files changed, 37 insertions, 36 deletions
diff --git a/src/core/NetworkManagerUtils.c b/src/core/NetworkManagerUtils.c index f5b7666b..6f4c60f8 100644 --- a/src/core/NetworkManagerUtils.c +++ b/src/core/NetworkManagerUtils.c @@ -419,8 +419,8 @@ route_compare(NMIPRoute *route1, NMIPRoute *route2, gint64 default_metric) nm_assert_not_reached(); if (!inet_pton(family, nm_ip_route_get_dest(route2), &a2)) nm_assert_not_reached(); - nm_utils_ipx_address_clear_host_address(family, &a1, NULL, plen); - nm_utils_ipx_address_clear_host_address(family, &a2, NULL, plen); + nm_ip_addr_clear_host_address(family, &a1, NULL, plen); + nm_ip_addr_clear_host_address(family, &a2, NULL, plen); NM_CMP_DIRECT_MEMCMP(&a1, &a2, nm_utils_addr_family_to_size(family)); return 0; @@ -1382,11 +1382,16 @@ nm_utils_ip_route_attribute_to_platform(int addr_family, GET_ATTR(NM_IP_ROUTE_ATTRIBUTE_TOS, r4->tos, BYTE, byte, 0); GET_ATTR(NM_IP_ROUTE_ATTRIBUTE_SCOPE, scope, BYTE, byte, RT_SCOPE_NOWHERE); + GET_ATTR(NM_IP_ROUTE_ATTRIBUTE_WEIGHT, r4->weight, UINT32, uint32, 0); r4->scope_inv = nm_platform_route_scope_inv(scope); } + /* Note that for IPv4 routes in kernel, the onlink flag can be set for + * each next hop separately (rtnh_flags). Not for NetworkManager. We can + * only merge routes as ECMP routes (when setting a weight) if they all + * share the same onlink flag. See NM_PLATFORM_IP_ROUTE_CMP_TYPE_ECMP_ID. + * That simplifies the code. */ GET_ATTR(NM_IP_ROUTE_ATTRIBUTE_ONLINK, onlink, BOOLEAN, boolean, FALSE); - r->r_rtm_flags = ((onlink) ? (unsigned) RTNH_F_ONLINK : 0u); GET_ATTR(NM_IP_ROUTE_ATTRIBUTE_ADVMSS, r->mss, UINT32, uint32, 0); @@ -1418,11 +1423,11 @@ nm_utils_ip_route_attribute_to_platform(int addr_family, && g_variant_is_of_type(variant, G_VARIANT_TYPE_STRING)) { int prefix; - if (nm_utils_parse_inaddr_prefix_bin(addr_family, - g_variant_get_string(variant, NULL), - NULL, - &addr, - &prefix)) { + if (nm_inet_parse_with_prefix_bin(addr_family, + g_variant_get_string(variant, NULL), + NULL, + &addr, + &prefix)) { if (prefix < 0) prefix = 128; r6->src = addr.addr6; @@ -1444,7 +1449,7 @@ nm_utils_ip_addresses_to_dbus(int addr_family, const int IS_IPv4 = NM_IS_IPv4(addr_family); GVariantBuilder builder_data; GVariantBuilder builder_legacy; - char addr_str[NM_UTILS_INET_ADDRSTRLEN]; + char addr_str[NM_INET_ADDRSTRLEN]; NMDedupMultiIter iter; const NMPObject *obj; guint i; @@ -1479,8 +1484,7 @@ nm_utils_ip_addresses_to_dbus(int addr_family, &addr_builder, "{sv}", "address", - g_variant_new_string( - nm_utils_inet_ntop(addr_family, address->ax.address_ptr, addr_str))); + g_variant_new_string(nm_inet_ntop(addr_family, address->ax.address_ptr, addr_str))); g_variant_builder_add(&addr_builder, "{sv}", @@ -1497,11 +1501,10 @@ nm_utils_ip_addresses_to_dbus(int addr_family, p = &address->a6.peer_address; } if (p) { - g_variant_builder_add( - &addr_builder, - "{sv}", - "peer", - g_variant_new_string(nm_utils_inet_ntop(addr_family, p, addr_str))); + g_variant_builder_add(&addr_builder, + "{sv}", + "peer", + g_variant_new_string(nm_inet_ntop(addr_family, p, addr_str))); } if (IS_IPv4) { @@ -1559,7 +1562,7 @@ nm_utils_ip_routes_to_dbus(int addr_family, const NMPObject *obj; GVariantBuilder builder_data; GVariantBuilder builder_legacy; - char addr_str[NM_UTILS_INET_ADDRSTRLEN]; + char addr_str[NM_INET_ADDRSTRLEN]; nm_assert_addr_family(addr_family); @@ -1580,14 +1583,12 @@ nm_utils_ip_routes_to_dbus(int addr_family, nm_assert(r); nm_assert(r->rx.plen <= 8u * nm_utils_addr_family_to_size(addr_family)); nm_assert(!IS_IPv4 - || r->r4.network - == nm_utils_ip4_address_clear_host_address(r->r4.network, r->r4.plen)); - nm_assert( - IS_IPv4 - || (memcmp(&r->r6.network, - nm_utils_ip6_address_clear_host_address(&n, &r->r6.network, r->r6.plen), - sizeof(n)) - == 0)); + || r->r4.network == nm_ip4_addr_clear_host_address(r->r4.network, r->r4.plen)); + nm_assert(IS_IPv4 + || (memcmp(&r->r6.network, + nm_ip6_addr_clear_host_address(&n, &r->r6.network, r->r6.plen), + sizeof(n)) + == 0)); if (r->rx.type_coerced != nm_platform_route_type_coerce(RTN_UNICAST)) continue; @@ -1602,7 +1603,7 @@ nm_utils_ip_routes_to_dbus(int addr_family, &route_builder, "{sv}", "dest", - g_variant_new_string(nm_utils_inet_ntop(addr_family, r->rx.network_ptr, addr_str))); + g_variant_new_string(nm_inet_ntop(addr_family, r->rx.network_ptr, addr_str))); g_variant_builder_add(&route_builder, "{sv}", @@ -1615,7 +1616,7 @@ nm_utils_ip_routes_to_dbus(int addr_family, &route_builder, "{sv}", "next-hop", - g_variant_new_string(nm_utils_inet_ntop(addr_family, gateway, addr_str))); + g_variant_new_string(nm_inet_ntop(addr_family, gateway, addr_str))); } g_variant_builder_add(&route_builder, @@ -1680,7 +1681,7 @@ nm_utils_platform_capture_ip_setting(NMPlatform *platform, NMDedupMultiIter iter; const NMPObject *obj; const char *method = NULL; - char sbuf[NM_UTILS_INET_ADDRSTRLEN]; + char sbuf[NM_INET_ADDRSTRLEN]; const NMPlatformIPXRoute *best_default_route = NULL; s_ip = @@ -1782,13 +1783,13 @@ nm_utils_platform_capture_ip_setting(NMPlatform *platform, } if (best_default_route && nm_setting_ip_config_get_num_addresses(s_ip) > 0) { - g_object_set(s_ip, - NM_SETTING_IP_CONFIG_GATEWAY, - nm_utils_inet_ntop( - addr_family, + g_object_set( + s_ip, + NM_SETTING_IP_CONFIG_GATEWAY, + nm_inet_ntop(addr_family, nm_platform_ip_route_get_gateway(addr_family, &best_default_route->rx), sbuf), - NULL); + NULL); } return NM_SETTING(g_steal_pointer(&s_ip)); @@ -1839,7 +1840,7 @@ nm_platform_setup(NMPlatform *instance) * Returns: (transfer none): The #NMPlatform singleton reference. */ NMPlatform * -nm_platform_get() +nm_platform_get(void) { g_assert(singleton_instance); @@ -1851,11 +1852,11 @@ nm_platform_get() void nm_linux_platform_setup(void) { - nm_platform_setup(nm_linux_platform_new(FALSE, FALSE, FALSE)); + nm_platform_setup(nm_linux_platform_new(NULL, FALSE, FALSE, FALSE)); } void nm_linux_platform_setup_with_tc_cache(void) { - nm_platform_setup(nm_linux_platform_new(FALSE, FALSE, TRUE)); + nm_platform_setup(nm_linux_platform_new(NULL, FALSE, FALSE, TRUE)); } |