diff options
author | Thomas Graf <tgraf@suug.ch> | 2011-05-11 07:33:29 (GMT) |
---|---|---|
committer | Thomas Graf <tgraf@suug.ch> | 2011-05-11 07:33:29 (GMT) |
commit | 4cb1666fe19f71c09628615a1c4b6f822b7cd8de (patch) | |
tree | 0a5a720b023c29b78ccae901f8fb09e3d77e7ec4 | |
parent | f443be6e744ac9be2ad48bd59432d5c2215d4e51 (diff) | |
download | libnl-4cb1666fe19f71c09628615a1c4b6f822b7cd8de.zip libnl-4cb1666fe19f71c09628615a1c4b6f822b7cd8de.tar.gz libnl-4cb1666fe19f71c09628615a1c4b6f822b7cd8de.tar.bz2 |
Provide silent variation of nl_cache_require()
Use in addr and tc layer to avoid warnings being printed if no
cache is available.
-rw-r--r-- | include/netlink/cache.h | 1 | ||||
-rw-r--r-- | lib/cache_mngt.c | 21 | ||||
-rw-r--r-- | lib/route/addr.c | 2 | ||||
-rw-r--r-- | lib/route/tc.c | 2 |
4 files changed, 17 insertions, 9 deletions
diff --git a/include/netlink/cache.h b/include/netlink/cache.h index e17b015..f8073f0 100644 --- a/include/netlink/cache.h +++ b/include/netlink/cache.h @@ -107,6 +107,7 @@ extern int nl_cache_mngt_unregister(struct nl_cache_ops *); extern void nl_cache_mngt_provide(struct nl_cache *); extern void nl_cache_mngt_unprovide(struct nl_cache *); extern struct nl_cache * nl_cache_mngt_require(const char *); +extern struct nl_cache * __nl_cache_mngt_require(const char *); struct nl_cache_mngr; diff --git a/lib/cache_mngt.c b/lib/cache_mngt.c index d57d836..a9ecf27 100644 --- a/lib/cache_mngt.c +++ b/lib/cache_mngt.c @@ -217,6 +217,17 @@ void nl_cache_mngt_unprovide(struct nl_cache *cache) ops->co_major_cache = NULL; } +struct nl_cache *__nl_cache_mngt_require(const char *name) +{ + struct nl_cache_ops *ops; + + ops = nl_cache_ops_lookup(name); + if (ops) + return ops->co_major_cache; + + return NULL; +} + /** * Demand the use of a global cache * @arg name name of the required object type @@ -229,19 +240,15 @@ void nl_cache_mngt_unprovide(struct nl_cache *cache) */ struct nl_cache *nl_cache_mngt_require(const char *name) { - struct nl_cache_ops *ops; + struct nl_cache *cache; - ops = nl_cache_ops_lookup(name); - if (!ops || !ops->co_major_cache) { + if (!(cache = __nl_cache_mngt_require(name))) fprintf(stderr, "Application BUG: Your application must " "call nl_cache_mngt_provide() and\nprovide a valid " "%s cache to be used for internal lookups.\nSee the " " API documentation for more details.\n", name); - - return NULL; - } - return ops->co_major_cache; + return cache; } /** @} */ diff --git a/lib/route/addr.c b/lib/route/addr.c index fa6d76d..4ca6335 100644 --- a/lib/route/addr.c +++ b/lib/route/addr.c @@ -294,7 +294,7 @@ static int addr_msg_parser(struct nl_cache_ops *ops, struct sockaddr_nl *who, addr->ce_mask |= ADDR_ATTR_ANYCAST; } - if ((link_cache = nl_cache_mngt_require("route/link"))) { + if ((link_cache = __nl_cache_mngt_require("route/link"))) { struct rtnl_link *link; if ((link = rtnl_link_get(link_cache, addr->a_ifindex))) { diff --git a/lib/route/tc.c b/lib/route/tc.c index 03920aa..da8c75f 100644 --- a/lib/route/tc.c +++ b/lib/route/tc.c @@ -176,7 +176,7 @@ compat_xstats: return err; } - if ((link_cache = nl_cache_mngt_require("route/link"))) { + if ((link_cache = __nl_cache_mngt_require("route/link"))) { struct rtnl_link *link; if ((link = rtnl_link_get(link_cache, tc->tc_ifindex))) { |