]> Pileus Git - ~andy/linux/blobdiff - net/batman-adv/sysfs.c
Merge tag 'batman-adv-for-davem' of git://git.open-mesh.org/linux-merge
[~andy/linux] / net / batman-adv / sysfs.c
index 66518c75c217459d39f7bc8e79aed34b25b20e22..84a55cb19b0b9b2d4e5c9f2d787bf916059556db 100644 (file)
@@ -20,6 +20,7 @@
 #include "main.h"
 #include "sysfs.h"
 #include "translation-table.h"
+#include "distributed-arp-table.h"
 #include "originator.h"
 #include "hard-interface.h"
 #include "gateway_common.h"
@@ -122,55 +123,6 @@ ssize_t batadv_show_##_name(struct kobject *kobj,                  \
                           batadv_store_##_name)
 
 
-#define BATADV_ATTR_HIF_STORE_UINT(_name, _min, _max, _post_func)      \
-ssize_t batadv_store_##_name(struct kobject *kobj,                     \
-                            struct attribute *attr, char *buff,        \
-                            size_t count)                              \
-{                                                                      \
-       struct net_device *net_dev = batadv_kobj_to_netdev(kobj);       \
-       struct batadv_hard_iface *hard_iface;                           \
-       ssize_t length;                                                 \
-                                                                       \
-       hard_iface = batadv_hardif_get_by_netdev(net_dev);              \
-       if (!hard_iface)                                                \
-               return 0;                                               \
-                                                                       \
-       length = __batadv_store_uint_attr(buff, count, _min, _max,      \
-                                         _post_func, attr,             \
-                                         &hard_iface->_name, net_dev); \
-                                                                       \
-       batadv_hardif_free_ref(hard_iface);                             \
-       return length;                                                  \
-}
-
-#define BATADV_ATTR_HIF_SHOW_UINT(_name)                               \
-ssize_t batadv_show_##_name(struct kobject *kobj,                      \
-                           struct attribute *attr, char *buff)         \
-{                                                                      \
-       struct net_device *net_dev = batadv_kobj_to_netdev(kobj);       \
-       struct batadv_hard_iface *hard_iface;                           \
-       ssize_t length;                                                 \
-                                                                       \
-       hard_iface = batadv_hardif_get_by_netdev(net_dev);              \
-       if (!hard_iface)                                                \
-               return 0;                                               \
-                                                                       \
-       length = sprintf(buff, "%i\n", atomic_read(&hard_iface->_name));\
-                                                                       \
-       batadv_hardif_free_ref(hard_iface);                             \
-       return length;                                                  \
-}
-
-/* Use this, if you are going to set [name] in hard_iface to an
- * unsigned integer value
- */
-#define BATADV_ATTR_HIF_UINT(_name, _mode, _min, _max, _post_func)     \
-       static BATADV_ATTR_HIF_STORE_UINT(_name, _min, _max, _post_func)\
-       static BATADV_ATTR_HIF_SHOW_UINT(_name)                         \
-       static BATADV_ATTR(_name, _mode, batadv_show_##_name,           \
-                          batadv_store_##_name)
-
-
 static int batadv_store_bool_attr(char *buff, size_t count,
                                  struct net_device *net_dev,
                                  const char *attr_name, atomic_t *attr)
@@ -469,6 +421,9 @@ BATADV_ATTR_SIF_BOOL(bonding, S_IRUGO | S_IWUSR, NULL);
 #ifdef CONFIG_BATMAN_ADV_BLA
 BATADV_ATTR_SIF_BOOL(bridge_loop_avoidance, S_IRUGO | S_IWUSR, NULL);
 #endif
+#ifdef CONFIG_BATMAN_ADV_DAT
+BATADV_ATTR_SIF_BOOL(distributed_arp_table, S_IRUGO | S_IWUSR, NULL);
+#endif
 BATADV_ATTR_SIF_BOOL(fragmentation, S_IRUGO | S_IWUSR, batadv_update_min_mtu);
 BATADV_ATTR_SIF_BOOL(ap_isolation, S_IRUGO | S_IWUSR, NULL);
 static BATADV_ATTR(vis_mode, S_IRUGO | S_IWUSR, batadv_show_vis_mode,
@@ -493,6 +448,9 @@ static struct batadv_attribute *batadv_mesh_attrs[] = {
        &batadv_attr_bonding,
 #ifdef CONFIG_BATMAN_ADV_BLA
        &batadv_attr_bridge_loop_avoidance,
+#endif
+#ifdef CONFIG_BATMAN_ADV_DAT
+       &batadv_attr_distributed_arp_table,
 #endif
        &batadv_attr_fragmentation,
        &batadv_attr_ap_isolation,
@@ -730,7 +688,7 @@ int batadv_throw_uevent(struct batadv_priv *bat_priv, enum batadv_uev_type type,
                        enum batadv_uev_action action, const char *data)
 {
        int ret = -ENOMEM;
-       struct batadv_hard_iface *primary_if = NULL;
+       struct batadv_hard_iface *primary_if;
        struct kobject *bat_kobj;
        char *uevent_env[4] = { NULL, NULL, NULL, NULL };