summaryrefslogtreecommitdiff
path: root/lib/route
diff options
context:
space:
mode:
Diffstat (limited to 'lib/route')
-rw-r--r--lib/route/addr.c5
-rw-r--r--lib/route/link.c2
-rw-r--r--lib/route/neigh.c9
-rw-r--r--lib/route/neightbl.c3
-rw-r--r--lib/route/nexthop.c10
-rw-r--r--lib/route/route_obj.c5
-rw-r--r--lib/route/tc.c5
7 files changed, 30 insertions, 9 deletions
diff --git a/lib/route/addr.c b/lib/route/addr.c
index 7e29529..c5e14bb 100644
--- a/lib/route/addr.c
+++ b/lib/route/addr.c
@@ -332,7 +332,7 @@ static void addr_dump_line(struct nl_object *obj, struct nl_dump_params *p)
struct nl_cache *link_cache;
char buf[128];
- link_cache = nl_cache_mngt_require("route/link");
+ link_cache = nl_cache_mngt_require_safe("route/link");
if (addr->ce_mask & ADDR_ATTR_LOCAL)
nl_dump_line(p, "%s",
@@ -361,6 +361,9 @@ static void addr_dump_line(struct nl_object *obj, struct nl_dump_params *p)
nl_dump(p, " <%s>", buf);
nl_dump(p, "\n");
+
+ if (link_cache)
+ nl_cache_put(link_cache);
}
static void addr_dump_details(struct nl_object *obj, struct nl_dump_params *p)
diff --git a/lib/route/link.c b/lib/route/link.c
index b378f30..1cecd54 100644
--- a/lib/route/link.c
+++ b/lib/route/link.c
@@ -581,7 +581,7 @@ static int link_request_update(struct nl_cache *cache, struct nl_sock *sk)
static void link_dump_line(struct nl_object *obj, struct nl_dump_params *p)
{
char buf[128];
- struct nl_cache *cache = dp_cache(obj);
+ struct nl_cache *cache = obj->ce_cache;
struct rtnl_link *link = (struct rtnl_link *) obj;
nl_dump_line(p, "%s %s ", link->l_name,
diff --git a/lib/route/neigh.c b/lib/route/neigh.c
index 4b5893a..4a85a85 100644
--- a/lib/route/neigh.c
+++ b/lib/route/neigh.c
@@ -401,7 +401,7 @@ int rtnl_neigh_parse(struct nlmsghdr *n, struct rtnl_neigh **result)
* Get the bridge index for AF_BRIDGE family entries
*/
if (neigh->n_family == AF_BRIDGE) {
- struct nl_cache *lcache = nl_cache_mngt_require("route/link");
+ struct nl_cache *lcache = nl_cache_mngt_require_safe("route/link");
if (lcache ) {
struct rtnl_link *link = rtnl_link_get(lcache,
neigh->n_ifindex);
@@ -410,6 +410,8 @@ int rtnl_neigh_parse(struct nlmsghdr *n, struct rtnl_neigh **result)
rtnl_link_put(link);
neigh->ce_mask |= NEIGH_ATTR_MASTER;
}
+
+ nl_cache_put(lcache);
}
}
@@ -436,7 +438,7 @@ static void neigh_dump_line(struct nl_object *a, struct nl_dump_params *p)
struct nl_cache *link_cache;
char state[128], flags[64];
- link_cache = nl_cache_mngt_require("route/link");
+ link_cache = nl_cache_mngt_require_safe("route/link");
if (n->n_family != AF_BRIDGE)
nl_dump_line(p, "%s ", nl_addr2str(n->n_dst, dst, sizeof(dst)));
@@ -462,6 +464,9 @@ static void neigh_dump_line(struct nl_object *a, struct nl_dump_params *p)
if (state[0] || flags[0])
nl_dump(p, ">");
nl_dump(p, "\n");
+
+ if (link_cache)
+ nl_cache_put(link_cache);
}
static void neigh_dump_details(struct nl_object *a, struct nl_dump_params *p)
diff --git a/lib/route/neightbl.c b/lib/route/neightbl.c
index 1efa5cb..509617b 100644
--- a/lib/route/neightbl.c
+++ b/lib/route/neightbl.c
@@ -237,7 +237,7 @@ static void neightbl_dump_line(struct nl_object *arg, struct nl_dump_params *p)
if (ntbl->nt_parms.ntp_mask & NEIGHTBLPARM_ATTR_IFINDEX) {
struct nl_cache *link_cache;
- link_cache = nl_cache_mngt_require("route/link");
+ link_cache = nl_cache_mngt_require_safe("route/link");
if (link_cache) {
char buf[32];
@@ -245,6 +245,7 @@ static void neightbl_dump_line(struct nl_object *arg, struct nl_dump_params *p)
rtnl_link_i2name(link_cache,
ntbl->nt_parms.ntp_ifindex,
buf, sizeof(buf)));
+ nl_cache_put(link_cache);
} else
nl_dump(p, "<%u> ", ntbl->nt_parms.ntp_ifindex);
} else
diff --git a/lib/route/nexthop.c b/lib/route/nexthop.c
index 189bccd..9990c51 100644
--- a/lib/route/nexthop.c
+++ b/lib/route/nexthop.c
@@ -109,7 +109,7 @@ static void nh_dump_line(struct rtnl_nexthop *nh, struct nl_dump_params *dp)
struct nl_cache *link_cache;
char buf[128];
- link_cache = nl_cache_mngt_require("route/link");
+ link_cache = nl_cache_mngt_require_safe("route/link");
nl_dump(dp, "via");
@@ -128,6 +128,9 @@ static void nh_dump_line(struct rtnl_nexthop *nh, struct nl_dump_params *dp)
}
nl_dump(dp, " ");
+
+ if (link_cache)
+ nl_cache_put(link_cache);
}
static void nh_dump_details(struct rtnl_nexthop *nh, struct nl_dump_params *dp)
@@ -135,7 +138,7 @@ static void nh_dump_details(struct rtnl_nexthop *nh, struct nl_dump_params *dp)
struct nl_cache *link_cache;
char buf[128];
- link_cache = nl_cache_mngt_require("route/link");
+ link_cache = nl_cache_mngt_require_safe("route/link");
nl_dump(dp, "nexthop");
@@ -164,6 +167,9 @@ static void nh_dump_details(struct rtnl_nexthop *nh, struct nl_dump_params *dp)
if (nh->ce_mask & NH_ATTR_FLAGS)
nl_dump(dp, " <%s>", rtnl_route_nh_flags2str(nh->rtnh_flags,
buf, sizeof(buf)));
+
+ if (link_cache)
+ nl_cache_put(link_cache);
}
void rtnl_route_nh_dump(struct rtnl_nexthop *nh, struct nl_dump_params *dp)
diff --git a/lib/route/route_obj.c b/lib/route/route_obj.c
index 0ee9ca0..cc29746 100644
--- a/lib/route/route_obj.c
+++ b/lib/route/route_obj.c
@@ -210,7 +210,7 @@ static void route_dump_details(struct nl_object *a, struct nl_dump_params *p)
char buf[128];
int i;
- link_cache = nl_cache_mngt_require("route/link");
+ link_cache = nl_cache_mngt_require_safe("route/link");
route_dump_line(a, p);
nl_dump_line(p, " ");
@@ -271,6 +271,9 @@ static void route_dump_details(struct nl_object *a, struct nl_dump_params *p)
r->rt_metrics[i]);
nl_dump(p, "]\n");
}
+
+ if (link_cache)
+ nl_cache_put(link_cache);
}
static void route_dump_stats(struct nl_object *obj, struct nl_dump_params *p)
diff --git a/lib/route/tc.c b/lib/route/tc.c
index 6c72c15..5a0b783 100644
--- a/lib/route/tc.c
+++ b/lib/route/tc.c
@@ -822,7 +822,7 @@ void rtnl_tc_dump_line(struct nl_object *obj, struct nl_dump_params *p)
nl_dump(p, "%s ", tc->tc_kind);
- if ((link_cache = nl_cache_mngt_require("route/link"))) {
+ if ((link_cache = nl_cache_mngt_require_safe("route/link"))) {
nl_dump(p, "dev %s ",
rtnl_link_i2name(link_cache, tc->tc_ifindex,
buf, sizeof(buf)));
@@ -837,6 +837,9 @@ void rtnl_tc_dump_line(struct nl_object *obj, struct nl_dump_params *p)
tc_dump(tc, NL_DUMP_LINE, p);
nl_dump(p, "\n");
+
+ if (link_cache)
+ nl_cache_put(link_cache);
}
void rtnl_tc_dump_details(struct nl_object *obj, struct nl_dump_params *p)