Commit 637fbd12 authored by Antonio Quartulli's avatar Antonio Quartulli

batman-adv: support array of debugfs general attributes

This patch adds support for an array of debugfs general (not soft_iface
specific) attributes. With this change it will be possible to add more general
attributes by simply appending them to the array without touching the rest of
the code.
Reported-by: default avatarMarek Lindner <lindner_marek@yahoo.de>
Signed-off-by: default avatarAntonio Quartulli <ordex@autistici.org>
Acked-by: default avatarSven Eckelmann <sven@narfation.org>
Signed-off-by: default avatarMarek Lindner <lindner_marek@yahoo.de>
parent c76d1525
...@@ -323,7 +323,17 @@ struct batadv_debuginfo batadv_debuginfo_##_name = { \ ...@@ -323,7 +323,17 @@ struct batadv_debuginfo batadv_debuginfo_##_name = { \
} \ } \
}; };
/* the following attributes are general and therefore they will be directly
* placed in the BATADV_DEBUGFS_SUBDIR subdirectory of debugfs
*/
static BATADV_DEBUGINFO(routing_algos, S_IRUGO, batadv_algorithms_open); static BATADV_DEBUGINFO(routing_algos, S_IRUGO, batadv_algorithms_open);
static struct batadv_debuginfo *batadv_general_debuginfos[] = {
&batadv_debuginfo_routing_algos,
NULL,
};
/* The following attributes are per soft interface */
static BATADV_DEBUGINFO(originators, S_IRUGO, batadv_originators_open); static BATADV_DEBUGINFO(originators, S_IRUGO, batadv_originators_open);
static BATADV_DEBUGINFO(gateways, S_IRUGO, batadv_gateways_open); static BATADV_DEBUGINFO(gateways, S_IRUGO, batadv_gateways_open);
static BATADV_DEBUGINFO(transtable_global, S_IRUGO, static BATADV_DEBUGINFO(transtable_global, S_IRUGO,
...@@ -358,7 +368,7 @@ static struct batadv_debuginfo *batadv_mesh_debuginfos[] = { ...@@ -358,7 +368,7 @@ static struct batadv_debuginfo *batadv_mesh_debuginfos[] = {
void batadv_debugfs_init(void) void batadv_debugfs_init(void)
{ {
struct batadv_debuginfo *bat_debug; struct batadv_debuginfo **bat_debug;
struct dentry *file; struct dentry *file;
batadv_debugfs = debugfs_create_dir(BATADV_DEBUGFS_SUBDIR, NULL); batadv_debugfs = debugfs_create_dir(BATADV_DEBUGFS_SUBDIR, NULL);
...@@ -366,17 +376,23 @@ void batadv_debugfs_init(void) ...@@ -366,17 +376,23 @@ void batadv_debugfs_init(void)
batadv_debugfs = NULL; batadv_debugfs = NULL;
if (!batadv_debugfs) if (!batadv_debugfs)
goto out; goto err;
bat_debug = &batadv_debuginfo_routing_algos; for (bat_debug = batadv_general_debuginfos; *bat_debug; ++bat_debug) {
file = debugfs_create_file(bat_debug->attr.name, file = debugfs_create_file(((*bat_debug)->attr).name,
S_IFREG | bat_debug->attr.mode, S_IFREG | ((*bat_debug)->attr).mode,
batadv_debugfs, NULL, &bat_debug->fops); batadv_debugfs, NULL,
if (!file) &(*bat_debug)->fops);
pr_err("Can't add debugfs file: %s\n", bat_debug->attr.name); if (!file) {
pr_err("Can't add general debugfs file: %s\n",
((*bat_debug)->attr).name);
goto err;
}
}
out:
return; return;
err:
debugfs_remove_recursive(batadv_debugfs);
} }
void batadv_debugfs_destroy(void) void batadv_debugfs_destroy(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment