]> granicus.if.org Git - libnl/commitdiff
genl: Update mt_id of cache ops when resolving genl id
authorThomas Graf <tgraf@suug.ch>
Mon, 1 Apr 2013 09:16:34 +0000 (11:16 +0200)
committerThomas Graf <tgraf@suug.ch>
Mon, 1 Apr 2013 09:21:22 +0000 (11:21 +0200)
The cache layer uses the message type array stored in the cache
ops to lookup which cache a message belongs to. Update to the
the message array with the resolved generic netlink id to make
it compatible with the caching API.

Allows to use nl_cache_refill() and others for generic netlink
based caches with dynamic generic netlink ids.

Signed-off-by: Thomas Graf <tgraf@suug.ch>
lib/genl/mngt.c

index 35bbb121ea35793275a3adfe1cd6ccd393ea645a..36486636a21c93c8db2c19c7ca92af96aab58241 100644 (file)
@@ -295,6 +295,10 @@ static int __genl_ops_resolve(struct nl_cache *ctrl, struct genl_ops *ops)
        family = genl_ctrl_search_by_name(ctrl, ops->o_name);
        if (family != NULL) {
                ops->o_id = genl_family_get_id(family);
+
+               if (ops->o_cache_ops)
+                       ops->o_cache_ops->co_msgtypes[0].mt_id = ops->o_id;
+
                genl_family_put(family);
 
                return 0;