Skip to content

Commit

Permalink
batman-adv: support array of debugfs general attributes
Browse files Browse the repository at this point in the history
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: Marek Lindner <lindner_marek@yahoo.de>
Signed-off-by: Antonio Quartulli <ordex@autistici.org>
Acked-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
  • Loading branch information
Antonio Quartulli committed Nov 21, 2012
1 parent c76d152 commit 637fbd1
Showing 1 changed file with 25 additions and 9 deletions.
34 changes: 25 additions & 9 deletions net/batman-adv/debugfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 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(gateways, S_IRUGO, batadv_gateways_open);
static BATADV_DEBUGINFO(transtable_global, S_IRUGO,
Expand Down Expand Up @@ -358,25 +368,31 @@ static struct batadv_debuginfo *batadv_mesh_debuginfos[] = {

void batadv_debugfs_init(void)
{
struct batadv_debuginfo *bat_debug;
struct batadv_debuginfo **bat_debug;
struct dentry *file;

batadv_debugfs = debugfs_create_dir(BATADV_DEBUGFS_SUBDIR, NULL);
if (batadv_debugfs == ERR_PTR(-ENODEV))
batadv_debugfs = NULL;

if (!batadv_debugfs)
goto out;
goto err;

bat_debug = &batadv_debuginfo_routing_algos;
file = debugfs_create_file(bat_debug->attr.name,
S_IFREG | bat_debug->attr.mode,
batadv_debugfs, NULL, &bat_debug->fops);
if (!file)
pr_err("Can't add debugfs file: %s\n", bat_debug->attr.name);
for (bat_debug = batadv_general_debuginfos; *bat_debug; ++bat_debug) {
file = debugfs_create_file(((*bat_debug)->attr).name,
S_IFREG | ((*bat_debug)->attr).mode,
batadv_debugfs, NULL,
&(*bat_debug)->fops);
if (!file) {
pr_err("Can't add general debugfs file: %s\n",
((*bat_debug)->attr).name);
goto err;
}
}

out:
return;
err:
debugfs_remove_recursive(batadv_debugfs);
}

void batadv_debugfs_destroy(void)
Expand Down

0 comments on commit 637fbd1

Please sign in to comment.