batman-adv: Prefix bat_sysfs local static functions with batadv_
All non-static symbols of batman-adv were prefixed with batadv_ to avoid collisions with other symbols of the kernel. Other symbols of batman-adv should use the same prefix to keep the naming scheme consistent. Signed-off-by: Sven Eckelmann <sven@narfation.org>
This commit is contained in:
committed by
Antonio Quartulli
parent
fe8bc39699
commit
0ff9b86feb
@@ -26,15 +26,15 @@
|
|||||||
#include "gateway_client.h"
|
#include "gateway_client.h"
|
||||||
#include "vis.h"
|
#include "vis.h"
|
||||||
|
|
||||||
static struct net_device *kobj_to_netdev(struct kobject *obj)
|
static struct net_device *batadv_kobj_to_netdev(struct kobject *obj)
|
||||||
{
|
{
|
||||||
struct device *dev = container_of(obj->parent, struct device, kobj);
|
struct device *dev = container_of(obj->parent, struct device, kobj);
|
||||||
return to_net_dev(dev);
|
return to_net_dev(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct bat_priv *kobj_to_batpriv(struct kobject *obj)
|
static struct bat_priv *batadv_kobj_to_batpriv(struct kobject *obj)
|
||||||
{
|
{
|
||||||
struct net_device *net_dev = kobj_to_netdev(obj);
|
struct net_device *net_dev = batadv_kobj_to_netdev(obj);
|
||||||
return netdev_priv(net_dev);
|
return netdev_priv(net_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,19 +42,19 @@ static struct bat_priv *kobj_to_batpriv(struct kobject *obj)
|
|||||||
#define UEV_ACTION_VAR "BATACTION="
|
#define UEV_ACTION_VAR "BATACTION="
|
||||||
#define UEV_DATA_VAR "BATDATA="
|
#define UEV_DATA_VAR "BATDATA="
|
||||||
|
|
||||||
static char *uev_action_str[] = {
|
static char *batadv_uev_action_str[] = {
|
||||||
"add",
|
"add",
|
||||||
"del",
|
"del",
|
||||||
"change"
|
"change"
|
||||||
};
|
};
|
||||||
|
|
||||||
static char *uev_type_str[] = {
|
static char *batadv_uev_type_str[] = {
|
||||||
"gw"
|
"gw"
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Use this, if you have customized show and store functions */
|
/* Use this, if you have customized show and store functions */
|
||||||
#define BAT_ATTR(_name, _mode, _show, _store) \
|
#define BAT_ATTR(_name, _mode, _show, _store) \
|
||||||
struct bat_attribute bat_attr_##_name = { \
|
struct bat_attribute batadv_attr_##_name = { \
|
||||||
.attr = {.name = __stringify(_name), \
|
.attr = {.name = __stringify(_name), \
|
||||||
.mode = _mode }, \
|
.mode = _mode }, \
|
||||||
.show = _show, \
|
.show = _show, \
|
||||||
@@ -62,20 +62,21 @@ struct bat_attribute bat_attr_##_name = { \
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define BAT_ATTR_SIF_STORE_BOOL(_name, _post_func) \
|
#define BAT_ATTR_SIF_STORE_BOOL(_name, _post_func) \
|
||||||
ssize_t store_##_name(struct kobject *kobj, struct attribute *attr, \
|
ssize_t batadv_store_##_name(struct kobject *kobj, \
|
||||||
char *buff, size_t count) \
|
struct attribute *attr, char *buff, \
|
||||||
|
size_t count) \
|
||||||
{ \
|
{ \
|
||||||
struct net_device *net_dev = kobj_to_netdev(kobj); \
|
struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \
|
||||||
struct bat_priv *bat_priv = netdev_priv(net_dev); \
|
struct bat_priv *bat_priv = netdev_priv(net_dev); \
|
||||||
return __store_bool_attr(buff, count, _post_func, attr, \
|
return __batadv_store_bool_attr(buff, count, _post_func, attr, \
|
||||||
&bat_priv->_name, net_dev); \
|
&bat_priv->_name, net_dev); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define BAT_ATTR_SIF_SHOW_BOOL(_name) \
|
#define BAT_ATTR_SIF_SHOW_BOOL(_name) \
|
||||||
ssize_t show_##_name(struct kobject *kobj, \
|
ssize_t batadv_show_##_name(struct kobject *kobj, \
|
||||||
struct attribute *attr, char *buff) \
|
struct attribute *attr, char *buff) \
|
||||||
{ \
|
{ \
|
||||||
struct bat_priv *bat_priv = kobj_to_batpriv(kobj); \
|
struct bat_priv *bat_priv = batadv_kobj_to_batpriv(kobj); \
|
||||||
return sprintf(buff, "%s\n", \
|
return sprintf(buff, "%s\n", \
|
||||||
atomic_read(&bat_priv->_name) == 0 ? \
|
atomic_read(&bat_priv->_name) == 0 ? \
|
||||||
"disabled" : "enabled"); \
|
"disabled" : "enabled"); \
|
||||||
@@ -87,24 +88,27 @@ ssize_t show_##_name(struct kobject *kobj, \
|
|||||||
#define BAT_ATTR_SIF_BOOL(_name, _mode, _post_func) \
|
#define BAT_ATTR_SIF_BOOL(_name, _mode, _post_func) \
|
||||||
static BAT_ATTR_SIF_STORE_BOOL(_name, _post_func) \
|
static BAT_ATTR_SIF_STORE_BOOL(_name, _post_func) \
|
||||||
static BAT_ATTR_SIF_SHOW_BOOL(_name) \
|
static BAT_ATTR_SIF_SHOW_BOOL(_name) \
|
||||||
static BAT_ATTR(_name, _mode, show_##_name, store_##_name)
|
static BAT_ATTR(_name, _mode, batadv_show_##_name, \
|
||||||
|
batadv_store_##_name)
|
||||||
|
|
||||||
|
|
||||||
#define BAT_ATTR_SIF_STORE_UINT(_name, _min, _max, _post_func) \
|
#define BAT_ATTR_SIF_STORE_UINT(_name, _min, _max, _post_func) \
|
||||||
ssize_t store_##_name(struct kobject *kobj, struct attribute *attr, \
|
ssize_t batadv_store_##_name(struct kobject *kobj, \
|
||||||
char *buff, size_t count) \
|
struct attribute *attr, char *buff, \
|
||||||
|
size_t count) \
|
||||||
{ \
|
{ \
|
||||||
struct net_device *net_dev = kobj_to_netdev(kobj); \
|
struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \
|
||||||
struct bat_priv *bat_priv = netdev_priv(net_dev); \
|
struct bat_priv *bat_priv = netdev_priv(net_dev); \
|
||||||
return __store_uint_attr(buff, count, _min, _max, _post_func, \
|
return __batadv_store_uint_attr(buff, count, _min, _max, \
|
||||||
attr, &bat_priv->_name, net_dev); \
|
_post_func, attr, \
|
||||||
|
&bat_priv->_name, net_dev); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define BAT_ATTR_SIF_SHOW_UINT(_name) \
|
#define BAT_ATTR_SIF_SHOW_UINT(_name) \
|
||||||
ssize_t show_##_name(struct kobject *kobj, \
|
ssize_t batadv_show_##_name(struct kobject *kobj, \
|
||||||
struct attribute *attr, char *buff) \
|
struct attribute *attr, char *buff) \
|
||||||
{ \
|
{ \
|
||||||
struct bat_priv *bat_priv = kobj_to_batpriv(kobj); \
|
struct bat_priv *bat_priv = batadv_kobj_to_batpriv(kobj); \
|
||||||
return sprintf(buff, "%i\n", atomic_read(&bat_priv->_name)); \
|
return sprintf(buff, "%i\n", atomic_read(&bat_priv->_name)); \
|
||||||
} \
|
} \
|
||||||
|
|
||||||
@@ -114,14 +118,16 @@ ssize_t show_##_name(struct kobject *kobj, \
|
|||||||
#define BAT_ATTR_SIF_UINT(_name, _mode, _min, _max, _post_func) \
|
#define BAT_ATTR_SIF_UINT(_name, _mode, _min, _max, _post_func) \
|
||||||
static BAT_ATTR_SIF_STORE_UINT(_name, _min, _max, _post_func) \
|
static BAT_ATTR_SIF_STORE_UINT(_name, _min, _max, _post_func) \
|
||||||
static BAT_ATTR_SIF_SHOW_UINT(_name) \
|
static BAT_ATTR_SIF_SHOW_UINT(_name) \
|
||||||
static BAT_ATTR(_name, _mode, show_##_name, store_##_name)
|
static BAT_ATTR(_name, _mode, batadv_show_##_name, \
|
||||||
|
batadv_store_##_name)
|
||||||
|
|
||||||
|
|
||||||
#define BAT_ATTR_HIF_STORE_UINT(_name, _min, _max, _post_func) \
|
#define BAT_ATTR_HIF_STORE_UINT(_name, _min, _max, _post_func) \
|
||||||
ssize_t store_##_name(struct kobject *kobj, struct attribute *attr, \
|
ssize_t batadv_store_##_name(struct kobject *kobj, \
|
||||||
char *buff, size_t count) \
|
struct attribute *attr, char *buff, \
|
||||||
|
size_t count) \
|
||||||
{ \
|
{ \
|
||||||
struct net_device *net_dev = kobj_to_netdev(kobj); \
|
struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \
|
||||||
struct hard_iface *hard_iface; \
|
struct hard_iface *hard_iface; \
|
||||||
ssize_t length; \
|
ssize_t length; \
|
||||||
\
|
\
|
||||||
@@ -129,18 +135,19 @@ ssize_t store_##_name(struct kobject *kobj, struct attribute *attr, \
|
|||||||
if (!hard_iface) \
|
if (!hard_iface) \
|
||||||
return 0; \
|
return 0; \
|
||||||
\
|
\
|
||||||
length = __store_uint_attr(buff, count, _min, _max, _post_func, \
|
length = __batadv_store_uint_attr(buff, count, _min, _max, \
|
||||||
attr, &hard_iface->_name, net_dev); \
|
_post_func, attr, \
|
||||||
|
&hard_iface->_name, net_dev); \
|
||||||
\
|
\
|
||||||
batadv_hardif_free_ref(hard_iface); \
|
batadv_hardif_free_ref(hard_iface); \
|
||||||
return length; \
|
return length; \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define BAT_ATTR_HIF_SHOW_UINT(_name) \
|
#define BAT_ATTR_HIF_SHOW_UINT(_name) \
|
||||||
ssize_t show_##_name(struct kobject *kobj, \
|
ssize_t batadv_show_##_name(struct kobject *kobj, \
|
||||||
struct attribute *attr, char *buff) \
|
struct attribute *attr, char *buff) \
|
||||||
{ \
|
{ \
|
||||||
struct net_device *net_dev = kobj_to_netdev(kobj); \
|
struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \
|
||||||
struct hard_iface *hard_iface; \
|
struct hard_iface *hard_iface; \
|
||||||
ssize_t length; \
|
ssize_t length; \
|
||||||
\
|
\
|
||||||
@@ -160,12 +167,13 @@ ssize_t show_##_name(struct kobject *kobj, \
|
|||||||
#define BAT_ATTR_HIF_UINT(_name, _mode, _min, _max, _post_func) \
|
#define BAT_ATTR_HIF_UINT(_name, _mode, _min, _max, _post_func) \
|
||||||
static BAT_ATTR_HIF_STORE_UINT(_name, _min, _max, _post_func) \
|
static BAT_ATTR_HIF_STORE_UINT(_name, _min, _max, _post_func) \
|
||||||
static BAT_ATTR_HIF_SHOW_UINT(_name) \
|
static BAT_ATTR_HIF_SHOW_UINT(_name) \
|
||||||
static BAT_ATTR(_name, _mode, show_##_name, store_##_name)
|
static BAT_ATTR(_name, _mode, batadv_show_##_name, \
|
||||||
|
batadv_store_##_name)
|
||||||
|
|
||||||
|
|
||||||
static int store_bool_attr(char *buff, size_t count,
|
static int batadv_store_bool_attr(char *buff, size_t count,
|
||||||
struct net_device *net_dev,
|
struct net_device *net_dev,
|
||||||
const char *attr_name, atomic_t *attr)
|
const char *attr_name, atomic_t *attr)
|
||||||
{
|
{
|
||||||
int enabled = -1;
|
int enabled = -1;
|
||||||
|
|
||||||
@@ -200,23 +208,27 @@ static int store_bool_attr(char *buff, size_t count,
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline ssize_t __store_bool_attr(char *buff, size_t count,
|
static inline ssize_t
|
||||||
void (*post_func)(struct net_device *),
|
__batadv_store_bool_attr(char *buff, size_t count,
|
||||||
struct attribute *attr,
|
void (*post_func)(struct net_device *),
|
||||||
atomic_t *attr_store, struct net_device *net_dev)
|
struct attribute *attr,
|
||||||
|
atomic_t *attr_store, struct net_device *net_dev)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = store_bool_attr(buff, count, net_dev, attr->name, attr_store);
|
ret = batadv_store_bool_attr(buff, count, net_dev, attr->name,
|
||||||
|
attr_store);
|
||||||
if (post_func && ret)
|
if (post_func && ret)
|
||||||
post_func(net_dev);
|
post_func(net_dev);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int store_uint_attr(const char *buff, size_t count,
|
static int batadv_store_uint_attr(const char *buff, size_t count,
|
||||||
struct net_device *net_dev, const char *attr_name,
|
struct net_device *net_dev,
|
||||||
unsigned int min, unsigned int max, atomic_t *attr)
|
const char *attr_name,
|
||||||
|
unsigned int min, unsigned int max,
|
||||||
|
atomic_t *attr)
|
||||||
{
|
{
|
||||||
unsigned long uint_val;
|
unsigned long uint_val;
|
||||||
int ret;
|
int ret;
|
||||||
@@ -251,26 +263,27 @@ static int store_uint_attr(const char *buff, size_t count,
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline ssize_t __store_uint_attr(const char *buff, size_t count,
|
static inline ssize_t
|
||||||
int min, int max,
|
__batadv_store_uint_attr(const char *buff, size_t count,
|
||||||
void (*post_func)(struct net_device *),
|
int min, int max,
|
||||||
const struct attribute *attr,
|
void (*post_func)(struct net_device *),
|
||||||
atomic_t *attr_store, struct net_device *net_dev)
|
const struct attribute *attr,
|
||||||
|
atomic_t *attr_store, struct net_device *net_dev)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = store_uint_attr(buff, count, net_dev, attr->name,
|
ret = batadv_store_uint_attr(buff, count, net_dev, attr->name, min, max,
|
||||||
min, max, attr_store);
|
attr_store);
|
||||||
if (post_func && ret)
|
if (post_func && ret)
|
||||||
post_func(net_dev);
|
post_func(net_dev);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t show_vis_mode(struct kobject *kobj, struct attribute *attr,
|
static ssize_t batadv_show_vis_mode(struct kobject *kobj,
|
||||||
char *buff)
|
struct attribute *attr, char *buff)
|
||||||
{
|
{
|
||||||
struct bat_priv *bat_priv = kobj_to_batpriv(kobj);
|
struct bat_priv *bat_priv = batadv_kobj_to_batpriv(kobj);
|
||||||
int vis_mode = atomic_read(&bat_priv->vis_mode);
|
int vis_mode = atomic_read(&bat_priv->vis_mode);
|
||||||
|
|
||||||
return sprintf(buff, "%s\n",
|
return sprintf(buff, "%s\n",
|
||||||
@@ -278,10 +291,11 @@ static ssize_t show_vis_mode(struct kobject *kobj, struct attribute *attr,
|
|||||||
"client" : "server");
|
"client" : "server");
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t store_vis_mode(struct kobject *kobj, struct attribute *attr,
|
static ssize_t batadv_store_vis_mode(struct kobject *kobj,
|
||||||
char *buff, size_t count)
|
struct attribute *attr, char *buff,
|
||||||
|
size_t count)
|
||||||
{
|
{
|
||||||
struct net_device *net_dev = kobj_to_netdev(kobj);
|
struct net_device *net_dev = batadv_kobj_to_netdev(kobj);
|
||||||
struct bat_priv *bat_priv = netdev_priv(net_dev);
|
struct bat_priv *bat_priv = netdev_priv(net_dev);
|
||||||
unsigned long val;
|
unsigned long val;
|
||||||
int ret, vis_mode_tmp = -1;
|
int ret, vis_mode_tmp = -1;
|
||||||
@@ -319,23 +333,23 @@ static ssize_t store_vis_mode(struct kobject *kobj, struct attribute *attr,
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t show_bat_algo(struct kobject *kobj, struct attribute *attr,
|
static ssize_t batadv_show_bat_algo(struct kobject *kobj,
|
||||||
char *buff)
|
struct attribute *attr, char *buff)
|
||||||
{
|
{
|
||||||
struct bat_priv *bat_priv = kobj_to_batpriv(kobj);
|
struct bat_priv *bat_priv = batadv_kobj_to_batpriv(kobj);
|
||||||
return sprintf(buff, "%s\n", bat_priv->bat_algo_ops->name);
|
return sprintf(buff, "%s\n", bat_priv->bat_algo_ops->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void post_gw_deselect(struct net_device *net_dev)
|
static void batadv_post_gw_deselect(struct net_device *net_dev)
|
||||||
{
|
{
|
||||||
struct bat_priv *bat_priv = netdev_priv(net_dev);
|
struct bat_priv *bat_priv = netdev_priv(net_dev);
|
||||||
batadv_gw_deselect(bat_priv);
|
batadv_gw_deselect(bat_priv);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t show_gw_mode(struct kobject *kobj, struct attribute *attr,
|
static ssize_t batadv_show_gw_mode(struct kobject *kobj, struct attribute *attr,
|
||||||
char *buff)
|
char *buff)
|
||||||
{
|
{
|
||||||
struct bat_priv *bat_priv = kobj_to_batpriv(kobj);
|
struct bat_priv *bat_priv = batadv_kobj_to_batpriv(kobj);
|
||||||
int bytes_written;
|
int bytes_written;
|
||||||
|
|
||||||
switch (atomic_read(&bat_priv->gw_mode)) {
|
switch (atomic_read(&bat_priv->gw_mode)) {
|
||||||
@@ -353,10 +367,11 @@ static ssize_t show_gw_mode(struct kobject *kobj, struct attribute *attr,
|
|||||||
return bytes_written;
|
return bytes_written;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t store_gw_mode(struct kobject *kobj, struct attribute *attr,
|
static ssize_t batadv_store_gw_mode(struct kobject *kobj,
|
||||||
char *buff, size_t count)
|
struct attribute *attr, char *buff,
|
||||||
|
size_t count)
|
||||||
{
|
{
|
||||||
struct net_device *net_dev = kobj_to_netdev(kobj);
|
struct net_device *net_dev = batadv_kobj_to_netdev(kobj);
|
||||||
struct bat_priv *bat_priv = netdev_priv(net_dev);
|
struct bat_priv *bat_priv = netdev_priv(net_dev);
|
||||||
char *curr_gw_mode_str;
|
char *curr_gw_mode_str;
|
||||||
int gw_mode_tmp = -1;
|
int gw_mode_tmp = -1;
|
||||||
@@ -405,10 +420,10 @@ static ssize_t store_gw_mode(struct kobject *kobj, struct attribute *attr,
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t show_gw_bwidth(struct kobject *kobj, struct attribute *attr,
|
static ssize_t batadv_show_gw_bwidth(struct kobject *kobj,
|
||||||
char *buff)
|
struct attribute *attr, char *buff)
|
||||||
{
|
{
|
||||||
struct bat_priv *bat_priv = kobj_to_batpriv(kobj);
|
struct bat_priv *bat_priv = batadv_kobj_to_batpriv(kobj);
|
||||||
int down, up;
|
int down, up;
|
||||||
int gw_bandwidth = atomic_read(&bat_priv->gw_bandwidth);
|
int gw_bandwidth = atomic_read(&bat_priv->gw_bandwidth);
|
||||||
|
|
||||||
@@ -420,10 +435,11 @@ static ssize_t show_gw_bwidth(struct kobject *kobj, struct attribute *attr,
|
|||||||
(up > 2048 ? "MBit" : "KBit"));
|
(up > 2048 ? "MBit" : "KBit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t store_gw_bwidth(struct kobject *kobj, struct attribute *attr,
|
static ssize_t batadv_store_gw_bwidth(struct kobject *kobj,
|
||||||
char *buff, size_t count)
|
struct attribute *attr, char *buff,
|
||||||
|
size_t count)
|
||||||
{
|
{
|
||||||
struct net_device *net_dev = kobj_to_netdev(kobj);
|
struct net_device *net_dev = batadv_kobj_to_netdev(kobj);
|
||||||
|
|
||||||
if (buff[count - 1] == '\n')
|
if (buff[count - 1] == '\n')
|
||||||
buff[count - 1] = '\0';
|
buff[count - 1] = '\0';
|
||||||
@@ -438,36 +454,38 @@ BAT_ATTR_SIF_BOOL(bridge_loop_avoidance, S_IRUGO | S_IWUSR, NULL);
|
|||||||
#endif
|
#endif
|
||||||
BAT_ATTR_SIF_BOOL(fragmentation, S_IRUGO | S_IWUSR, batadv_update_min_mtu);
|
BAT_ATTR_SIF_BOOL(fragmentation, S_IRUGO | S_IWUSR, batadv_update_min_mtu);
|
||||||
BAT_ATTR_SIF_BOOL(ap_isolation, S_IRUGO | S_IWUSR, NULL);
|
BAT_ATTR_SIF_BOOL(ap_isolation, S_IRUGO | S_IWUSR, NULL);
|
||||||
static BAT_ATTR(vis_mode, S_IRUGO | S_IWUSR, show_vis_mode, store_vis_mode);
|
static BAT_ATTR(vis_mode, S_IRUGO | S_IWUSR, batadv_show_vis_mode,
|
||||||
static BAT_ATTR(routing_algo, S_IRUGO, show_bat_algo, NULL);
|
batadv_store_vis_mode);
|
||||||
static BAT_ATTR(gw_mode, S_IRUGO | S_IWUSR, show_gw_mode, store_gw_mode);
|
static BAT_ATTR(routing_algo, S_IRUGO, batadv_show_bat_algo, NULL);
|
||||||
|
static BAT_ATTR(gw_mode, S_IRUGO | S_IWUSR, batadv_show_gw_mode,
|
||||||
|
batadv_store_gw_mode);
|
||||||
BAT_ATTR_SIF_UINT(orig_interval, S_IRUGO | S_IWUSR, 2 * JITTER, INT_MAX, NULL);
|
BAT_ATTR_SIF_UINT(orig_interval, S_IRUGO | S_IWUSR, 2 * JITTER, INT_MAX, NULL);
|
||||||
BAT_ATTR_SIF_UINT(hop_penalty, S_IRUGO | S_IWUSR, 0, TQ_MAX_VALUE, NULL);
|
BAT_ATTR_SIF_UINT(hop_penalty, S_IRUGO | S_IWUSR, 0, TQ_MAX_VALUE, NULL);
|
||||||
BAT_ATTR_SIF_UINT(gw_sel_class, S_IRUGO | S_IWUSR, 1, TQ_MAX_VALUE,
|
BAT_ATTR_SIF_UINT(gw_sel_class, S_IRUGO | S_IWUSR, 1, TQ_MAX_VALUE,
|
||||||
post_gw_deselect);
|
batadv_post_gw_deselect);
|
||||||
static BAT_ATTR(gw_bandwidth, S_IRUGO | S_IWUSR, show_gw_bwidth,
|
static BAT_ATTR(gw_bandwidth, S_IRUGO | S_IWUSR, batadv_show_gw_bwidth,
|
||||||
store_gw_bwidth);
|
batadv_store_gw_bwidth);
|
||||||
#ifdef CONFIG_BATMAN_ADV_DEBUG
|
#ifdef CONFIG_BATMAN_ADV_DEBUG
|
||||||
BAT_ATTR_SIF_UINT(log_level, S_IRUGO | S_IWUSR, 0, DBG_ALL, NULL);
|
BAT_ATTR_SIF_UINT(log_level, S_IRUGO | S_IWUSR, 0, DBG_ALL, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static struct bat_attribute *mesh_attrs[] = {
|
static struct bat_attribute *batadv_mesh_attrs[] = {
|
||||||
&bat_attr_aggregated_ogms,
|
&batadv_attr_aggregated_ogms,
|
||||||
&bat_attr_bonding,
|
&batadv_attr_bonding,
|
||||||
#ifdef CONFIG_BATMAN_ADV_BLA
|
#ifdef CONFIG_BATMAN_ADV_BLA
|
||||||
&bat_attr_bridge_loop_avoidance,
|
&batadv_attr_bridge_loop_avoidance,
|
||||||
#endif
|
#endif
|
||||||
&bat_attr_fragmentation,
|
&batadv_attr_fragmentation,
|
||||||
&bat_attr_ap_isolation,
|
&batadv_attr_ap_isolation,
|
||||||
&bat_attr_vis_mode,
|
&batadv_attr_vis_mode,
|
||||||
&bat_attr_routing_algo,
|
&batadv_attr_routing_algo,
|
||||||
&bat_attr_gw_mode,
|
&batadv_attr_gw_mode,
|
||||||
&bat_attr_orig_interval,
|
&batadv_attr_orig_interval,
|
||||||
&bat_attr_hop_penalty,
|
&batadv_attr_hop_penalty,
|
||||||
&bat_attr_gw_sel_class,
|
&batadv_attr_gw_sel_class,
|
||||||
&bat_attr_gw_bandwidth,
|
&batadv_attr_gw_bandwidth,
|
||||||
#ifdef CONFIG_BATMAN_ADV_DEBUG
|
#ifdef CONFIG_BATMAN_ADV_DEBUG
|
||||||
&bat_attr_log_level,
|
&batadv_attr_log_level,
|
||||||
#endif
|
#endif
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
@@ -487,7 +505,7 @@ int batadv_sysfs_add_meshif(struct net_device *dev)
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (bat_attr = mesh_attrs; *bat_attr; ++bat_attr) {
|
for (bat_attr = batadv_mesh_attrs; *bat_attr; ++bat_attr) {
|
||||||
err = sysfs_create_file(bat_priv->mesh_obj,
|
err = sysfs_create_file(bat_priv->mesh_obj,
|
||||||
&((*bat_attr)->attr));
|
&((*bat_attr)->attr));
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -501,7 +519,7 @@ int batadv_sysfs_add_meshif(struct net_device *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
rem_attr:
|
rem_attr:
|
||||||
for (bat_attr = mesh_attrs; *bat_attr; ++bat_attr)
|
for (bat_attr = batadv_mesh_attrs; *bat_attr; ++bat_attr)
|
||||||
sysfs_remove_file(bat_priv->mesh_obj, &((*bat_attr)->attr));
|
sysfs_remove_file(bat_priv->mesh_obj, &((*bat_attr)->attr));
|
||||||
|
|
||||||
kobject_put(bat_priv->mesh_obj);
|
kobject_put(bat_priv->mesh_obj);
|
||||||
@@ -515,17 +533,17 @@ void batadv_sysfs_del_meshif(struct net_device *dev)
|
|||||||
struct bat_priv *bat_priv = netdev_priv(dev);
|
struct bat_priv *bat_priv = netdev_priv(dev);
|
||||||
struct bat_attribute **bat_attr;
|
struct bat_attribute **bat_attr;
|
||||||
|
|
||||||
for (bat_attr = mesh_attrs; *bat_attr; ++bat_attr)
|
for (bat_attr = batadv_mesh_attrs; *bat_attr; ++bat_attr)
|
||||||
sysfs_remove_file(bat_priv->mesh_obj, &((*bat_attr)->attr));
|
sysfs_remove_file(bat_priv->mesh_obj, &((*bat_attr)->attr));
|
||||||
|
|
||||||
kobject_put(bat_priv->mesh_obj);
|
kobject_put(bat_priv->mesh_obj);
|
||||||
bat_priv->mesh_obj = NULL;
|
bat_priv->mesh_obj = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t show_mesh_iface(struct kobject *kobj, struct attribute *attr,
|
static ssize_t batadv_show_mesh_iface(struct kobject *kobj,
|
||||||
char *buff)
|
struct attribute *attr, char *buff)
|
||||||
{
|
{
|
||||||
struct net_device *net_dev = kobj_to_netdev(kobj);
|
struct net_device *net_dev = batadv_kobj_to_netdev(kobj);
|
||||||
struct hard_iface *hard_iface = batadv_hardif_get_by_netdev(net_dev);
|
struct hard_iface *hard_iface = batadv_hardif_get_by_netdev(net_dev);
|
||||||
ssize_t length;
|
ssize_t length;
|
||||||
|
|
||||||
@@ -540,10 +558,11 @@ static ssize_t show_mesh_iface(struct kobject *kobj, struct attribute *attr,
|
|||||||
return length;
|
return length;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t store_mesh_iface(struct kobject *kobj, struct attribute *attr,
|
static ssize_t batadv_store_mesh_iface(struct kobject *kobj,
|
||||||
char *buff, size_t count)
|
struct attribute *attr, char *buff,
|
||||||
|
size_t count)
|
||||||
{
|
{
|
||||||
struct net_device *net_dev = kobj_to_netdev(kobj);
|
struct net_device *net_dev = batadv_kobj_to_netdev(kobj);
|
||||||
struct hard_iface *hard_iface = batadv_hardif_get_by_netdev(net_dev);
|
struct hard_iface *hard_iface = batadv_hardif_get_by_netdev(net_dev);
|
||||||
int status_tmp = -1;
|
int status_tmp = -1;
|
||||||
int ret = count;
|
int ret = count;
|
||||||
@@ -596,10 +615,10 @@ out:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t show_iface_status(struct kobject *kobj, struct attribute *attr,
|
static ssize_t batadv_show_iface_status(struct kobject *kobj,
|
||||||
char *buff)
|
struct attribute *attr, char *buff)
|
||||||
{
|
{
|
||||||
struct net_device *net_dev = kobj_to_netdev(kobj);
|
struct net_device *net_dev = batadv_kobj_to_netdev(kobj);
|
||||||
struct hard_iface *hard_iface = batadv_hardif_get_by_netdev(net_dev);
|
struct hard_iface *hard_iface = batadv_hardif_get_by_netdev(net_dev);
|
||||||
ssize_t length;
|
ssize_t length;
|
||||||
|
|
||||||
@@ -631,12 +650,12 @@ static ssize_t show_iface_status(struct kobject *kobj, struct attribute *attr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static BAT_ATTR(mesh_iface, S_IRUGO | S_IWUSR,
|
static BAT_ATTR(mesh_iface, S_IRUGO | S_IWUSR,
|
||||||
show_mesh_iface, store_mesh_iface);
|
batadv_show_mesh_iface, batadv_store_mesh_iface);
|
||||||
static BAT_ATTR(iface_status, S_IRUGO, show_iface_status, NULL);
|
static BAT_ATTR(iface_status, S_IRUGO, batadv_show_iface_status, NULL);
|
||||||
|
|
||||||
static struct bat_attribute *batman_attrs[] = {
|
static struct bat_attribute *batadv_batman_attrs[] = {
|
||||||
&bat_attr_mesh_iface,
|
&batadv_attr_mesh_iface,
|
||||||
&bat_attr_iface_status,
|
&batadv_attr_iface_status,
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -655,7 +674,7 @@ int batadv_sysfs_add_hardif(struct kobject **hardif_obj, struct net_device *dev)
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (bat_attr = batman_attrs; *bat_attr; ++bat_attr) {
|
for (bat_attr = batadv_batman_attrs; *bat_attr; ++bat_attr) {
|
||||||
err = sysfs_create_file(*hardif_obj, &((*bat_attr)->attr));
|
err = sysfs_create_file(*hardif_obj, &((*bat_attr)->attr));
|
||||||
if (err) {
|
if (err) {
|
||||||
bat_err(dev, "Can't add sysfs file: %s/%s/%s\n",
|
bat_err(dev, "Can't add sysfs file: %s/%s/%s\n",
|
||||||
@@ -668,7 +687,7 @@ int batadv_sysfs_add_hardif(struct kobject **hardif_obj, struct net_device *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
rem_attr:
|
rem_attr:
|
||||||
for (bat_attr = batman_attrs; *bat_attr; ++bat_attr)
|
for (bat_attr = batadv_batman_attrs; *bat_attr; ++bat_attr)
|
||||||
sysfs_remove_file(*hardif_obj, &((*bat_attr)->attr));
|
sysfs_remove_file(*hardif_obj, &((*bat_attr)->attr));
|
||||||
out:
|
out:
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
@@ -695,20 +714,21 @@ int batadv_throw_uevent(struct bat_priv *bat_priv, enum uev_type type,
|
|||||||
bat_kobj = &primary_if->soft_iface->dev.kobj;
|
bat_kobj = &primary_if->soft_iface->dev.kobj;
|
||||||
|
|
||||||
uevent_env[0] = kmalloc(strlen(UEV_TYPE_VAR) +
|
uevent_env[0] = kmalloc(strlen(UEV_TYPE_VAR) +
|
||||||
strlen(uev_type_str[type]) + 1,
|
strlen(batadv_uev_type_str[type]) + 1,
|
||||||
GFP_ATOMIC);
|
GFP_ATOMIC);
|
||||||
if (!uevent_env[0])
|
if (!uevent_env[0])
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
sprintf(uevent_env[0], "%s%s", UEV_TYPE_VAR, uev_type_str[type]);
|
sprintf(uevent_env[0], "%s%s", UEV_TYPE_VAR, batadv_uev_type_str[type]);
|
||||||
|
|
||||||
uevent_env[1] = kmalloc(strlen(UEV_ACTION_VAR) +
|
uevent_env[1] = kmalloc(strlen(UEV_ACTION_VAR) +
|
||||||
strlen(uev_action_str[action]) + 1,
|
strlen(batadv_uev_action_str[action]) + 1,
|
||||||
GFP_ATOMIC);
|
GFP_ATOMIC);
|
||||||
if (!uevent_env[1])
|
if (!uevent_env[1])
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
sprintf(uevent_env[1], "%s%s", UEV_ACTION_VAR, uev_action_str[action]);
|
sprintf(uevent_env[1], "%s%s", UEV_ACTION_VAR,
|
||||||
|
batadv_uev_action_str[action]);
|
||||||
|
|
||||||
/* If the event is DEL, ignore the data field */
|
/* If the event is DEL, ignore the data field */
|
||||||
if (action != UEV_DEL) {
|
if (action != UEV_DEL) {
|
||||||
@@ -732,7 +752,8 @@ out:
|
|||||||
if (ret)
|
if (ret)
|
||||||
batadv_dbg(DBG_BATMAN, bat_priv,
|
batadv_dbg(DBG_BATMAN, bat_priv,
|
||||||
"Impossible to send uevent for (%s,%s,%s) event (err: %d)\n",
|
"Impossible to send uevent for (%s,%s,%s) event (err: %d)\n",
|
||||||
uev_type_str[type], uev_action_str[action],
|
batadv_uev_type_str[type],
|
||||||
|
batadv_uev_action_str[action],
|
||||||
(action == UEV_DEL ? "NULL" : data), ret);
|
(action == UEV_DEL ? "NULL" : data), ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user