summaryrefslogtreecommitdiff
path: root/src/libnm-platform
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2022-09-08 09:47:04 +0200
committerThomas Haller <thaller@redhat.com>2022-09-08 19:43:59 +0200
commitbd6e60f2dce071e1aebd87c523e66d530179c38c (patch)
tree8e0315772cbb41983490d01c529e8b349b902ca7 /src/libnm-platform
parent96d266cf518f221df37008c87e49b42b09f7da89 (diff)
downloadNetworkManager-bd6e60f2dce071e1aebd87c523e66d530179c38c.tar.gz
platform: simplify nm_platform_ip_route_get_prune_list() to not reuse variables
This optimization seems unnecessary. Just initialize a new route struct and use it. The advantage is that we can have the variable in the scope closer to where it's used, and don't need to think about what happens outside the scope.
Diffstat (limited to 'src/libnm-platform')
-rw-r--r--src/libnm-platform/nm-platform.c97
1 files changed, 41 insertions, 56 deletions
diff --git a/src/libnm-platform/nm-platform.c b/src/libnm-platform/nm-platform.c
index 68e1952c2f..3dfe3404d4 100644
--- a/src/libnm-platform/nm-platform.c
+++ b/src/libnm-platform/nm-platform.c
@@ -4721,9 +4721,6 @@ nm_platform_ip_route_get_prune_list(NMPlatform *self,
GPtrArray *routes_prune = NULL;
const NMDedupMultiHeadEntry *head_entry;
CList *iter;
- NMPlatformIP4Route rt_local4;
- NMPlatformIP6Route rt_local6;
- NMPlatformIP6Route rt_mcast6;
const NMPlatformLink *pllink;
const NMPlatformLnkVrf *lnk_vrf;
guint32 local_table;
@@ -4748,10 +4745,6 @@ nm_platform_ip_route_get_prune_list(NMPlatform *self,
lnk_vrf = nm_platform_link_get_lnk_vrf(self, pllink->master, NULL);
local_table = lnk_vrf ? lnk_vrf->table : RT_TABLE_LOCAL;
- rt_local4.plen = 0;
- rt_local6.plen = 0;
- rt_mcast6.plen = 0;
-
c_list_for_each (iter, &head_entry->lst_entries_head) {
const NMPObject *obj = c_list_entry(iter, NMDedupMultiEntry, lst_entries)->obj;
const NMPlatformIPXRoute *rt = NMP_OBJECT_CAST_IPX_ROUTE(obj);
@@ -4783,29 +4776,26 @@ nm_platform_ip_route_get_prune_list(NMPlatform *self,
&& rt->rx.metric == 0
&& rt->r4.scope_inv == nm_platform_route_scope_inv(RT_SCOPE_HOST)
&& rt->r4.gateway == INADDR_ANY) {
- if (rt_local4.plen == 0) {
- rt_local4 = (NMPlatformIP4Route){
- .ifindex = ifindex,
- .type_coerced = nm_platform_route_type_coerce(RTN_LOCAL),
- .plen = 32,
- .rt_source = NM_IP_CONFIG_SOURCE_RTPROT_KERNEL,
- .metric = 0,
- .table_coerced = nm_platform_route_table_coerce(local_table),
- .scope_inv = nm_platform_route_scope_inv(RT_SCOPE_HOST),
- .gateway = INADDR_ANY,
- };
- }
-
- /* the possible "network" depends on the addresses we have. We don't check that
- * carefully. If the other parameters match, we assume that this route is the one
- * generated by kernel. */
- rt_local4.network = rt->r4.network;
- rt_local4.pref_src = rt->r4.pref_src;
+ const NMPlatformIP4Route r = {
+ .ifindex = ifindex,
+ .type_coerced = nm_platform_route_type_coerce(RTN_LOCAL),
+ .plen = 32,
+ .rt_source = NM_IP_CONFIG_SOURCE_RTPROT_KERNEL,
+ .metric = 0,
+ .table_coerced = nm_platform_route_table_coerce(local_table),
+ .scope_inv = nm_platform_route_scope_inv(RT_SCOPE_HOST),
+ .gateway = INADDR_ANY,
+ /* the possible "network" depends on the addresses we have. We don't check that
+ * carefully. If the other parameters match, we assume that this route is the one
+ * generated by kernel. */
+ .network = rt->r4.network,
+ .pref_src = rt->r4.pref_src,
+ };
/* to be more confident about comparing the value, use our nm_platform_ip4_route_cmp()
* implementation. That will also consider parameters that we leave unspecified here. */
if (nm_platform_ip4_route_cmp(&rt->r4,
- &rt_local4,
+ &r,
NM_PLATFORM_IP_ROUTE_CMP_TYPE_SEMANTICALLY)
== 0)
continue;
@@ -4820,23 +4810,20 @@ nm_platform_ip_route_get_prune_list(NMPlatform *self,
&& rt->rx.plen == 128 && rt->rx.rt_source == NM_IP_CONFIG_SOURCE_RTPROT_KERNEL
&& rt->rx.metric == 0 && rt->r6.rt_pref == NM_ICMPV6_ROUTER_PREF_MEDIUM
&& IN6_IS_ADDR_UNSPECIFIED(&rt->r6.gateway)) {
- if (rt_local6.plen == 0) {
- rt_local6 = (NMPlatformIP6Route){
- .ifindex = ifindex,
- .type_coerced = nm_platform_route_type_coerce(RTN_LOCAL),
- .plen = 128,
- .rt_source = NM_IP_CONFIG_SOURCE_RTPROT_KERNEL,
- .metric = 0,
- .table_coerced = nm_platform_route_table_coerce(local_table),
- .rt_pref = NM_ICMPV6_ROUTER_PREF_MEDIUM,
- .gateway = IN6ADDR_ANY_INIT,
- };
- }
-
- rt_local6.network = rt->r6.network;
+ const NMPlatformIP6Route r = {
+ .ifindex = ifindex,
+ .type_coerced = nm_platform_route_type_coerce(RTN_LOCAL),
+ .plen = 128,
+ .rt_source = NM_IP_CONFIG_SOURCE_RTPROT_KERNEL,
+ .metric = 0,
+ .table_coerced = nm_platform_route_table_coerce(local_table),
+ .rt_pref = NM_ICMPV6_ROUTER_PREF_MEDIUM,
+ .gateway = IN6ADDR_ANY_INIT,
+ .network = rt->r6.network,
+ };
if (nm_platform_ip6_route_cmp(&rt->r6,
- &rt_local6,
+ &r,
NM_PLATFORM_IP_ROUTE_CMP_TYPE_SEMANTICALLY)
== 0)
continue;
@@ -4858,23 +4845,21 @@ nm_platform_ip_route_get_prune_list(NMPlatform *self,
&& rt->rx.plen == 8 && rt->rx.rt_source == NM_IP_CONFIG_SOURCE_RTPROT_BOOT
&& rt->rx.metric == 256 && rt->r6.rt_pref == NM_ICMPV6_ROUTER_PREF_MEDIUM
&& IN6_IS_ADDR_UNSPECIFIED(&rt->r6.gateway)) {
- if (rt_mcast6.plen == 0) {
- rt_mcast6 = (NMPlatformIP6Route){
- .ifindex = ifindex,
- .type_coerced = nm_platform_route_type_coerce(RTN_UNICAST),
- .plen = 8,
- .rt_source = NM_IP_CONFIG_SOURCE_RTPROT_BOOT,
- .metric = 256,
- .table_coerced = nm_platform_route_table_coerce(local_table),
- .rt_pref = NM_ICMPV6_ROUTER_PREF_MEDIUM,
- .gateway = IN6ADDR_ANY_INIT,
- .network =
- NM_IN6ADDR_INIT(0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
- };
- }
+ const NMPlatformIP6Route r = {
+ .ifindex = ifindex,
+ .type_coerced = nm_platform_route_type_coerce(RTN_UNICAST),
+ .plen = 8,
+ .rt_source = NM_IP_CONFIG_SOURCE_RTPROT_BOOT,
+ .metric = 256,
+ .table_coerced = nm_platform_route_table_coerce(local_table),
+ .rt_pref = NM_ICMPV6_ROUTER_PREF_MEDIUM,
+ .gateway = IN6ADDR_ANY_INIT,
+ .network =
+ NM_IN6ADDR_INIT(0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
+ };
if (nm_platform_ip6_route_cmp(&rt->r6,
- &rt_mcast6,
+ &r,
NM_PLATFORM_IP_ROUTE_CMP_TYPE_SEMANTICALLY)
== 0)
continue;