mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-24 17:10:08 +01:00
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.
This commit is contained in:
parent
96d266cf51
commit
bd6e60f2dc
1 changed files with 41 additions and 56 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue