diff options
Diffstat (limited to 'lib/object.c')
-rw-r--r-- | lib/object.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/object.c b/lib/object.c index 055a208..585189e 100644 --- a/lib/object.c +++ b/lib/object.c @@ -291,7 +291,15 @@ int nl_object_identical(struct nl_object *a, struct nl_object *b) if (ops != obj_ops(b)) return 0; - req_attrs = ops->oo_id_attrs; + if (ops->oo_id_attrs_get) { + int req_attrs_a = ops->oo_id_attrs_get(a); + int req_attrs_b = ops->oo_id_attrs_get(b); + if (req_attrs_a != req_attrs_b) + return 0; + req_attrs = req_attrs_a; + } else { + req_attrs = ops->oo_id_attrs; + } if (req_attrs == 0xFFFFFFFF) req_attrs = a->ce_mask & b->ce_mask; |