mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-05 02:10:17 +01:00
core: assert that tracked objects in NML3Cfg don't have metric_any
It wouldn't work otherwise. The object state is used to track routes
and compare them to what we find in platform.
A "metric_any" is useful at higher layers, to track a route where the
metric is decided by somebody else. But at the point when we add such an
object to the object-state, a fixed metric must be chosen.
Assert for that.
(cherry picked from commit 8d205faa46)
This commit is contained in:
parent
c42ef1212f
commit
8cb1cf176b
1 changed files with 8 additions and 0 deletions
|
|
@ -797,6 +797,14 @@ _nm_n_acd_data_probe_new(NML3Cfg *self, in_addr_t addr, guint32 timeout_msec, gp
|
|||
nm_assert(_self->priv.p->combined_l3cd_commited); \
|
||||
\
|
||||
if (NM_MORE_ASSERTS > 5) { \
|
||||
/* metric-any must be resolved before adding the object. Otherwise,
|
||||
* their real metric is not known, and they cannot be compared to objects
|
||||
* from NMPlatform cache. */ \
|
||||
nm_assert(!NM_IN_SET(NMP_OBJECT_GET_TYPE(_obj_state->obj), \
|
||||
NMP_OBJECT_TYPE_IP4_ROUTE, \
|
||||
NMP_OBJECT_TYPE_IP6_ROUTE) \
|
||||
|| !NMP_OBJECT_CAST_IP_ROUTE(_obj_state->obj)->metric_any); \
|
||||
\
|
||||
nm_assert(c_list_contains(&_self->priv.p->obj_state_lst_head, \
|
||||
&_obj_state->os_lst)); \
|
||||
nm_assert(_obj_state->os_plobj \
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue