mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-01 13:55:36 +00:00
core: fix l3cd comparison
NM_CMP_SELF(a, b) returns immediately if the objects are the same. Fixes:cb29244552
('core: support compare flags in nm_l3_config_data_cmp_full()') Fixes-test: @dracut_NM_iSCSI_ibft_table https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1583 (cherry picked from commit0a02995175
) (cherry picked from commit5d95c20787
) (cherry picked from commit1395171326
) (cherry picked from commit15236fcba6
)
This commit is contained in:
parent
295241c0d4
commit
99984e43c4
|
@ -2241,36 +2241,37 @@ nm_l3_config_data_cmp_full(const NML3ConfigData *a,
|
|||
const NMPObject *def_route_a = a->best_default_route_x[IS_IPv4];
|
||||
const NMPObject *def_route_b = b->best_default_route_x[IS_IPv4];
|
||||
|
||||
NM_CMP_SELF(def_route_a, def_route_b);
|
||||
if (def_route_a != def_route_b) {
|
||||
if (NM_FLAGS_HAS(flags, NM_L3_CONFIG_CMP_FLAGS_ROUTES)) {
|
||||
NM_CMP_RETURN(
|
||||
nmp_object_cmp_full(def_route_a,
|
||||
def_route_b,
|
||||
NM_FLAGS_HAS(flags, NM_L3_CONFIG_CMP_FLAGS_IFINDEX)
|
||||
? NMP_OBJECT_CMP_FLAGS_NONE
|
||||
: NMP_OBJECT_CMP_FLAGS_IGNORE_IFINDEX));
|
||||
} else if (NM_FLAGS_HAS(flags, NM_L3_CONFIG_CMP_FLAGS_ROUTES_ID)) {
|
||||
if (NM_FLAGS_HAS(flags, NM_L3_CONFIG_CMP_FLAGS_IFINDEX)) {
|
||||
NM_CMP_DIRECT(def_route_a->obj_with_ifindex.ifindex,
|
||||
def_route_b->obj_with_ifindex.ifindex);
|
||||
}
|
||||
|
||||
if (NM_FLAGS_HAS(flags, NM_L3_CONFIG_CMP_FLAGS_ROUTES)) {
|
||||
NM_CMP_RETURN(nmp_object_cmp_full(def_route_a,
|
||||
def_route_b,
|
||||
NM_FLAGS_HAS(flags, NM_L3_CONFIG_CMP_FLAGS_IFINDEX)
|
||||
? NMP_OBJECT_CMP_FLAGS_NONE
|
||||
: NMP_OBJECT_CMP_FLAGS_IGNORE_IFINDEX));
|
||||
} else if (NM_FLAGS_HAS(flags, NM_L3_CONFIG_CMP_FLAGS_ROUTES_ID)) {
|
||||
if (NM_FLAGS_HAS(flags, NM_L3_CONFIG_CMP_FLAGS_IFINDEX)) {
|
||||
NM_CMP_DIRECT(def_route_a->obj_with_ifindex.ifindex,
|
||||
def_route_b->obj_with_ifindex.ifindex);
|
||||
}
|
||||
if (IS_IPv4) {
|
||||
NMPlatformIP4Route ra = def_route_a->ip4_route;
|
||||
NMPlatformIP4Route rb = def_route_b->ip4_route;
|
||||
|
||||
if (IS_IPv4) {
|
||||
NMPlatformIP4Route ra = def_route_a->ip4_route;
|
||||
NMPlatformIP4Route rb = def_route_b->ip4_route;
|
||||
NM_CMP_DIRECT(ra.metric, rb.metric);
|
||||
NM_CMP_DIRECT(ra.plen, rb.plen);
|
||||
NM_CMP_RETURN_DIRECT(
|
||||
nm_utils_ip4_address_same_prefix_cmp(ra.network, rb.network, ra.plen));
|
||||
} else {
|
||||
NMPlatformIP6Route ra = def_route_a->ip6_route;
|
||||
NMPlatformIP6Route rb = def_route_b->ip6_route;
|
||||
|
||||
NM_CMP_DIRECT(ra.metric, rb.metric);
|
||||
NM_CMP_DIRECT(ra.plen, rb.plen);
|
||||
NM_CMP_RETURN_DIRECT(
|
||||
nm_utils_ip4_address_same_prefix_cmp(ra.network, rb.network, ra.plen));
|
||||
} else {
|
||||
NMPlatformIP6Route ra = def_route_a->ip6_route;
|
||||
NMPlatformIP6Route rb = def_route_b->ip6_route;
|
||||
|
||||
NM_CMP_DIRECT(ra.metric, rb.metric);
|
||||
NM_CMP_DIRECT(ra.plen, rb.plen);
|
||||
NM_CMP_RETURN_DIRECT(
|
||||
nm_utils_ip6_address_same_prefix_cmp(&ra.network, &rb.network, ra.plen));
|
||||
NM_CMP_DIRECT(ra.metric, rb.metric);
|
||||
NM_CMP_DIRECT(ra.plen, rb.plen);
|
||||
NM_CMP_RETURN_DIRECT(
|
||||
nm_utils_ip6_address_same_prefix_cmp(&ra.network, &rb.network, ra.plen));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue