diff options
author | Richard Alpe <richard.alpe@ericsson.com> | 2015-02-09 03:50:04 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-02-09 16:20:47 -0500 |
commit | d0796d1ef63deb38147729664691ba3090930b26 (patch) | |
tree | b227569cf4d6cd2250000095f1a1867f86d08854 /net/tipc/bearer.c | |
parent | bfb3e5dd8dfd84dfd13649393abab63e43267b00 (diff) |
tipc: convert legacy nl bearer dump to nl compat
Introduce a framework for dumping netlink data from the new netlink
API and formatting it to the old legacy API format. This is done by
looping the dump data and calling a format handler for each entity, in
this case a bearer.
We dump until either all data is dumped or we reach the limited buffer
size of the legacy API. Remember, the legacy API doesn't scale.
In this commit we convert TIPC_CMD_GET_BEARER_NAMES to use the compat
layer.
Signed-off-by: Richard Alpe <richard.alpe@ericsson.com>
Reviewed-by: Erik Hugne <erik.hugne@ericsson.com>
Reviewed-by: Ying Xue <ying.xue@windriver.com>
Reviewed-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc/bearer.c')
-rw-r--r-- | net/tipc/bearer.c | 29 |
1 files changed, 0 insertions, 29 deletions
diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c index 35d400e8c2e5..7a9e29641e61 100644 --- a/net/tipc/bearer.c +++ b/net/tipc/bearer.c | |||
@@ -205,35 +205,6 @@ struct tipc_bearer *tipc_bearer_find(struct net *net, const char *name) | |||
205 | return NULL; | 205 | return NULL; |
206 | } | 206 | } |
207 | 207 | ||
208 | /** | ||
209 | * tipc_bearer_get_names - record names of bearers in buffer | ||
210 | */ | ||
211 | struct sk_buff *tipc_bearer_get_names(struct net *net) | ||
212 | { | ||
213 | struct tipc_net *tn = net_generic(net, tipc_net_id); | ||
214 | struct sk_buff *buf; | ||
215 | struct tipc_bearer *b; | ||
216 | int i, j; | ||
217 | |||
218 | buf = tipc_cfg_reply_alloc(MAX_BEARERS * TLV_SPACE(TIPC_MAX_BEARER_NAME)); | ||
219 | if (!buf) | ||
220 | return NULL; | ||
221 | |||
222 | for (i = 0; media_info_array[i] != NULL; i++) { | ||
223 | for (j = 0; j < MAX_BEARERS; j++) { | ||
224 | b = rtnl_dereference(tn->bearer_list[j]); | ||
225 | if (!b) | ||
226 | continue; | ||
227 | if (b->media == media_info_array[i]) { | ||
228 | tipc_cfg_append_tlv(buf, TIPC_TLV_BEARER_NAME, | ||
229 | b->name, | ||
230 | strlen(b->name) + 1); | ||
231 | } | ||
232 | } | ||
233 | } | ||
234 | return buf; | ||
235 | } | ||
236 | |||
237 | void tipc_bearer_add_dest(struct net *net, u32 bearer_id, u32 dest) | 208 | void tipc_bearer_add_dest(struct net *net, u32 bearer_id, u32 dest) |
238 | { | 209 | { |
239 | struct tipc_net *tn = net_generic(net, tipc_net_id); | 210 | struct tipc_net *tn = net_generic(net, tipc_net_id); |