Commit 56303d34 authored by Sven Eckelmann's avatar Sven Eckelmann Committed by Antonio Quartulli

batman-adv: Prefix types structs with batadv_

Reported-by: default avatarMartin Hundebøll <martin@hundeboll.net>
Signed-off-by: default avatarSven Eckelmann <sven@narfation.org>
parent 96412690
...@@ -40,7 +40,7 @@ static struct dentry *batadv_debugfs; ...@@ -40,7 +40,7 @@ static struct dentry *batadv_debugfs;
static int batadv_log_buff_len = BATADV_LOG_BUF_LEN; static int batadv_log_buff_len = BATADV_LOG_BUF_LEN;
static void batadv_emit_log_char(struct debug_log *debug_log, char c) static void batadv_emit_log_char(struct batadv_debug_log *debug_log, char c)
{ {
BATADV_LOG_BUFF(debug_log->log_end) = c; BATADV_LOG_BUFF(debug_log->log_end) = c;
debug_log->log_end++; debug_log->log_end++;
...@@ -50,7 +50,8 @@ static void batadv_emit_log_char(struct debug_log *debug_log, char c) ...@@ -50,7 +50,8 @@ static void batadv_emit_log_char(struct debug_log *debug_log, char c)
} }
__printf(2, 3) __printf(2, 3)
static int batadv_fdebug_log(struct debug_log *debug_log, const char *fmt, ...) static int batadv_fdebug_log(struct batadv_debug_log *debug_log,
const char *fmt, ...)
{ {
va_list args; va_list args;
static char debug_log_buf[256]; static char debug_log_buf[256];
...@@ -74,7 +75,7 @@ static int batadv_fdebug_log(struct debug_log *debug_log, const char *fmt, ...) ...@@ -74,7 +75,7 @@ static int batadv_fdebug_log(struct debug_log *debug_log, const char *fmt, ...)
return 0; return 0;
} }
int batadv_debug_log(struct bat_priv *bat_priv, const char *fmt, ...) int batadv_debug_log(struct batadv_priv *bat_priv, const char *fmt, ...)
{ {
va_list args; va_list args;
char tmp_log_buf[256]; char tmp_log_buf[256];
...@@ -105,8 +106,8 @@ static int batadv_log_release(struct inode *inode, struct file *file) ...@@ -105,8 +106,8 @@ static int batadv_log_release(struct inode *inode, struct file *file)
static ssize_t batadv_log_read(struct file *file, char __user *buf, static ssize_t batadv_log_read(struct file *file, char __user *buf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
struct bat_priv *bat_priv = file->private_data; struct batadv_priv *bat_priv = file->private_data;
struct debug_log *debug_log = bat_priv->debug_log; struct batadv_debug_log *debug_log = bat_priv->debug_log;
int error, i = 0; int error, i = 0;
char c; char c;
...@@ -158,8 +159,8 @@ static ssize_t batadv_log_read(struct file *file, char __user *buf, ...@@ -158,8 +159,8 @@ static ssize_t batadv_log_read(struct file *file, char __user *buf,
static unsigned int batadv_log_poll(struct file *file, poll_table *wait) static unsigned int batadv_log_poll(struct file *file, poll_table *wait)
{ {
struct bat_priv *bat_priv = file->private_data; struct batadv_priv *bat_priv = file->private_data;
struct debug_log *debug_log = bat_priv->debug_log; struct batadv_debug_log *debug_log = bat_priv->debug_log;
poll_wait(file, &debug_log->queue_wait, wait); poll_wait(file, &debug_log->queue_wait, wait);
...@@ -177,7 +178,7 @@ static const struct file_operations batadv_log_fops = { ...@@ -177,7 +178,7 @@ static const struct file_operations batadv_log_fops = {
.llseek = no_llseek, .llseek = no_llseek,
}; };
static int batadv_debug_log_setup(struct bat_priv *bat_priv) static int batadv_debug_log_setup(struct batadv_priv *bat_priv)
{ {
struct dentry *d; struct dentry *d;
...@@ -203,19 +204,19 @@ static int batadv_debug_log_setup(struct bat_priv *bat_priv) ...@@ -203,19 +204,19 @@ static int batadv_debug_log_setup(struct bat_priv *bat_priv)
return -ENOMEM; return -ENOMEM;
} }
static void batadv_debug_log_cleanup(struct bat_priv *bat_priv) static void batadv_debug_log_cleanup(struct batadv_priv *bat_priv)
{ {
kfree(bat_priv->debug_log); kfree(bat_priv->debug_log);
bat_priv->debug_log = NULL; bat_priv->debug_log = NULL;
} }
#else /* CONFIG_BATMAN_ADV_DEBUG */ #else /* CONFIG_BATMAN_ADV_DEBUG */
static int batadv_debug_log_setup(struct bat_priv *bat_priv) static int batadv_debug_log_setup(struct batadv_priv *bat_priv)
{ {
bat_priv->debug_log = NULL; bat_priv->debug_log = NULL;
return 0; return 0;
} }
static void batadv_debug_log_cleanup(struct bat_priv *bat_priv) static void batadv_debug_log_cleanup(struct batadv_priv *bat_priv)
{ {
return; return;
} }
...@@ -339,7 +340,7 @@ void batadv_debugfs_destroy(void) ...@@ -339,7 +340,7 @@ void batadv_debugfs_destroy(void)
int batadv_debugfs_add_meshif(struct net_device *dev) int batadv_debugfs_add_meshif(struct net_device *dev)
{ {
struct bat_priv *bat_priv = netdev_priv(dev); struct batadv_priv *bat_priv = netdev_priv(dev);
struct batadv_debuginfo **bat_debug; struct batadv_debuginfo **bat_debug;
struct dentry *file; struct dentry *file;
...@@ -382,7 +383,7 @@ int batadv_debugfs_add_meshif(struct net_device *dev) ...@@ -382,7 +383,7 @@ int batadv_debugfs_add_meshif(struct net_device *dev)
void batadv_debugfs_del_meshif(struct net_device *dev) void batadv_debugfs_del_meshif(struct net_device *dev)
{ {
struct bat_priv *bat_priv = netdev_priv(dev); struct batadv_priv *bat_priv = netdev_priv(dev);
batadv_debug_log_cleanup(bat_priv); batadv_debug_log_cleanup(bat_priv);
......
This diff is collapsed.
...@@ -32,7 +32,7 @@ static struct net_device *batadv_kobj_to_netdev(struct kobject *obj) ...@@ -32,7 +32,7 @@ static struct net_device *batadv_kobj_to_netdev(struct kobject *obj)
return to_net_dev(dev); return to_net_dev(dev);
} }
static struct bat_priv *batadv_kobj_to_batpriv(struct kobject *obj) static struct batadv_priv *batadv_kobj_to_batpriv(struct kobject *obj)
{ {
struct net_device *net_dev = batadv_kobj_to_netdev(obj); struct net_device *net_dev = batadv_kobj_to_netdev(obj);
return netdev_priv(net_dev); return netdev_priv(net_dev);
...@@ -67,7 +67,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \ ...@@ -67,7 +67,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \
size_t count) \ size_t count) \
{ \ { \
struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \ struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \
struct bat_priv *bat_priv = netdev_priv(net_dev); \ struct batadv_priv *bat_priv = netdev_priv(net_dev); \
return __batadv_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); \
} }
...@@ -76,7 +76,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \ ...@@ -76,7 +76,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \
ssize_t batadv_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 = batadv_kobj_to_batpriv(kobj); \ struct batadv_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"); \
...@@ -98,7 +98,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \ ...@@ -98,7 +98,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \
size_t count) \ size_t count) \
{ \ { \
struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \ struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \
struct bat_priv *bat_priv = netdev_priv(net_dev); \ struct batadv_priv *bat_priv = netdev_priv(net_dev); \
return __batadv_store_uint_attr(buff, count, _min, _max, \ return __batadv_store_uint_attr(buff, count, _min, _max, \
_post_func, attr, \ _post_func, attr, \
&bat_priv->_name, net_dev); \ &bat_priv->_name, net_dev); \
...@@ -108,7 +108,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \ ...@@ -108,7 +108,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \
ssize_t batadv_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 = batadv_kobj_to_batpriv(kobj); \ struct batadv_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)); \
} \ } \
...@@ -128,7 +128,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \ ...@@ -128,7 +128,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \
size_t count) \ size_t count) \
{ \ { \
struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \ struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \
struct hard_iface *hard_iface; \ struct batadv_hard_iface *hard_iface; \
ssize_t length; \ ssize_t length; \
\ \
hard_iface = batadv_hardif_get_by_netdev(net_dev); \ hard_iface = batadv_hardif_get_by_netdev(net_dev); \
...@@ -148,7 +148,7 @@ ssize_t batadv_show_##_name(struct kobject *kobj, \ ...@@ -148,7 +148,7 @@ ssize_t batadv_show_##_name(struct kobject *kobj, \
struct attribute *attr, char *buff) \ struct attribute *attr, char *buff) \
{ \ { \
struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \ struct net_device *net_dev = batadv_kobj_to_netdev(kobj); \
struct hard_iface *hard_iface; \ struct batadv_hard_iface *hard_iface; \
ssize_t length; \ ssize_t length; \
\ \
hard_iface = batadv_hardif_get_by_netdev(net_dev); \ hard_iface = batadv_hardif_get_by_netdev(net_dev); \
...@@ -281,7 +281,7 @@ __batadv_store_uint_attr(const char *buff, size_t count, ...@@ -281,7 +281,7 @@ __batadv_store_uint_attr(const char *buff, size_t count,
static ssize_t batadv_show_vis_mode(struct kobject *kobj, static ssize_t batadv_show_vis_mode(struct kobject *kobj,
struct attribute *attr, char *buff) struct attribute *attr, char *buff)
{ {
struct bat_priv *bat_priv = batadv_kobj_to_batpriv(kobj); struct batadv_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);
const char *mode; const char *mode;
...@@ -298,7 +298,7 @@ static ssize_t batadv_store_vis_mode(struct kobject *kobj, ...@@ -298,7 +298,7 @@ static ssize_t batadv_store_vis_mode(struct kobject *kobj,
size_t count) size_t count)
{ {
struct net_device *net_dev = batadv_kobj_to_netdev(kobj); struct net_device *net_dev = batadv_kobj_to_netdev(kobj);
struct bat_priv *bat_priv = netdev_priv(net_dev); struct batadv_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;
const char *old_mode, *new_mode; const char *old_mode, *new_mode;
...@@ -349,20 +349,20 @@ static ssize_t batadv_store_vis_mode(struct kobject *kobj, ...@@ -349,20 +349,20 @@ static ssize_t batadv_store_vis_mode(struct kobject *kobj,
static ssize_t batadv_show_bat_algo(struct kobject *kobj, static ssize_t batadv_show_bat_algo(struct kobject *kobj,
struct attribute *attr, char *buff) struct attribute *attr, char *buff)
{ {
struct bat_priv *bat_priv = batadv_kobj_to_batpriv(kobj); struct batadv_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 batadv_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 batadv_priv *bat_priv = netdev_priv(net_dev);
batadv_gw_deselect(bat_priv); batadv_gw_deselect(bat_priv);
} }
static ssize_t batadv_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 = batadv_kobj_to_batpriv(kobj); struct batadv_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)) {
...@@ -388,7 +388,7 @@ static ssize_t batadv_store_gw_mode(struct kobject *kobj, ...@@ -388,7 +388,7 @@ static ssize_t batadv_store_gw_mode(struct kobject *kobj,
size_t count) size_t count)
{ {
struct net_device *net_dev = batadv_kobj_to_netdev(kobj); struct net_device *net_dev = batadv_kobj_to_netdev(kobj);
struct bat_priv *bat_priv = netdev_priv(net_dev); struct batadv_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;
...@@ -440,7 +440,7 @@ static ssize_t batadv_store_gw_mode(struct kobject *kobj, ...@@ -440,7 +440,7 @@ static ssize_t batadv_store_gw_mode(struct kobject *kobj,
static ssize_t batadv_show_gw_bwidth(struct kobject *kobj, static ssize_t batadv_show_gw_bwidth(struct kobject *kobj,
struct attribute *attr, char *buff) struct attribute *attr, char *buff)
{ {
struct bat_priv *bat_priv = batadv_kobj_to_batpriv(kobj); struct batadv_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);
...@@ -512,7 +512,7 @@ static struct batadv_attribute *batadv_mesh_attrs[] = { ...@@ -512,7 +512,7 @@ static struct batadv_attribute *batadv_mesh_attrs[] = {
int batadv_sysfs_add_meshif(struct net_device *dev) int batadv_sysfs_add_meshif(struct net_device *dev)
{ {
struct kobject *batif_kobject = &dev->dev.kobj; struct kobject *batif_kobject = &dev->dev.kobj;
struct bat_priv *bat_priv = netdev_priv(dev); struct batadv_priv *bat_priv = netdev_priv(dev);
struct batadv_attribute **bat_attr; struct batadv_attribute **bat_attr;
int err; int err;
...@@ -549,7 +549,7 @@ int batadv_sysfs_add_meshif(struct net_device *dev) ...@@ -549,7 +549,7 @@ int batadv_sysfs_add_meshif(struct net_device *dev)
void batadv_sysfs_del_meshif(struct net_device *dev) void batadv_sysfs_del_meshif(struct net_device *dev)
{ {
struct bat_priv *bat_priv = netdev_priv(dev); struct batadv_priv *bat_priv = netdev_priv(dev);
struct batadv_attribute **bat_attr; struct batadv_attribute **bat_attr;
for (bat_attr = batadv_mesh_attrs; *bat_attr; ++bat_attr) for (bat_attr = batadv_mesh_attrs; *bat_attr; ++bat_attr)
...@@ -563,10 +563,11 @@ static ssize_t batadv_show_mesh_iface(struct kobject *kobj, ...@@ -563,10 +563,11 @@ static ssize_t batadv_show_mesh_iface(struct kobject *kobj,
struct attribute *attr, char *buff) struct attribute *attr, char *buff)
{ {
struct net_device *net_dev = batadv_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 batadv_hard_iface *hard_iface;
ssize_t length; ssize_t length;
const char *ifname; const char *ifname;
hard_iface = batadv_hardif_get_by_netdev(net_dev);
if (!hard_iface) if (!hard_iface)
return 0; return 0;
...@@ -587,10 +588,11 @@ static ssize_t batadv_store_mesh_iface(struct kobject *kobj, ...@@ -587,10 +588,11 @@ static ssize_t batadv_store_mesh_iface(struct kobject *kobj,
size_t count) size_t count)
{ {
struct net_device *net_dev = batadv_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 batadv_hard_iface *hard_iface;
int status_tmp = -1; int status_tmp = -1;
int ret = count; int ret = count;
hard_iface = batadv_hardif_get_by_netdev(net_dev);
if (!hard_iface) if (!hard_iface)
return count; return count;
...@@ -643,9 +645,10 @@ static ssize_t batadv_show_iface_status(struct kobject *kobj, ...@@ -643,9 +645,10 @@ static ssize_t batadv_show_iface_status(struct kobject *kobj,
struct attribute *attr, char *buff) struct attribute *attr, char *buff)
{ {
struct net_device *net_dev = batadv_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 batadv_hard_iface *hard_iface;
ssize_t length; ssize_t length;
hard_iface = batadv_hardif_get_by_netdev(net_dev);
if (!hard_iface) if (!hard_iface)
return 0; return 0;
...@@ -723,11 +726,11 @@ void batadv_sysfs_del_hardif(struct kobject **hardif_obj) ...@@ -723,11 +726,11 @@ void batadv_sysfs_del_hardif(struct kobject **hardif_obj)
*hardif_obj = NULL; *hardif_obj = NULL;
} }
int batadv_throw_uevent(struct bat_priv *bat_priv, enum batadv_uev_type type, int batadv_throw_uevent(struct batadv_priv *bat_priv, enum batadv_uev_type type,
enum batadv_uev_action action, const char *data) enum batadv_uev_action action, const char *data)
{ {
int ret = -ENOMEM; int ret = -ENOMEM;
struct hard_iface *primary_if = NULL; struct batadv_hard_iface *primary_if = NULL;
struct kobject *bat_kobj; struct kobject *bat_kobj;
char *uevent_env[4] = { NULL, NULL, NULL, NULL }; char *uevent_env[4] = { NULL, NULL, NULL, NULL };
......
...@@ -36,7 +36,7 @@ void batadv_sysfs_del_meshif(struct net_device *dev); ...@@ -36,7 +36,7 @@ void batadv_sysfs_del_meshif(struct net_device *dev);
int batadv_sysfs_add_hardif(struct kobject **hardif_obj, int batadv_sysfs_add_hardif(struct kobject **hardif_obj,
struct net_device *dev); struct net_device *dev);
void batadv_sysfs_del_hardif(struct kobject **hardif_obj); void batadv_sysfs_del_hardif(struct kobject **hardif_obj);
int batadv_throw_uevent(struct bat_priv *bat_priv, enum batadv_uev_type type, int batadv_throw_uevent(struct batadv_priv *bat_priv, enum batadv_uev_type type,
enum batadv_uev_action action, const char *data); enum batadv_uev_action action, const char *data);
#endif /* _NET_BATMAN_ADV_SYSFS_H_ */ #endif /* _NET_BATMAN_ADV_SYSFS_H_ */
...@@ -41,7 +41,7 @@ static void batadv_bitmap_shift_left(unsigned long *seq_bits, int32_t n) ...@@ -41,7 +41,7 @@ static void batadv_bitmap_shift_left(unsigned long *seq_bits, int32_t n)
int batadv_bit_get_packet(void *priv, unsigned long *seq_bits, int batadv_bit_get_packet(void *priv, unsigned long *seq_bits,
int32_t seq_num_diff, int set_mark) int32_t seq_num_diff, int set_mark)
{ {
struct bat_priv *bat_priv = priv; struct batadv_priv *bat_priv = priv;
/* sequence number is slightly older. We already got a sequence number /* sequence number is slightly older. We already got a sequence number
* higher than this one, so we just mark it. * higher than this one, so we just mark it.
......
This diff is collapsed.
...@@ -21,38 +21,38 @@ ...@@ -21,38 +21,38 @@
#define _NET_BATMAN_ADV_BLA_H_ #define _NET_BATMAN_ADV_BLA_H_
#ifdef CONFIG_BATMAN_ADV_BLA #ifdef CONFIG_BATMAN_ADV_BLA
int batadv_bla_rx(struct bat_priv *bat_priv, struct sk_buff *skb, short vid); int batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb, short vid);
int batadv_bla_tx(struct bat_priv *bat_priv, struct sk_buff *skb, short vid); int batadv_bla_tx(struct batadv_priv *bat_priv, struct sk_buff *skb, short vid);
int batadv_bla_is_backbone_gw(struct sk_buff *skb, int batadv_bla_is_backbone_gw(struct sk_buff *skb,
struct orig_node *orig_node, int hdr_size); struct batadv_orig_node *orig_node, int hdr_size);
int batadv_bla_claim_table_seq_print_text(struct seq_file *seq, void *offset); int batadv_bla_claim_table_seq_print_text(struct seq_file *seq, void *offset);
int batadv_bla_is_backbone_gw_orig(struct bat_priv *bat_priv, uint8_t *orig); int batadv_bla_is_backbone_gw_orig(struct batadv_priv *bat_priv, uint8_t *orig);
int batadv_bla_check_bcast_duplist(struct bat_priv *bat_priv, int batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv,
struct batadv_bcast_packet *bcast_packet, struct batadv_bcast_packet *bcast_packet,
int hdr_size); int hdr_size);
void batadv_bla_update_orig_address(struct bat_priv *bat_priv, void batadv_bla_update_orig_address(struct batadv_priv *bat_priv,
struct hard_iface *primary_if, struct batadv_hard_iface *primary_if,
struct hard_iface *oldif); struct batadv_hard_iface *oldif);
int batadv_bla_init(struct bat_priv *bat_priv); int batadv_bla_init(struct batadv_priv *bat_priv);
void batadv_bla_free(struct bat_priv *bat_priv); void batadv_bla_free(struct batadv_priv *bat_priv);
#define BATADV_BLA_CRC_INIT 0 #define BATADV_BLA_CRC_INIT 0
#else /* ifdef CONFIG_BATMAN_ADV_BLA */ #else /* ifdef CONFIG_BATMAN_ADV_BLA */
static inline int batadv_bla_rx(struct bat_priv *bat_priv, struct sk_buff *skb, static inline int batadv_bla_rx(struct batadv_priv *bat_priv,
short vid) struct sk_buff *skb, short vid)
{ {
return 0; return 0;
} }
static inline int batadv_bla_tx(struct bat_priv *bat_priv, struct sk_buff *skb, static inline int batadv_bla_tx(struct batadv_priv *bat_priv,
short vid) struct sk_buff *skb, short vid)
{ {
return 0; return 0;
} }
static inline int batadv_bla_is_backbone_gw(struct sk_buff *skb, static inline int batadv_bla_is_backbone_gw(struct sk_buff *skb,
struct orig_node *orig_node, struct batadv_orig_node *orig_node,
int hdr_size) int hdr_size)
{ {
return 0; return 0;
...@@ -64,14 +64,14 @@ static inline int batadv_bla_claim_table_seq_print_text(struct seq_file *seq, ...@@ -64,14 +64,14 @@ static inline int batadv_bla_claim_table_seq_print_text(struct seq_file *seq,
return 0; return 0;
} }
static inline int batadv_bla_is_backbone_gw_orig(struct bat_priv *bat_priv, static inline int batadv_bla_is_backbone_gw_orig(struct batadv_priv *bat_priv,
uint8_t *orig) uint8_t *orig)
{ {
return 0; return 0;
} }
static inline int static inline int
batadv_bla_check_bcast_duplist(struct bat_priv *bat_priv, batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv,
struct batadv_bcast_packet *bcast_packet, struct batadv_bcast_packet *bcast_packet,
int hdr_size) int hdr_size)
{ {
...@@ -79,18 +79,18 @@ batadv_bla_check_bcast_duplist(struct bat_priv *bat_priv, ...@@ -79,18 +79,18 @@ batadv_bla_check_bcast_duplist(struct bat_priv *bat_priv,
} }
static inline void static inline void
batadv_bla_update_orig_address(struct bat_priv *bat_priv, batadv_bla_update_orig_address(struct batadv_priv *bat_priv,
struct hard_iface *primary_if, struct batadv_hard_iface *primary_if,
struct hard_iface *oldif) struct batadv_hard_iface *oldif)
{ {
} }
static inline int batadv_bla_init(struct bat_priv *bat_priv) static inline int batadv_bla_init(struct batadv_priv *bat_priv)
{ {
return 1; return 1;
} }
static inline void batadv_bla_free(struct bat_priv *bat_priv) static inline void batadv_bla_free(struct batadv_priv *bat_priv)
{ {
} }
......
...@@ -36,15 +36,16 @@ ...@@ -36,15 +36,16 @@
#define BATADV_DHCP_OPTIONS_OFFSET 240 #define BATADV_DHCP_OPTIONS_OFFSET 240
#define BATADV_DHCP_REQUEST 3 #define BATADV_DHCP_REQUEST 3
static void batadv_gw_node_free_ref(struct gw_node *gw_node) static void batadv_gw_node_free_ref(struct batadv_gw_node *gw_node)
{ {
if (atomic_dec_and_test(&gw_node->refcount)) if (atomic_dec_and_test(&gw_node->refcount))
kfree_rcu(gw_node, rcu); kfree_rcu(gw_node, rcu);
} }
static struct gw_node *batadv_gw_get_selected_gw_node(struct bat_priv *bat_priv) static struct batadv_gw_node *
batadv_gw_get_selected_gw_node(struct batadv_priv *bat_priv)
{ {
struct gw_node *gw_node; struct batadv_gw_node *gw_node;
rcu_read_lock(); rcu_read_lock();
gw_node = rcu_dereference(bat_priv->curr_gw); gw_node = rcu_dereference(bat_priv->curr_gw);
...@@ -59,10 +60,11 @@ static struct gw_node *batadv_gw_get_selected_gw_node(struct bat_priv *bat_priv) ...@@ -59,10 +60,11 @@ static struct gw_node *batadv_gw_get_selected_gw_node(struct bat_priv *bat_priv)
return gw_node; return gw_node;
} }
struct orig_node *batadv_gw_get_selected_orig(struct bat_priv *bat_priv) struct batadv_orig_node *
batadv_gw_get_selected_orig(struct batadv_priv *bat_priv)
{ {
struct gw_node *gw_node; struct batadv_gw_node *gw_node;
struct orig_node *orig_node = NULL; struct batadv_orig_node *orig_node = NULL;
gw_node = batadv_gw_get_selected_gw_node(bat_priv); gw_node = batadv_gw_get_selected_gw_node(bat_priv);
if (!gw_node) if (!gw_node)
...@@ -84,10 +86,10 @@ struct orig_node *batadv_gw_get_selected_orig(struct bat_priv *bat_priv) ...@@ -84,10 +86,10 @@ struct orig_node *batadv_gw_get_selected_orig(struct bat_priv *bat_priv)
return orig_node; return orig_node;
} }
static void batadv_gw_select(struct bat_priv *bat_priv, static void batadv_gw_select(struct batadv_priv *bat_priv,
struct gw_node *new_gw_node) struct batadv_gw_node *new_gw_node)
{ {
struct gw_node *curr_gw_node; struct batadv_gw_node *curr_gw_node;
spin_lock_bh(&bat_priv->gw_list_lock); spin_lock_bh(&bat_priv->gw_list_lock);
...@@ -103,20 +105,21 @@ static void batadv_gw_select(struct bat_priv *bat_priv, ...@@ -103,20 +105,21 @@ static void batadv_gw_select(struct bat_priv *bat_priv,
spin_unlock_bh(&bat_priv->gw_list_lock); spin_unlock_bh(&bat_priv->gw_list_lock);
} }
void batadv_gw_deselect(struct bat_priv *bat_priv) void batadv_gw_deselect(struct batadv_priv *bat_priv)
{ {
atomic_set(&bat_priv->gw_reselect, 1); atomic_set(&bat_priv->gw_reselect, 1);
} }
static struct gw_node *batadv_gw_get_best_gw_node(struct bat_priv *bat_priv) static struct batadv_gw_node *
batadv_gw_get_best_gw_node(struct batadv_priv *bat_priv)
{ {
struct neigh_node *router; struct batadv_neigh_node *router;
struct hlist_node *node; struct hlist_node *node;
struct gw_node *gw_node, *curr_gw = NULL; struct batadv_gw_node *gw_node, *curr_gw = NULL;
uint32_t max_gw_factor = 0, tmp_gw_factor = 0; uint32_t max_gw_factor = 0, tmp_gw_factor = 0;
uint8_t max_tq = 0; uint8_t max_tq = 0;
int down, up; int down, up;
struct orig_node *orig_node; struct batadv_orig_node *orig_node;
rcu_read_lock(); rcu_read_lock();
hlist_for_each_entry_rcu(gw_node, node, &bat_priv->gw_list, list) { hlist_for_each_entry_rcu(gw_node, node, &bat_priv->gw_list, list) {
...@@ -183,10 +186,10 @@ static struct gw_node *batadv_gw_get_best_gw_node(struct bat_priv *bat_priv) ...@@ -183,10 +186,10 @@ static struct gw_node *batadv_gw_get_best_gw_node(struct bat_priv *bat_priv)
return curr_gw; return curr_gw;
} }
void batadv_gw_election(struct bat_priv *bat_priv) void batadv_gw_election(struct batadv_priv *bat_priv)
{ {
struct gw_node *curr_gw = NULL, *next_gw = NULL; struct batadv_gw_node *curr_gw = NULL, *next_gw = NULL;
struct neigh_node *router = NULL; struct batadv_neigh_node *router = NULL;
char gw_addr[18] = { '\0' }; char gw_addr[18] = { '\0' };
/* The batman daemon checks here if we already passed a full originator /* The batman daemon checks here if we already passed a full originator
...@@ -249,11 +252,11 @@ void batadv_gw_election(struct bat_priv *bat_priv) ...@@ -249,11 +252,11 @@ void batadv_gw_election(struct bat_priv *bat_priv)
batadv_neigh_node_free_ref(router); batadv_neigh_node_free_ref(router);
} }
void batadv_gw_check_election(struct bat_priv *bat_priv, void batadv_gw_check_election(struct batadv_priv *bat_priv,
struct orig_node *orig_node) struct batadv_orig_node *orig_node)
{ {
struct orig_node *curr_gw_orig; struct batadv_orig_node *curr_gw_orig;
struct neigh_node *router_gw = NULL, *router_orig = NULL; struct batadv_neigh_node *router_gw = NULL, *router_orig = NULL;
uint8_t gw_tq_avg, orig_tq_avg; uint8_t gw_tq_avg, orig_tq_avg;
curr_gw_orig = batadv_gw_get_selected_orig(bat_priv); curr_gw_orig = batadv_gw_get_selected_orig(bat_priv);
...@@ -303,11 +306,11 @@ void batadv_gw_check_election(struct bat_priv *bat_priv, ...@@ -303,11 +306,11 @@ void batadv_gw_check_election(struct bat_priv *bat_priv,
return; return;
} }
static void batadv_gw_node_add(struct bat_priv *bat_priv, static void batadv_gw_node_add(struct batadv_priv *bat_priv,
struct orig_node *orig_node, struct batadv_orig_node *orig_node,
uint8_t new_gwflags) uint8_t new_gwflags)
{ {
struct gw_node *gw_node; struct batadv_gw_node *gw_node;
int down, up; int down, up;
gw_node = kzalloc(sizeof(*gw_node), GFP_ATOMIC); gw_node = kzalloc(sizeof(*gw_node), GFP_ATOMIC);
...@@ -332,11 +335,12 @@ static void batadv_gw_node_add(struct bat_priv *bat_priv, ...@@ -332,11 +335,12 @@ static void batadv_gw_node_add(struct bat_priv *bat_priv,
(up > 2048 ? "MBit" : "KBit")); (up > 2048 ? "MBit" : "KBit"));
} }
void batadv_gw_node_update(struct bat_priv *bat_priv, void batadv_gw_node_update(struct batadv_priv *bat_priv,
struct orig_node *orig_node, uint8_t new_gwflags) struct batadv_orig_node *orig_node,
uint8_t new_gwflags)
{ {
struct hlist_node *node; struct hlist_node *node;
struct gw_node *gw_node, *curr_gw; struct batadv_gw_node *gw_node, *curr_gw;
/* Note: We don't need a NULL check here, since curr_gw never gets /* Note: We don't need a NULL check here, since curr_gw never gets
* dereferenced. If curr_gw is NULL we also should not exit as we may * dereferenced. If curr_gw is NULL we also should not exit as we may
...@@ -385,15 +389,15 @@ void batadv_gw_node_update(struct bat_priv *bat_priv, ...@@ -385,15 +389,15 @@ void batadv_gw_node_update(struct bat_priv *bat_priv,
batadv_gw_node_free_ref(curr_gw); batadv_gw_node_free_ref(curr_gw);
} }
void batadv_gw_node_delete(struct bat_priv *bat_priv, void batadv_gw_node_delete(struct batadv_priv *bat_priv,
struct orig_node *orig_node) struct batadv_orig_node *orig_node)
{ {
batadv_gw_node_update(bat_priv, orig_node, 0); batadv_gw_node_update(bat_priv, orig_node, 0);
} }
void batadv_gw_node_purge(struct bat_priv *bat_priv) void batadv_gw_node_purge(struct batadv_priv *bat_priv)
{ {
struct gw_node *gw_node, *curr_gw; struct batadv_gw_node *gw_node, *curr_gw;
struct hlist_node *node, *node_tmp; struct hlist_node *node, *node_tmp;
unsigned long timeout = msecs_to_jiffies(2 * BATADV_PURGE_TIMEOUT); unsigned long timeout = msecs_to_jiffies(2 * BATADV_PURGE_TIMEOUT);
int do_deselect = 0; int do_deselect = 0;
...@@ -427,12 +431,12 @@ void batadv_gw_node_purge(struct bat_priv *bat_priv) ...@@ -427,12 +431,12 @@ void batadv_gw_node_purge(struct bat_priv *bat_priv)
} }
/* fails if orig_node has no router */ /* fails if orig_node has no router */
static int batadv_write_buffer_text(struct bat_priv *bat_priv, static int batadv_write_buffer_text(struct batadv_priv *bat_priv,
struct seq_file *seq, struct seq_file *seq,
const struct gw_node *gw_node) const struct batadv_gw_node *gw_node)
{ {
struct gw_node *curr_gw; struct batadv_gw_node *curr_gw;
struct neigh_node *router; struct batadv_neigh_node *router;
int down, up, ret = -1; int down, up, ret = -1;
batadv_gw_bandwidth_to_kbit(gw_node->orig_node->gw_flags, &down, &up); batadv_gw_bandwidth_to_kbit(gw_node->orig_node->gw_flags, &down, &up);
...@@ -464,9 +468,9 @@ static int batadv_write_buffer_text(struct bat_priv *bat_priv, ...@@ -464,9 +468,9 @@ static int batadv_write_buffer_text(struct bat_priv *bat_priv,
int batadv_gw_client_seq_print_text(struct seq_file *seq, void *offset) int batadv_gw_client_seq_print_text(struct seq_file *seq, void *offset)
{ {
struct net_device *net_dev = (struct net_device *)seq->private; struct net_device *net_dev = (struct net_device *)seq->private;
struct bat_priv *bat_priv = netdev_priv(net_dev); struct batadv_priv *bat_priv = netdev_priv(net_dev);
struct hard_iface *primary_if; struct batadv_hard_iface *primary_if;
struct gw_node *gw_node; struct batadv_gw_node *gw_node;
struct hlist_node *node; struct hlist_node *node;
int gw_count = 0, ret = 0; int gw_count = 0, ret = 0;
...@@ -639,12 +643,12 @@ bool batadv_gw_is_dhcp_target(struct sk_buff *skb, unsigned int *header_len) ...@@ -639,12 +643,12 @@ bool batadv_gw_is_dhcp_target(struct sk_buff *skb, unsigned int *header_len)
return true; return true;
} }
bool batadv_gw_out_of_range(struct bat_priv *bat_priv, bool batadv_gw_out_of_range(struct batadv_priv *bat_priv,
struct sk_buff *skb, struct ethhdr *ethhdr) struct sk_buff *skb, struct ethhdr *ethhdr)
{ {
struct neigh_node *neigh_curr = NULL, *neigh_old = NULL; struct batadv_neigh_node *neigh_curr = NULL, *neigh_old = NULL;
struct orig_node *orig_dst_node = NULL; struct batadv_orig_node *orig_dst_node = NULL;
struct gw_node *curr_gw = NULL; struct batadv_gw_node *curr_gw = NULL;
bool ret, out_of_range = false; bool ret, out_of_range = false;
unsigned int header_len = 0; unsigned int header_len = 0;
uint8_t curr_tq_avg; uint8_t curr_tq_avg;
......
...@@ -20,19 +20,21 @@ ...@@ -20,19 +20,21 @@
#ifndef _NET_BATMAN_ADV_GATEWAY_CLIENT_H_ #ifndef _NET_BATMAN_ADV_GATEWAY_CLIENT_H_
#define _NET_BATMAN_ADV_GATEWAY_CLIENT_H_ #define _NET_BATMAN_ADV_GATEWAY_CLIENT_H_
void batadv_gw_deselect(struct bat_priv *bat_priv); void batadv_gw_deselect(struct batadv_priv *bat_priv);
void batadv_gw_election(struct bat_priv *bat_priv); void batadv_gw_election(struct batadv_priv *bat_priv);
struct orig_node *batadv_gw_get_selected_orig(struct bat_priv *bat_priv); struct batadv_orig_node *
void batadv_gw_check_election(struct bat_priv *bat_priv, batadv_gw_get_selected_orig(struct batadv_priv *bat_priv);
struct orig_node *orig_node); void batadv_gw_check_election(struct batadv_priv *bat_priv,
void batadv_gw_node_update(struct bat_priv *bat_priv, struct batadv_orig_node *orig_node);
struct orig_node *orig_node, uint8_t new_gwflags); void batadv_gw_node_update(struct batadv_priv *bat_priv,
void batadv_gw_node_delete(struct bat_priv *bat_priv, struct batadv_orig_node *orig_node,
struct orig_node *orig_node); uint8_t new_gwflags);
void batadv_gw_node_purge(struct bat_priv *bat_priv); void batadv_gw_node_delete(struct batadv_priv *bat_priv,
struct batadv_orig_node *orig_node);
void batadv_gw_node_purge(struct batadv_priv *bat_priv);
int batadv_gw_client_seq_print_text(struct seq_file *seq, void *offset); int batadv_gw_client_seq_print_text(struct seq_file *seq, void *offset);
bool batadv_gw_is_dhcp_target(struct sk_buff *skb, unsigned int *header_len); bool batadv_gw_is_dhcp_target(struct sk_buff *skb, unsigned int *header_len);
bool batadv_gw_out_of_range(struct bat_priv *bat_priv, bool batadv_gw_out_of_range(struct batadv_priv *bat_priv,
struct sk_buff *skb, struct ethhdr *ethhdr); struct sk_buff *skb, struct ethhdr *ethhdr);
#endif /* _NET_BATMAN_ADV_GATEWAY_CLIENT_H_ */ #endif /* _NET_BATMAN_ADV_GATEWAY_CLIENT_H_ */
...@@ -137,7 +137,7 @@ static bool batadv_parse_gw_bandwidth(struct net_device *net_dev, char *buff, ...@@ -137,7 +137,7 @@ static bool batadv_parse_gw_bandwidth(struct net_device *net_dev, char *buff,
ssize_t batadv_gw_bandwidth_set(struct net_device *net_dev, char *buff, ssize_t batadv_gw_bandwidth_set(struct net_device *net_dev, char *buff,
size_t count) size_t count)
{ {
struct bat_priv *bat_priv = netdev_priv(net_dev); struct batadv_priv *bat_priv = netdev_priv(net_dev);
long gw_bandwidth_tmp = 0; long gw_bandwidth_tmp = 0;
int up = 0, down = 0; int up = 0, down = 0;
bool ret; bool ret;
......
...@@ -32,16 +32,17 @@ ...@@ -32,16 +32,17 @@
void batadv_hardif_free_rcu(struct rcu_head *rcu) void batadv_hardif_free_rcu(struct rcu_head *rcu)
{ {
struct hard_iface *hard_iface; struct batadv_hard_iface *hard_iface;
hard_iface = container_of(rcu, struct hard_iface, rcu); hard_iface = container_of(rcu, struct batadv_hard_iface, rcu);
dev_put(hard_iface->net_dev); dev_put(hard_iface->net_dev);
kfree(hard_iface); kfree(hard_iface);
} }
struct hard_iface *batadv_hardif_get_by_netdev(const struct net_device *net_dev) struct batadv_hard_iface *
batadv_hardif_get_by_netdev(const struct net_device *net_dev)
{ {
struct hard_iface *hard_iface; struct batadv_hard_iface *hard_iface;
rcu_read_lock(); rcu_read_lock();
list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) {
...@@ -75,10 +76,10 @@ static int batadv_is_valid_iface(const struct net_device *net_dev) ...@@ -75,10 +76,10 @@ static int batadv_is_valid_iface(const struct net_device *net_dev)
return 1; return 1;
} }
static struct hard_iface * static struct batadv_hard_iface *
batadv_hardif_get_active(const struct net_device *soft_iface) batadv_hardif_get_active(const struct net_device *soft_iface)
{ {
struct hard_iface *hard_iface; struct batadv_hard_iface *hard_iface;
rcu_read_lock(); rcu_read_lock();
list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) {
...@@ -97,11 +98,11 @@ batadv_hardif_get_active(const struct net_device *soft_iface) ...@@ -97,11 +98,11 @@ batadv_hardif_get_active(const struct net_device *soft_iface)
return hard_iface; return hard_iface;
} }
static void batadv_primary_if_update_addr(struct bat_priv *bat_priv, static void batadv_primary_if_update_addr(struct batadv_priv *bat_priv,
struct hard_iface *oldif) struct batadv_hard_iface *oldif)
{ {
struct batadv_vis_packet *vis_packet; struct batadv_vis_packet *vis_packet;
struct hard_iface *primary_if; struct batadv_hard_iface *primary_if;
primary_if = batadv_primary_if_get_selected(bat_priv); primary_if = batadv_primary_if_get_selected(bat_priv);
if (!primary_if) if (!primary_if)
...@@ -119,10 +120,10 @@ static void batadv_primary_if_update_addr(struct bat_priv *bat_priv, ...@@ -119,10 +120,10 @@ static void batadv_primary_if_update_addr(struct bat_priv *bat_priv,
batadv_hardif_free_ref(primary_if); batadv_hardif_free_ref(primary_if);
} }
static void batadv_primary_if_select(struct bat_priv *bat_priv, static void batadv_primary_if_select(struct batadv_priv *bat_priv,
struct hard_iface *new_hard_iface) struct batadv_hard_iface *new_hard_iface)
{ {
struct hard_iface *curr_hard_iface; struct batadv_hard_iface *curr_hard_iface;
ASSERT_RTNL(); ASSERT_RTNL();
...@@ -143,7 +144,8 @@ static void batadv_primary_if_select(struct bat_priv *bat_priv, ...@@ -143,7 +144,8 @@ static void batadv_primary_if_select(struct bat_priv *bat_priv,
batadv_hardif_free_ref(curr_hard_iface); batadv_hardif_free_ref(curr_hard_iface);
} }
static bool batadv_hardif_is_iface_up(const struct hard_iface *hard_iface) static bool
batadv_hardif_is_iface_up(const struct batadv_hard_iface *hard_iface)
{ {
if (hard_iface->net_dev->flags & IFF_UP) if (hard_iface->net_dev->flags & IFF_UP)
return true; return true;
...@@ -153,7 +155,7 @@ static bool batadv_hardif_is_iface_up(const struct hard_iface *hard_iface) ...@@ -153,7 +155,7 @@ static bool batadv_hardif_is_iface_up(const struct hard_iface *hard_iface)
static void batadv_check_known_mac_addr(const struct net_device *net_dev) static void batadv_check_known_mac_addr(const struct net_device *net_dev)
{ {
const struct hard_iface *hard_iface; const struct batadv_hard_iface *hard_iface;
rcu_read_lock(); rcu_read_lock();
list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) {
...@@ -177,8 +179,8 @@ static void batadv_check_known_mac_addr(const struct net_device *net_dev) ...@@ -177,8 +179,8 @@ static void batadv_check_known_mac_addr(const struct net_device *net_dev)
int batadv_hardif_min_mtu(struct net_device *soft_iface) int batadv_hardif_min_mtu(struct net_device *soft_iface)
{ {
const struct bat_priv *bat_priv = netdev_priv(soft_iface); const struct batadv_priv *bat_priv = netdev_priv(soft_iface);
const struct hard_iface *hard_iface; const struct batadv_hard_iface *hard_iface;
/* allow big frames if all devices are capable to do so /* allow big frames if all devices are capable to do so
* (have MTU > 1500 + BAT_HEADER_LEN) * (have MTU > 1500 + BAT_HEADER_LEN)
*/ */
...@@ -215,10 +217,11 @@ void batadv_update_min_mtu(struct net_device *soft_iface) ...@@ -215,10 +217,11 @@ void batadv_update_min_mtu(struct net_device *soft_iface)
soft_iface->mtu = min_mtu; soft_iface->mtu = min_mtu;
} }
static void batadv_hardif_activate_interface(struct hard_iface *hard_iface) static void
batadv_hardif_activate_interface(struct batadv_hard_iface *hard_iface)
{ {
struct bat_priv *bat_priv; struct batadv_priv *bat_priv;
struct hard_iface *primary_if = NULL; struct batadv_hard_iface *primary_if = NULL;
if (hard_iface->if_status != BATADV_IF_INACTIVE) if (hard_iface->if_status != BATADV_IF_INACTIVE)
goto out; goto out;
...@@ -245,7 +248,8 @@ static void batadv_hardif_activate_interface(struct hard_iface *hard_iface) ...@@ -245,7 +248,8 @@ static void batadv_hardif_activate_interface(struct hard_iface *hard_iface)
batadv_hardif_free_ref(primary_if); batadv_hardif_free_ref(primary_if);
} }
static void batadv_hardif_deactivate_interface(struct hard_iface *hard_iface) static void
batadv_hardif_deactivate_interface(struct batadv_hard_iface *hard_iface)
{ {
if ((hard_iface->if_status != BATADV_IF_ACTIVE) && if ((hard_iface->if_status != BATADV_IF_ACTIVE) &&
(hard_iface->if_status != BATADV_IF_TO_BE_ACTIVATED)) (hard_iface->if_status != BATADV_IF_TO_BE_ACTIVATED))
...@@ -259,10 +263,10 @@ static void batadv_hardif_deactivate_interface(struct hard_iface *hard_iface) ...@@ -259,10 +263,10 @@ static void batadv_hardif_deactivate_interface(struct hard_iface *hard_iface)
batadv_update_min_mtu(hard_iface->soft_iface); batadv_update_min_mtu(hard_iface->soft_iface);
} }
int batadv_hardif_enable_interface(struct hard_iface *hard_iface, int batadv_hardif_enable_interface(struct batadv_hard_iface *hard_iface,
const char *iface_name) const char *iface_name)
{ {
struct bat_priv *bat_priv; struct batadv_priv *bat_priv;
struct net_device *soft_iface; struct net_device *soft_iface;
__be16 ethertype = __constant_htons(BATADV_ETH_P_BATMAN); __be16 ethertype = __constant_htons(BATADV_ETH_P_BATMAN);
int ret; int ret;
...@@ -354,10 +358,10 @@ int batadv_hardif_enable_interface(struct hard_iface *hard_iface, ...@@ -354,10 +358,10 @@ int batadv_hardif_enable_interface(struct hard_iface *hard_iface,
return ret; return ret;
} }
void batadv_hardif_disable_interface(struct hard_iface *hard_iface) void batadv_hardif_disable_interface(struct batadv_hard_iface *hard_iface)
{ {
struct bat_priv *bat_priv = netdev_priv(hard_iface->soft_iface); struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface);
struct hard_iface *primary_if = NULL; struct batadv_hard_iface *primary_if = NULL;
if (hard_iface->if_status == BATADV_IF_ACTIVE) if (hard_iface->if_status == BATADV_IF_ACTIVE)
batadv_hardif_deactivate_interface(hard_iface); batadv_hardif_deactivate_interface(hard_iface);
...@@ -374,7 +378,7 @@ void batadv_hardif_disable_interface(struct hard_iface *hard_iface) ...@@ -374,7 +378,7 @@ void batadv_hardif_disable_interface(struct hard_iface *hard_iface)
primary_if = batadv_primary_if_get_selected(bat_priv); primary_if = batadv_primary_if_get_selected(bat_priv);
if (hard_iface == primary_if) { if (hard_iface == primary_if) {
struct hard_iface *new_if; struct batadv_hard_iface *new_if;
new_if = batadv_hardif_get_active(hard_iface->soft_iface); new_if = batadv_hardif_get_active(hard_iface->soft_iface);
batadv_primary_if_select(bat_priv, new_if); batadv_primary_if_select(bat_priv, new_if);
...@@ -403,10 +407,10 @@ void batadv_hardif_disable_interface(struct hard_iface *hard_iface) ...@@ -403,10 +407,10 @@ void batadv_hardif_disable_interface(struct hard_iface *hard_iface)
batadv_hardif_free_ref(primary_if); batadv_hardif_free_ref(primary_if);
} }
static struct hard_iface * static struct batadv_hard_iface *
batadv_hardif_add_interface(struct net_device *net_dev) batadv_hardif_add_interface(struct net_device *net_dev)
{ {
struct hard_iface *hard_iface; struct batadv_hard_iface *hard_iface;
int ret; int ret;
ASSERT_RTNL(); ASSERT_RTNL();
...@@ -452,7 +456,7 @@ batadv_hardif_add_interface(struct net_device *net_dev) ...@@ -452,7 +456,7 @@ batadv_hardif_add_interface(struct net_device *net_dev)
return NULL; return NULL;
} }
static void batadv_hardif_remove_interface(struct hard_iface *hard_iface) static void batadv_hardif_remove_interface(struct batadv_hard_iface *hard_iface)
{ {
ASSERT_RTNL(); ASSERT_RTNL();
...@@ -470,7 +474,7 @@ static void batadv_hardif_remove_interface(struct hard_iface *hard_iface) ...@@ -470,7 +474,7 @@ static void batadv_hardif_remove_interface(struct hard_iface *hard_iface)
void batadv_hardif_remove_interfaces(void) void batadv_hardif_remove_interfaces(void)
{ {
struct hard_iface *hard_iface, *hard_iface_tmp; struct batadv_hard_iface *hard_iface, *hard_iface_tmp;
rtnl_lock(); rtnl_lock();
list_for_each_entry_safe(hard_iface, hard_iface_tmp, list_for_each_entry_safe(hard_iface, hard_iface_tmp,
...@@ -485,10 +489,11 @@ static int batadv_hard_if_event(struct notifier_block *this, ...@@ -485,10 +489,11 @@ static int batadv_hard_if_event(struct notifier_block *this,
unsigned long event, void *ptr) unsigned long event, void *ptr)
{ {
struct net_device *net_dev = ptr; struct net_device *net_dev = ptr;
struct hard_iface *hard_iface = batadv_hardif_get_by_netdev(net_dev); struct batadv_hard_iface *hard_iface;
struct hard_iface *primary_if = NULL; struct batadv_hard_iface *primary_if = NULL;
struct bat_priv *bat_priv; struct batadv_priv *bat_priv;
hard_iface = batadv_hardif_get_by_netdev(net_dev);
if (!hard_iface && event == NETDEV_REGISTER) if (!hard_iface && event == NETDEV_REGISTER)
hard_iface = batadv_hardif_add_interface(net_dev); hard_iface = batadv_hardif_add_interface(net_dev);
......
...@@ -31,11 +31,11 @@ enum batadv_hard_if_state { ...@@ -31,11 +31,11 @@ enum batadv_hard_if_state {
extern struct notifier_block batadv_hard_if_notifier; extern struct notifier_block batadv_hard_if_notifier;
struct hard_iface* struct batadv_hard_iface*
batadv_hardif_get_by_netdev(const struct net_device *net_dev); batadv_hardif_get_by_netdev(const struct net_device *net_dev);
int batadv_hardif_enable_interface(struct hard_iface *hard_iface, int batadv_hardif_enable_interface(struct batadv_hard_iface *hard_iface,
const char *iface_name); const char *iface_name);
void batadv_hardif_disable_interface(struct hard_iface *hard_iface); void batadv_hardif_disable_interface(struct batadv_hard_iface *hard_iface);
void batadv_hardif_remove_interfaces(void); void batadv_hardif_remove_interfaces(void);
int batadv_hardif_min_mtu(struct net_device *soft_iface); int batadv_hardif_min_mtu(struct net_device *soft_iface);
void batadv_update_min_mtu(struct net_device *soft_iface); void batadv_update_min_mtu(struct net_device *soft_iface);
...@@ -43,16 +43,16 @@ void batadv_hardif_free_rcu(struct rcu_head *rcu); ...@@ -43,16 +43,16 @@ void batadv_hardif_free_rcu(struct rcu_head *rcu);
bool batadv_is_wifi_iface(int ifindex); bool batadv_is_wifi_iface(int ifindex);
static inline void static inline void
batadv_hardif_free_ref(struct hard_iface *hard_iface) batadv_hardif_free_ref(struct batadv_hard_iface *hard_iface)
{ {
if (atomic_dec_and_test(&hard_iface->refcount)) if (atomic_dec_and_test(&hard_iface->refcount))
call_rcu(&hard_iface->rcu, batadv_hardif_free_rcu); call_rcu(&hard_iface->rcu, batadv_hardif_free_rcu);
} }
static inline struct hard_iface * static inline struct batadv_hard_iface *
batadv_primary_if_get_selected(struct bat_priv *bat_priv) batadv_primary_if_get_selected(struct batadv_priv *bat_priv)
{ {
struct hard_iface *hard_iface; struct batadv_hard_iface *hard_iface;
rcu_read_lock(); rcu_read_lock();
hard_iface = rcu_dereference(bat_priv->primary_if); hard_iface = rcu_dereference(bat_priv->primary_if);
......
...@@ -26,9 +26,9 @@ ...@@ -26,9 +26,9 @@
#include "originator.h" #include "originator.h"
#include "hard-interface.h" #include "hard-interface.h"
static struct socket_client *batadv_socket_client_hash[256]; static struct batadv_socket_client *batadv_socket_client_hash[256];
static void batadv_socket_add_packet(struct socket_client *socket_client, static void batadv_socket_add_packet(struct batadv_socket_client *socket_client,
struct batadv_icmp_packet_rr *icmp_packet, struct batadv_icmp_packet_rr *icmp_packet,
size_t icmp_len); size_t icmp_len);
...@@ -40,7 +40,7 @@ void batadv_socket_init(void) ...@@ -40,7 +40,7 @@ void batadv_socket_init(void)
static int batadv_socket_open(struct inode *inode, struct file *file) static int batadv_socket_open(struct inode *inode, struct file *file)
{ {
unsigned int i; unsigned int i;
struct socket_client *socket_client; struct batadv_socket_client *socket_client;
nonseekable_open(inode, file); nonseekable_open(inode, file);
...@@ -77,8 +77,8 @@ static int batadv_socket_open(struct inode *inode, struct file *file) ...@@ -77,8 +77,8 @@ static int batadv_socket_open(struct inode *inode, struct file *file)
static int batadv_socket_release(struct inode *inode, struct file *file) static int batadv_socket_release(struct inode *inode, struct file *file)
{ {
struct socket_client *socket_client = file->private_data; struct batadv_socket_client *socket_client = file->private_data;
struct socket_packet *socket_packet; struct batadv_socket_packet *socket_packet;
struct list_head *list_pos, *list_pos_tmp; struct list_head *list_pos, *list_pos_tmp;
spin_lock_bh(&socket_client->lock); spin_lock_bh(&socket_client->lock);
...@@ -86,7 +86,7 @@ static int batadv_socket_release(struct inode *inode, struct file *file) ...@@ -86,7 +86,7 @@ static int batadv_socket_release(struct inode *inode, struct file *file)
/* for all packets in the queue ... */ /* for all packets in the queue ... */
list_for_each_safe(list_pos, list_pos_tmp, &socket_client->queue_list) { list_for_each_safe(list_pos, list_pos_tmp, &socket_client->queue_list) {
socket_packet = list_entry(list_pos, socket_packet = list_entry(list_pos,
struct socket_packet, list); struct batadv_socket_packet, list);
list_del(list_pos); list_del(list_pos);
kfree(socket_packet); kfree(socket_packet);
...@@ -104,8 +104,8 @@ static int batadv_socket_release(struct inode *inode, struct file *file) ...@@ -104,8 +104,8 @@ static int batadv_socket_release(struct inode *inode, struct file *file)
static ssize_t batadv_socket_read(struct file *file, char __user *buf, static ssize_t batadv_socket_read(struct file *file, char __user *buf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
struct socket_client *socket_client = file->private_data; struct batadv_socket_client *socket_client = file->private_data;
struct socket_packet *socket_packet; struct batadv_socket_packet *socket_packet;
size_t packet_len; size_t packet_len;
int error; int error;
...@@ -127,7 +127,7 @@ static ssize_t batadv_socket_read(struct file *file, char __user *buf, ...@@ -127,7 +127,7 @@ static ssize_t batadv_socket_read(struct file *file, char __user *buf,
spin_lock_bh(&socket_client->lock); spin_lock_bh(&socket_client->lock);
socket_packet = list_first_entry(&socket_client->queue_list, socket_packet = list_first_entry(&socket_client->queue_list,
struct socket_packet, list); struct batadv_socket_packet, list);
list_del(&socket_packet->list); list_del(&socket_packet->list);
socket_client->queue_len--; socket_client->queue_len--;
...@@ -147,14 +147,14 @@ static ssize_t batadv_socket_read(struct file *file, char __user *buf, ...@@ -147,14 +147,14 @@ static ssize_t batadv_socket_read(struct file *file, char __user *buf,
static ssize_t batadv_socket_write(struct file *file, const char __user *buff, static ssize_t batadv_socket_write(struct file *file, const char __user *buff,
size_t len, loff_t *off) size_t len, loff_t *off)
{ {
struct socket_client *socket_client = file->private_data; struct batadv_socket_client *socket_client = file->private_data;
struct bat_priv *bat_priv = socket_client->bat_priv; struct batadv_priv *bat_priv = socket_client->bat_priv;
struct hard_iface *primary_if = NULL; struct batadv_hard_iface *primary_if = NULL;
struct sk_buff *skb; struct sk_buff *skb;
struct batadv_icmp_packet_rr *icmp_packet; struct batadv_icmp_packet_rr *icmp_packet;
struct orig_node *orig_node = NULL; struct batadv_orig_node *orig_node = NULL;
struct neigh_node *neigh_node = NULL; struct batadv_neigh_node *neigh_node = NULL;
size_t packet_len = sizeof(struct batadv_icmp_packet); size_t packet_len = sizeof(struct batadv_icmp_packet);
if (len < sizeof(struct batadv_icmp_packet)) { if (len < sizeof(struct batadv_icmp_packet)) {
...@@ -255,7 +255,7 @@ static ssize_t batadv_socket_write(struct file *file, const char __user *buff, ...@@ -255,7 +255,7 @@ static ssize_t batadv_socket_write(struct file *file, const char __user *buff,
static unsigned int batadv_socket_poll(struct file *file, poll_table *wait) static unsigned int batadv_socket_poll(struct file *file, poll_table *wait)
{ {
struct socket_client *socket_client = file->private_data; struct batadv_socket_client *socket_client = file->private_data;
poll_wait(file, &socket_client->queue_wait, wait); poll_wait(file, &socket_client->queue_wait, wait);
...@@ -275,7 +275,7 @@ static const struct file_operations batadv_fops = { ...@@ -275,7 +275,7 @@ static const struct file_operations batadv_fops = {
.llseek = no_llseek, .llseek = no_llseek,
}; };
int batadv_socket_setup(struct bat_priv *bat_priv) int batadv_socket_setup(struct batadv_priv *bat_priv)
{ {
struct dentry *d; struct dentry *d;
...@@ -293,11 +293,11 @@ int batadv_socket_setup(struct bat_priv *bat_priv) ...@@ -293,11 +293,11 @@ int batadv_socket_setup(struct bat_priv *bat_priv)
return -ENOMEM; return -ENOMEM;
} }
static void batadv_socket_add_packet(struct socket_client *socket_client, static void batadv_socket_add_packet(struct batadv_socket_client *socket_client,
struct batadv_icmp_packet_rr *icmp_packet, struct batadv_icmp_packet_rr *icmp_packet,
size_t icmp_len) size_t icmp_len)
{ {
struct socket_packet *socket_packet; struct batadv_socket_packet *socket_packet;
socket_packet = kmalloc(sizeof(*socket_packet), GFP_ATOMIC); socket_packet = kmalloc(sizeof(*socket_packet), GFP_ATOMIC);
...@@ -324,7 +324,8 @@ static void batadv_socket_add_packet(struct socket_client *socket_client, ...@@ -324,7 +324,8 @@ static void batadv_socket_add_packet(struct socket_client *socket_client,
if (socket_client->queue_len > 100) { if (socket_client->queue_len > 100) {
socket_packet = list_first_entry(&socket_client->queue_list, socket_packet = list_first_entry(&socket_client->queue_list,
struct socket_packet, list); struct batadv_socket_packet,
list);
list_del(&socket_packet->list); list_del(&socket_packet->list);
kfree(socket_packet); kfree(socket_packet);
...@@ -339,7 +340,7 @@ static void batadv_socket_add_packet(struct socket_client *socket_client, ...@@ -339,7 +340,7 @@ static void batadv_socket_add_packet(struct socket_client *socket_client,
void batadv_socket_receive_packet(struct batadv_icmp_packet_rr *icmp_packet, void batadv_socket_receive_packet(struct batadv_icmp_packet_rr *icmp_packet,
size_t icmp_len) size_t icmp_len)
{ {
struct socket_client *hash; struct batadv_socket_client *hash;
hash = batadv_socket_client_hash[icmp_packet->uid]; hash = batadv_socket_client_hash[icmp_packet->uid];
if (hash) if (hash)
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#define BATADV_ICMP_SOCKET "socket" #define BATADV_ICMP_SOCKET "socket"
void batadv_socket_init(void); void batadv_socket_init(void);
int batadv_socket_setup(struct bat_priv *bat_priv); int batadv_socket_setup(struct batadv_priv *bat_priv);
void batadv_socket_receive_packet(struct batadv_icmp_packet_rr *icmp_packet, void batadv_socket_receive_packet(struct batadv_icmp_packet_rr *icmp_packet,
size_t icmp_len); size_t icmp_len);
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
*/ */
struct list_head batadv_hardif_list; struct list_head batadv_hardif_list;
static int (*batadv_rx_handler[256])(struct sk_buff *, static int (*batadv_rx_handler[256])(struct sk_buff *,
struct hard_iface *); struct batadv_hard_iface *);
char batadv_routing_algo[20] = "BATMAN_IV"; char batadv_routing_algo[20] = "BATMAN_IV";
static struct hlist_head batadv_algo_list; static struct hlist_head batadv_algo_list;
...@@ -92,7 +92,7 @@ static void __exit batadv_exit(void) ...@@ -92,7 +92,7 @@ static void __exit batadv_exit(void)
int batadv_mesh_init(struct net_device *soft_iface) int batadv_mesh_init(struct net_device *soft_iface)
{ {
struct bat_priv *bat_priv = netdev_priv(soft_iface); struct batadv_priv *bat_priv = netdev_priv(soft_iface);
int ret; int ret;
spin_lock_init(&bat_priv->forw_bat_list_lock); spin_lock_init(&bat_priv->forw_bat_list_lock);
...@@ -143,7 +143,7 @@ int batadv_mesh_init(struct net_device *soft_iface) ...@@ -143,7 +143,7 @@ int batadv_mesh_init(struct net_device *soft_iface)
void batadv_mesh_free(struct net_device *soft_iface) void batadv_mesh_free(struct net_device *soft_iface)
{ {
struct bat_priv *bat_priv = netdev_priv(soft_iface); struct batadv_priv *bat_priv = netdev_priv(soft_iface);
atomic_set(&bat_priv->mesh_state, BATADV_MESH_DEACTIVATING); atomic_set(&bat_priv->mesh_state, BATADV_MESH_DEACTIVATING);
...@@ -175,7 +175,7 @@ void batadv_dec_module_count(void) ...@@ -175,7 +175,7 @@ void batadv_dec_module_count(void)
int batadv_is_my_mac(const uint8_t *addr) int batadv_is_my_mac(const uint8_t *addr)
{ {
const struct hard_iface *hard_iface; const struct batadv_hard_iface *hard_iface;
rcu_read_lock(); rcu_read_lock();
list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) {
...@@ -192,7 +192,7 @@ int batadv_is_my_mac(const uint8_t *addr) ...@@ -192,7 +192,7 @@ int batadv_is_my_mac(const uint8_t *addr)
} }
static int batadv_recv_unhandled_packet(struct sk_buff *skb, static int batadv_recv_unhandled_packet(struct sk_buff *skb,
struct hard_iface *recv_if) struct batadv_hard_iface *recv_if)
{ {
return NET_RX_DROP; return NET_RX_DROP;
} }
...@@ -204,13 +204,14 @@ int batadv_batman_skb_recv(struct sk_buff *skb, struct net_device *dev, ...@@ -204,13 +204,14 @@ int batadv_batman_skb_recv(struct sk_buff *skb, struct net_device *dev,
struct packet_type *ptype, struct packet_type *ptype,
struct net_device *orig_dev) struct net_device *orig_dev)
{ {
struct bat_priv *bat_priv; struct batadv_priv *bat_priv;
struct batadv_ogm_packet *batadv_ogm_packet; struct batadv_ogm_packet *batadv_ogm_packet;
struct hard_iface *hard_iface; struct batadv_hard_iface *hard_iface;
uint8_t idx; uint8_t idx;
int ret; int ret;
hard_iface = container_of(ptype, struct hard_iface, batman_adv_ptype); hard_iface = container_of(ptype, struct batadv_hard_iface,
batman_adv_ptype);
skb = skb_share_check(skb, GFP_ATOMIC); skb = skb_share_check(skb, GFP_ATOMIC);
/* skb was released by skb_share_check() */ /* skb was released by skb_share_check() */
...@@ -290,9 +291,10 @@ static void batadv_recv_handler_init(void) ...@@ -290,9 +291,10 @@ static void batadv_recv_handler_init(void)
batadv_rx_handler[BATADV_ROAM_ADV] = batadv_recv_roam_adv; batadv_rx_handler[BATADV_ROAM_ADV] = batadv_recv_roam_adv;
} }
int batadv_recv_handler_register(uint8_t packet_type, int
int (*recv_handler)(struct sk_buff *, batadv_recv_handler_register(uint8_t packet_type,
struct hard_iface *)) int (*recv_handler)(struct sk_buff *,
struct batadv_hard_iface *))
{ {
if (batadv_rx_handler[packet_type] != &batadv_recv_unhandled_packet) if (batadv_rx_handler[packet_type] != &batadv_recv_unhandled_packet)
return -EBUSY; return -EBUSY;
...@@ -306,9 +308,9 @@ void batadv_recv_handler_unregister(uint8_t packet_type) ...@@ -306,9 +308,9 @@ void batadv_recv_handler_unregister(uint8_t packet_type)
batadv_rx_handler[packet_type] = batadv_recv_unhandled_packet; batadv_rx_handler[packet_type] = batadv_recv_unhandled_packet;
} }
static struct bat_algo_ops *batadv_algo_get(char *name) static struct batadv_algo_ops *batadv_algo_get(char *name)
{ {
struct bat_algo_ops *bat_algo_ops = NULL, *bat_algo_ops_tmp; struct batadv_algo_ops *bat_algo_ops = NULL, *bat_algo_ops_tmp;
struct hlist_node *node; struct hlist_node *node;
hlist_for_each_entry(bat_algo_ops_tmp, node, &batadv_algo_list, list) { hlist_for_each_entry(bat_algo_ops_tmp, node, &batadv_algo_list, list) {
...@@ -322,9 +324,9 @@ static struct bat_algo_ops *batadv_algo_get(char *name) ...@@ -322,9 +324,9 @@ static struct bat_algo_ops *batadv_algo_get(char *name)
return bat_algo_ops; return bat_algo_ops;
} }
int batadv_algo_register(struct bat_algo_ops *bat_algo_ops) int batadv_algo_register(struct batadv_algo_ops *bat_algo_ops)
{ {
struct bat_algo_ops *bat_algo_ops_tmp; struct batadv_algo_ops *bat_algo_ops_tmp;
int ret; int ret;
bat_algo_ops_tmp = batadv_algo_get(bat_algo_ops->name); bat_algo_ops_tmp = batadv_algo_get(bat_algo_ops->name);
...@@ -356,9 +358,9 @@ int batadv_algo_register(struct bat_algo_ops *bat_algo_ops) ...@@ -356,9 +358,9 @@ int batadv_algo_register(struct bat_algo_ops *bat_algo_ops)
return ret; return ret;
} }
int batadv_algo_select(struct bat_priv *bat_priv, char *name) int batadv_algo_select(struct batadv_priv *bat_priv, char *name)
{ {
struct bat_algo_ops *bat_algo_ops; struct batadv_algo_ops *bat_algo_ops;
int ret = -EINVAL; int ret = -EINVAL;
bat_algo_ops = batadv_algo_get(name); bat_algo_ops = batadv_algo_get(name);
...@@ -374,7 +376,7 @@ int batadv_algo_select(struct bat_priv *bat_priv, char *name) ...@@ -374,7 +376,7 @@ int batadv_algo_select(struct bat_priv *bat_priv, char *name)
int batadv_algo_seq_print_text(struct seq_file *seq, void *offset) int batadv_algo_seq_print_text(struct seq_file *seq, void *offset)
{ {
struct bat_algo_ops *bat_algo_ops; struct batadv_algo_ops *bat_algo_ops;
struct hlist_node *node; struct hlist_node *node;
seq_printf(seq, "Available routing algorithms:\n"); seq_printf(seq, "Available routing algorithms:\n");
...@@ -388,7 +390,7 @@ int batadv_algo_seq_print_text(struct seq_file *seq, void *offset) ...@@ -388,7 +390,7 @@ int batadv_algo_seq_print_text(struct seq_file *seq, void *offset)
static int batadv_param_set_ra(const char *val, const struct kernel_param *kp) static int batadv_param_set_ra(const char *val, const struct kernel_param *kp)
{ {
struct bat_algo_ops *bat_algo_ops; struct batadv_algo_ops *bat_algo_ops;
char *algo_name = (char *)val; char *algo_name = (char *)val;
size_t name_len = strlen(algo_name); size_t name_len = strlen(algo_name);
......
...@@ -164,16 +164,17 @@ int batadv_is_my_mac(const uint8_t *addr); ...@@ -164,16 +164,17 @@ int batadv_is_my_mac(const uint8_t *addr);
int batadv_batman_skb_recv(struct sk_buff *skb, struct net_device *dev, int batadv_batman_skb_recv(struct sk_buff *skb, struct net_device *dev,
struct packet_type *ptype, struct packet_type *ptype,
struct net_device *orig_dev); struct net_device *orig_dev);
int batadv_recv_handler_register(uint8_t packet_type, int
int (*recv_handler)(struct sk_buff *, batadv_recv_handler_register(uint8_t packet_type,
struct hard_iface *)); int (*recv_handler)(struct sk_buff *,
struct batadv_hard_iface *));
void batadv_recv_handler_unregister(uint8_t packet_type); void batadv_recv_handler_unregister(uint8_t packet_type);
int batadv_algo_register(struct bat_algo_ops *bat_algo_ops); int batadv_algo_register(struct batadv_algo_ops *bat_algo_ops);
int batadv_algo_select(struct bat_priv *bat_priv, char *name); int batadv_algo_select(struct batadv_priv *bat_priv, char *name);
int batadv_algo_seq_print_text(struct seq_file *seq, void *offset); int batadv_algo_seq_print_text(struct seq_file *seq, void *offset);
#ifdef CONFIG_BATMAN_ADV_DEBUG #ifdef CONFIG_BATMAN_ADV_DEBUG
int batadv_debug_log(struct bat_priv *bat_priv, const char *fmt, ...) int batadv_debug_log(struct batadv_priv *bat_priv, const char *fmt, ...)
__printf(2, 3); __printf(2, 3);
#define batadv_dbg(type, bat_priv, fmt, arg...) \ #define batadv_dbg(type, bat_priv, fmt, arg...) \
...@@ -185,7 +186,7 @@ __printf(2, 3); ...@@ -185,7 +186,7 @@ __printf(2, 3);
#else /* !CONFIG_BATMAN_ADV_DEBUG */ #else /* !CONFIG_BATMAN_ADV_DEBUG */
__printf(3, 4) __printf(3, 4)
static inline void batadv_dbg(int type __always_unused, static inline void batadv_dbg(int type __always_unused,
struct bat_priv *bat_priv __always_unused, struct batadv_priv *bat_priv __always_unused,
const char *fmt __always_unused, ...) const char *fmt __always_unused, ...)
{ {
} }
...@@ -194,14 +195,14 @@ static inline void batadv_dbg(int type __always_unused, ...@@ -194,14 +195,14 @@ static inline void batadv_dbg(int type __always_unused,
#define batadv_info(net_dev, fmt, arg...) \ #define batadv_info(net_dev, fmt, arg...) \
do { \ do { \
struct net_device *_netdev = (net_dev); \ struct net_device *_netdev = (net_dev); \
struct bat_priv *_batpriv = netdev_priv(_netdev); \ struct batadv_priv *_batpriv = netdev_priv(_netdev); \
batadv_dbg(BATADV_DBG_ALL, _batpriv, fmt, ## arg); \ batadv_dbg(BATADV_DBG_ALL, _batpriv, fmt, ## arg); \
pr_info("%s: " fmt, _netdev->name, ## arg); \ pr_info("%s: " fmt, _netdev->name, ## arg); \
} while (0) } while (0)
#define batadv_err(net_dev, fmt, arg...) \ #define batadv_err(net_dev, fmt, arg...) \
do { \ do { \
struct net_device *_netdev = (net_dev); \ struct net_device *_netdev = (net_dev); \
struct bat_priv *_batpriv = netdev_priv(_netdev); \ struct batadv_priv *_batpriv = netdev_priv(_netdev); \
batadv_dbg(BATADV_DBG_ALL, _batpriv, fmt, ## arg); \ batadv_dbg(BATADV_DBG_ALL, _batpriv, fmt, ## arg); \
pr_err("%s: " fmt, _netdev->name, ## arg); \ pr_err("%s: " fmt, _netdev->name, ## arg); \
} while (0) } while (0)
...@@ -250,7 +251,7 @@ static inline bool batadv_has_timed_out(unsigned long timestamp, ...@@ -250,7 +251,7 @@ static inline bool batadv_has_timed_out(unsigned long timestamp,
#define batadv_seq_after(x, y) batadv_seq_before(y, x) #define batadv_seq_after(x, y) batadv_seq_before(y, x)
/* Stop preemption on local cpu while incrementing the counter */ /* Stop preemption on local cpu while incrementing the counter */
static inline void batadv_add_counter(struct bat_priv *bat_priv, size_t idx, static inline void batadv_add_counter(struct batadv_priv *bat_priv, size_t idx,
size_t count) size_t count)
{ {
int cpu = get_cpu(); int cpu = get_cpu();
...@@ -261,7 +262,8 @@ static inline void batadv_add_counter(struct bat_priv *bat_priv, size_t idx, ...@@ -261,7 +262,8 @@ static inline void batadv_add_counter(struct bat_priv *bat_priv, size_t idx,
#define batadv_inc_counter(b, i) batadv_add_counter(b, i, 1) #define batadv_inc_counter(b, i) batadv_add_counter(b, i, 1)
/* Sum and return the cpu-local counters for index 'idx' */ /* Sum and return the cpu-local counters for index 'idx' */
static inline uint64_t batadv_sum_counter(struct bat_priv *bat_priv, size_t idx) static inline uint64_t batadv_sum_counter(struct batadv_priv *bat_priv,
size_t idx)
{ {
uint64_t *counters; uint64_t *counters;
int cpu; int cpu;
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
static void batadv_purge_orig(struct work_struct *work); static void batadv_purge_orig(struct work_struct *work);
static void batadv_start_purge_timer(struct bat_priv *bat_priv) static void batadv_start_purge_timer(struct batadv_priv *bat_priv)
{ {
INIT_DELAYED_WORK(&bat_priv->orig_work, batadv_purge_orig); INIT_DELAYED_WORK(&bat_priv->orig_work, batadv_purge_orig);
queue_delayed_work(batadv_event_workqueue, queue_delayed_work(batadv_event_workqueue,
...@@ -40,12 +40,13 @@ static void batadv_start_purge_timer(struct bat_priv *bat_priv) ...@@ -40,12 +40,13 @@ static void batadv_start_purge_timer(struct bat_priv *bat_priv)
/* returns 1 if they are the same originator */ /* returns 1 if they are the same originator */
static int batadv_compare_orig(const struct hlist_node *node, const void *data2) static int batadv_compare_orig(const struct hlist_node *node, const void *data2)
{ {
const void *data1 = container_of(node, struct orig_node, hash_entry); const void *data1 = container_of(node, struct batadv_orig_node,
hash_entry);
return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0); return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0);
} }
int batadv_originator_init(struct bat_priv *bat_priv) int batadv_originator_init(struct batadv_priv *bat_priv)
{ {
if (bat_priv->orig_hash) if (bat_priv->orig_hash)
return 0; return 0;
...@@ -62,16 +63,17 @@ int batadv_originator_init(struct bat_priv *bat_priv) ...@@ -62,16 +63,17 @@ int batadv_originator_init(struct bat_priv *bat_priv)
return -ENOMEM; return -ENOMEM;
} }
void batadv_neigh_node_free_ref(struct neigh_node *neigh_node) void batadv_neigh_node_free_ref(struct batadv_neigh_node *neigh_node)
{ {
if (atomic_dec_and_test(&neigh_node->refcount)) if (atomic_dec_and_test(&neigh_node->refcount))
kfree_rcu(neigh_node, rcu); kfree_rcu(neigh_node, rcu);
} }
/* increases the refcounter of a found router */ /* increases the refcounter of a found router */
struct neigh_node *batadv_orig_node_get_router(struct orig_node *orig_node) struct batadv_neigh_node *
batadv_orig_node_get_router(struct batadv_orig_node *orig_node)
{ {
struct neigh_node *router; struct batadv_neigh_node *router;
rcu_read_lock(); rcu_read_lock();
router = rcu_dereference(orig_node->router); router = rcu_dereference(orig_node->router);
...@@ -83,12 +85,12 @@ struct neigh_node *batadv_orig_node_get_router(struct orig_node *orig_node) ...@@ -83,12 +85,12 @@ struct neigh_node *batadv_orig_node_get_router(struct orig_node *orig_node)
return router; return router;
} }
struct neigh_node *batadv_neigh_node_new(struct hard_iface *hard_iface, struct batadv_neigh_node *
const uint8_t *neigh_addr, batadv_neigh_node_new(struct batadv_hard_iface *hard_iface,
uint32_t seqno) const uint8_t *neigh_addr, uint32_t seqno)
{ {
struct bat_priv *bat_priv = netdev_priv(hard_iface->soft_iface); struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface);
struct neigh_node *neigh_node; struct batadv_neigh_node *neigh_node;
neigh_node = kzalloc(sizeof(*neigh_node), GFP_ATOMIC); neigh_node = kzalloc(sizeof(*neigh_node), GFP_ATOMIC);
if (!neigh_node) if (!neigh_node)
...@@ -113,10 +115,10 @@ struct neigh_node *batadv_neigh_node_new(struct hard_iface *hard_iface, ...@@ -113,10 +115,10 @@ struct neigh_node *batadv_neigh_node_new(struct hard_iface *hard_iface,
static void batadv_orig_node_free_rcu(struct rcu_head *rcu) static void batadv_orig_node_free_rcu(struct rcu_head *rcu)
{ {
struct hlist_node *node, *node_tmp; struct hlist_node *node, *node_tmp;
struct neigh_node *neigh_node, *tmp_neigh_node; struct batadv_neigh_node *neigh_node, *tmp_neigh_node;
struct orig_node *orig_node; struct batadv_orig_node *orig_node;
orig_node = container_of(rcu, struct orig_node, rcu); orig_node = container_of(rcu, struct batadv_orig_node, rcu);
spin_lock_bh(&orig_node->neigh_list_lock); spin_lock_bh(&orig_node->neigh_list_lock);
...@@ -146,19 +148,19 @@ static void batadv_orig_node_free_rcu(struct rcu_head *rcu) ...@@ -146,19 +148,19 @@ static void batadv_orig_node_free_rcu(struct rcu_head *rcu)
kfree(orig_node); kfree(orig_node);
} }
void batadv_orig_node_free_ref(struct orig_node *orig_node) void batadv_orig_node_free_ref(struct batadv_orig_node *orig_node)
{ {
if (atomic_dec_and_test(&orig_node->refcount)) if (atomic_dec_and_test(&orig_node->refcount))
call_rcu(&orig_node->rcu, batadv_orig_node_free_rcu); call_rcu(&orig_node->rcu, batadv_orig_node_free_rcu);
} }
void batadv_originator_free(struct bat_priv *bat_priv) void batadv_originator_free(struct batadv_priv *bat_priv)
{ {
struct batadv_hashtable *hash = bat_priv->orig_hash; struct batadv_hashtable *hash = bat_priv->orig_hash;
struct hlist_node *node, *node_tmp; struct hlist_node *node, *node_tmp;
struct hlist_head *head; struct hlist_head *head;
spinlock_t *list_lock; /* spinlock to protect write access */ spinlock_t *list_lock; /* spinlock to protect write access */
struct orig_node *orig_node; struct batadv_orig_node *orig_node;
uint32_t i; uint32_t i;
if (!hash) if (!hash)
...@@ -188,10 +190,10 @@ void batadv_originator_free(struct bat_priv *bat_priv) ...@@ -188,10 +190,10 @@ void batadv_originator_free(struct bat_priv *bat_priv)
/* this function finds or creates an originator entry for the given /* this function finds or creates an originator entry for the given
* address if it does not exits * address if it does not exits
*/ */
struct orig_node *batadv_get_orig_node(struct bat_priv *bat_priv, struct batadv_orig_node *batadv_get_orig_node(struct batadv_priv *bat_priv,
const uint8_t *addr) const uint8_t *addr)
{ {
struct orig_node *orig_node; struct batadv_orig_node *orig_node;
int size; int size;
int hash_added; int hash_added;
unsigned long reset_time; unsigned long reset_time;
...@@ -264,15 +266,16 @@ struct orig_node *batadv_get_orig_node(struct bat_priv *bat_priv, ...@@ -264,15 +266,16 @@ struct orig_node *batadv_get_orig_node(struct bat_priv *bat_priv,
return NULL; return NULL;
} }
static bool batadv_purge_orig_neighbors(struct bat_priv *bat_priv, static bool
struct orig_node *orig_node, batadv_purge_orig_neighbors(struct batadv_priv *bat_priv,
struct neigh_node **best_neigh_node) struct batadv_orig_node *orig_node,
struct batadv_neigh_node **best_neigh_node)
{ {
struct hlist_node *node, *node_tmp; struct hlist_node *node, *node_tmp;
struct neigh_node *neigh_node; struct batadv_neigh_node *neigh_node;
bool neigh_purged = false; bool neigh_purged = false;
unsigned long last_seen; unsigned long last_seen;
struct hard_iface *if_incoming; struct batadv_hard_iface *if_incoming;
*best_neigh_node = NULL; *best_neigh_node = NULL;
...@@ -319,10 +322,10 @@ static bool batadv_purge_orig_neighbors(struct bat_priv *bat_priv, ...@@ -319,10 +322,10 @@ static bool batadv_purge_orig_neighbors(struct bat_priv *bat_priv,
return neigh_purged; return neigh_purged;
} }
static bool batadv_purge_orig_node(struct bat_priv *bat_priv, static bool batadv_purge_orig_node(struct batadv_priv *bat_priv,
struct orig_node *orig_node) struct batadv_orig_node *orig_node)
{ {
struct neigh_node *best_neigh_node; struct batadv_neigh_node *best_neigh_node;
if (batadv_has_timed_out(orig_node->last_seen, if (batadv_has_timed_out(orig_node->last_seen,
2 * BATADV_PURGE_TIMEOUT)) { 2 * BATADV_PURGE_TIMEOUT)) {
...@@ -341,13 +344,13 @@ static bool batadv_purge_orig_node(struct bat_priv *bat_priv, ...@@ -341,13 +344,13 @@ static bool batadv_purge_orig_node(struct bat_priv *bat_priv,
return false; return false;
} }
static void _batadv_purge_orig(struct bat_priv *bat_priv) static void _batadv_purge_orig(struct batadv_priv *bat_priv)
{ {
struct batadv_hashtable *hash = bat_priv->orig_hash; struct batadv_hashtable *hash = bat_priv->orig_hash;
struct hlist_node *node, *node_tmp; struct hlist_node *node, *node_tmp;
struct hlist_head *head; struct hlist_head *head;
spinlock_t *list_lock; /* spinlock to protect write access */ spinlock_t *list_lock; /* spinlock to protect write access */
struct orig_node *orig_node; struct batadv_orig_node *orig_node;
uint32_t i; uint32_t i;
if (!hash) if (!hash)
...@@ -383,16 +386,16 @@ static void _batadv_purge_orig(struct bat_priv *bat_priv) ...@@ -383,16 +386,16 @@ static void _batadv_purge_orig(struct bat_priv *bat_priv)
static void batadv_purge_orig(struct work_struct *work) static void batadv_purge_orig(struct work_struct *work)
{ {
struct delayed_work *delayed_work = struct delayed_work *delayed_work;
container_of(work, struct delayed_work, work); struct batadv_priv *bat_priv;
struct bat_priv *bat_priv =
container_of(delayed_work, struct bat_priv, orig_work);
delayed_work = container_of(work, struct delayed_work, work);
bat_priv = container_of(delayed_work, struct batadv_priv, orig_work);
_batadv_purge_orig(bat_priv); _batadv_purge_orig(bat_priv);
batadv_start_purge_timer(bat_priv); batadv_start_purge_timer(bat_priv);
} }
void batadv_purge_orig_ref(struct bat_priv *bat_priv) void batadv_purge_orig_ref(struct batadv_priv *bat_priv)
{ {
_batadv_purge_orig(bat_priv); _batadv_purge_orig(bat_priv);
} }
...@@ -400,13 +403,13 @@ void batadv_purge_orig_ref(struct bat_priv *bat_priv) ...@@ -400,13 +403,13 @@ void batadv_purge_orig_ref(struct bat_priv *bat_priv)
int batadv_orig_seq_print_text(struct seq_file *seq, void *offset) int batadv_orig_seq_print_text(struct seq_file *seq, void *offset)
{ {
struct net_device *net_dev = (struct net_device *)seq->private; struct net_device *net_dev = (struct net_device *)seq->private;
struct bat_priv *bat_priv = netdev_priv(net_dev); struct batadv_priv *bat_priv = netdev_priv(net_dev);
struct batadv_hashtable *hash = bat_priv->orig_hash; struct batadv_hashtable *hash = bat_priv->orig_hash;
struct hlist_node *node, *node_tmp; struct hlist_node *node, *node_tmp;
struct hlist_head *head; struct hlist_head *head;
struct hard_iface *primary_if; struct batadv_hard_iface *primary_if;
struct orig_node *orig_node; struct batadv_orig_node *orig_node;
struct neigh_node *neigh_node, *neigh_node_tmp; struct batadv_neigh_node *neigh_node, *neigh_node_tmp;
int batman_count = 0; int batman_count = 0;
int last_seen_secs; int last_seen_secs;
int last_seen_msecs; int last_seen_msecs;
...@@ -484,7 +487,8 @@ int batadv_orig_seq_print_text(struct seq_file *seq, void *offset) ...@@ -484,7 +487,8 @@ int batadv_orig_seq_print_text(struct seq_file *seq, void *offset)
return ret; return ret;
} }
static int batadv_orig_node_add_if(struct orig_node *orig_node, int max_if_num) static int batadv_orig_node_add_if(struct batadv_orig_node *orig_node,
int max_if_num)
{ {
void *data_ptr; void *data_ptr;
size_t data_size, old_size; size_t data_size, old_size;
...@@ -511,13 +515,14 @@ static int batadv_orig_node_add_if(struct orig_node *orig_node, int max_if_num) ...@@ -511,13 +515,14 @@ static int batadv_orig_node_add_if(struct orig_node *orig_node, int max_if_num)
return 0; return 0;
} }
int batadv_orig_hash_add_if(struct hard_iface *hard_iface, int max_if_num) int batadv_orig_hash_add_if(struct batadv_hard_iface *hard_iface,
int max_if_num)
{ {
struct bat_priv *bat_priv = netdev_priv(hard_iface->soft_iface); struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface);
struct batadv_hashtable *hash = bat_priv->orig_hash; struct batadv_hashtable *hash = bat_priv->orig_hash;
struct hlist_node *node; struct hlist_node *node;
struct hlist_head *head; struct hlist_head *head;
struct orig_node *orig_node; struct batadv_orig_node *orig_node;
uint32_t i; uint32_t i;
int ret; int ret;
...@@ -546,7 +551,7 @@ int batadv_orig_hash_add_if(struct hard_iface *hard_iface, int max_if_num) ...@@ -546,7 +551,7 @@ int batadv_orig_hash_add_if(struct hard_iface *hard_iface, int max_if_num)
return -ENOMEM; return -ENOMEM;
} }
static int batadv_orig_node_del_if(struct orig_node *orig_node, static int batadv_orig_node_del_if(struct batadv_orig_node *orig_node,
int max_if_num, int del_if_num) int max_if_num, int del_if_num)
{ {
void *data_ptr = NULL; void *data_ptr = NULL;
...@@ -594,14 +599,15 @@ static int batadv_orig_node_del_if(struct orig_node *orig_node, ...@@ -594,14 +599,15 @@ static int batadv_orig_node_del_if(struct orig_node *orig_node,
return 0; return 0;
} }
int batadv_orig_hash_del_if(struct hard_iface *hard_iface, int max_if_num) int batadv_orig_hash_del_if(struct batadv_hard_iface *hard_iface,
int max_if_num)
{ {
struct bat_priv *bat_priv = netdev_priv(hard_iface->soft_iface); struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface);
struct batadv_hashtable *hash = bat_priv->orig_hash; struct batadv_hashtable *hash = bat_priv->orig_hash;
struct hlist_node *node; struct hlist_node *node;
struct hlist_head *head; struct hlist_head *head;
struct hard_iface *hard_iface_tmp; struct batadv_hard_iface *hard_iface_tmp;
struct orig_node *orig_node; struct batadv_orig_node *orig_node;
uint32_t i; uint32_t i;
int ret; int ret;
......
...@@ -22,20 +22,23 @@ ...@@ -22,20 +22,23 @@
#include "hash.h" #include "hash.h"
int batadv_originator_init(struct bat_priv *bat_priv); int batadv_originator_init(struct batadv_priv *bat_priv);
void batadv_originator_free(struct bat_priv *bat_priv); void batadv_originator_free(struct batadv_priv *bat_priv);
void batadv_purge_orig_ref(struct bat_priv *bat_priv); void batadv_purge_orig_ref(struct batadv_priv *bat_priv);
void batadv_orig_node_free_ref(struct orig_node *orig_node); void batadv_orig_node_free_ref(struct batadv_orig_node *orig_node);
struct orig_node *batadv_get_orig_node(struct bat_priv *bat_priv, struct batadv_orig_node *batadv_get_orig_node(struct batadv_priv *bat_priv,
const uint8_t *addr); const uint8_t *addr);
struct neigh_node *batadv_neigh_node_new(struct hard_iface *hard_iface, struct batadv_neigh_node *
const uint8_t *neigh_addr, batadv_neigh_node_new(struct batadv_hard_iface *hard_iface,
uint32_t seqno); const uint8_t *neigh_addr, uint32_t seqno);
void batadv_neigh_node_free_ref(struct neigh_node *neigh_node); void batadv_neigh_node_free_ref(struct batadv_neigh_node *neigh_node);
struct neigh_node *batadv_orig_node_get_router(struct orig_node *orig_node); struct batadv_neigh_node *
batadv_orig_node_get_router(struct batadv_orig_node *orig_node);
int batadv_orig_seq_print_text(struct seq_file *seq, void *offset); int batadv_orig_seq_print_text(struct seq_file *seq, void *offset);
int batadv_orig_hash_add_if(struct hard_iface *hard_iface, int max_if_num); int batadv_orig_hash_add_if(struct batadv_hard_iface *hard_iface,
int batadv_orig_hash_del_if(struct hard_iface *hard_iface, int max_if_num); int max_if_num);
int batadv_orig_hash_del_if(struct batadv_hard_iface *hard_iface,
int max_if_num);
/* hashfunction to choose an entry in a hash table of given size /* hashfunction to choose an entry in a hash table of given size
...@@ -60,13 +63,13 @@ static inline uint32_t batadv_choose_orig(const void *data, uint32_t size) ...@@ -60,13 +63,13 @@ static inline uint32_t batadv_choose_orig(const void *data, uint32_t size)
return hash % size; return hash % size;
} }
static inline struct orig_node *batadv_orig_hash_find(struct bat_priv *bat_priv, static inline struct batadv_orig_node *
const void *data) batadv_orig_hash_find(struct batadv_priv *bat_priv, const void *data)
{ {
struct batadv_hashtable *hash = bat_priv->orig_hash; struct batadv_hashtable *hash = bat_priv->orig_hash;
struct hlist_head *head; struct hlist_head *head;
struct hlist_node *node; struct hlist_node *node;
struct orig_node *orig_node, *orig_node_tmp = NULL; struct batadv_orig_node *orig_node, *orig_node_tmp = NULL;
int index; int index;
if (!hash) if (!hash)
......
This diff is collapsed.
...@@ -20,32 +20,40 @@ ...@@ -20,32 +20,40 @@
#ifndef _NET_BATMAN_ADV_ROUTING_H_ #ifndef _NET_BATMAN_ADV_ROUTING_H_
#define _NET_BATMAN_ADV_ROUTING_H_ #define _NET_BATMAN_ADV_ROUTING_H_
void batadv_slide_own_bcast_window(struct hard_iface *hard_iface); void batadv_slide_own_bcast_window(struct batadv_hard_iface *hard_iface);
bool batadv_check_management_packet(struct sk_buff *skb, bool batadv_check_management_packet(struct sk_buff *skb,
struct hard_iface *hard_iface, struct batadv_hard_iface *hard_iface,
int header_len); int header_len);
void batadv_update_route(struct bat_priv *bat_priv, struct orig_node *orig_node, void batadv_update_route(struct batadv_priv *bat_priv,
struct neigh_node *neigh_node); struct batadv_orig_node *orig_node,
int batadv_recv_icmp_packet(struct sk_buff *skb, struct hard_iface *recv_if); struct batadv_neigh_node *neigh_node);
int batadv_recv_unicast_packet(struct sk_buff *skb, struct hard_iface *recv_if); int batadv_recv_icmp_packet(struct sk_buff *skb,
struct batadv_hard_iface *recv_if);
int batadv_recv_unicast_packet(struct sk_buff *skb,
struct batadv_hard_iface *recv_if);
int batadv_recv_ucast_frag_packet(struct sk_buff *skb, int batadv_recv_ucast_frag_packet(struct sk_buff *skb,
struct hard_iface *recv_if); struct batadv_hard_iface *recv_if);
int batadv_recv_bcast_packet(struct sk_buff *skb, struct hard_iface *recv_if); int batadv_recv_bcast_packet(struct sk_buff *skb,
int batadv_recv_vis_packet(struct sk_buff *skb, struct hard_iface *recv_if); struct batadv_hard_iface *recv_if);
int batadv_recv_tt_query(struct sk_buff *skb, struct hard_iface *recv_if); int batadv_recv_vis_packet(struct sk_buff *skb,
int batadv_recv_roam_adv(struct sk_buff *skb, struct hard_iface *recv_if); struct batadv_hard_iface *recv_if);
struct neigh_node *batadv_find_router(struct bat_priv *bat_priv, int batadv_recv_tt_query(struct sk_buff *skb,
struct orig_node *orig_node, struct batadv_hard_iface *recv_if);
const struct hard_iface *recv_if); int batadv_recv_roam_adv(struct sk_buff *skb,
void batadv_bonding_candidate_del(struct orig_node *orig_node, struct batadv_hard_iface *recv_if);
struct neigh_node *neigh_node); struct batadv_neigh_node *
void batadv_bonding_candidate_add(struct orig_node *orig_node, batadv_find_router(struct batadv_priv *bat_priv,
struct neigh_node *neigh_node); struct batadv_orig_node *orig_node,
void batadv_bonding_save_primary(const struct orig_node *orig_node, const struct batadv_hard_iface *recv_if);
struct orig_node *orig_neigh_node, void batadv_bonding_candidate_del(struct batadv_orig_node *orig_node,
struct batadv_neigh_node *neigh_node);
void batadv_bonding_candidate_add(struct batadv_orig_node *orig_node,
struct batadv_neigh_node *neigh_node);
void batadv_bonding_save_primary(const struct batadv_orig_node *orig_node,
struct batadv_orig_node *orig_neigh_node,
const struct batadv_ogm_packet const struct batadv_ogm_packet
*batman_ogm_packet); *batman_ogm_packet);
int batadv_window_protected(struct bat_priv *bat_priv, int32_t seq_num_diff, int batadv_window_protected(struct batadv_priv *bat_priv, int32_t seq_num_diff,
unsigned long *last_reset); unsigned long *last_reset);
#endif /* _NET_BATMAN_ADV_ROUTING_H_ */ #endif /* _NET_BATMAN_ADV_ROUTING_H_ */
...@@ -32,7 +32,8 @@ static void batadv_send_outstanding_bcast_packet(struct work_struct *work); ...@@ -32,7 +32,8 @@ static void batadv_send_outstanding_bcast_packet(struct work_struct *work);
/* send out an already prepared packet to the given address via the /* send out an already prepared packet to the given address via the
* specified batman interface * specified batman interface
*/ */
int batadv_send_skb_packet(struct sk_buff *skb, struct hard_iface *hard_iface, int batadv_send_skb_packet(struct sk_buff *skb,
struct batadv_hard_iface *hard_iface,
const uint8_t *dst_addr) const uint8_t *dst_addr)
{ {
struct ethhdr *ethhdr; struct ethhdr *ethhdr;
...@@ -76,9 +77,9 @@ int batadv_send_skb_packet(struct sk_buff *skb, struct hard_iface *hard_iface, ...@@ -76,9 +77,9 @@ int batadv_send_skb_packet(struct sk_buff *skb, struct hard_iface *hard_iface,
return NET_XMIT_DROP; return NET_XMIT_DROP;
} }
void batadv_schedule_bat_ogm(struct hard_iface *hard_iface) void batadv_schedule_bat_ogm(struct batadv_hard_iface *hard_iface)
{ {
struct bat_priv *bat_priv = netdev_priv(hard_iface->soft_iface); struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface);
if ((hard_iface->if_status == BATADV_IF_NOT_IN_USE) || if ((hard_iface->if_status == BATADV_IF_NOT_IN_USE) ||
(hard_iface->if_status == BATADV_IF_TO_BE_REMOVED)) (hard_iface->if_status == BATADV_IF_TO_BE_REMOVED))
...@@ -96,7 +97,7 @@ void batadv_schedule_bat_ogm(struct hard_iface *hard_iface) ...@@ -96,7 +97,7 @@ void batadv_schedule_bat_ogm(struct hard_iface *hard_iface)
bat_priv->bat_algo_ops->bat_ogm_schedule(hard_iface); bat_priv->bat_algo_ops->bat_ogm_schedule(hard_iface);
} }
static void batadv_forw_packet_free(struct forw_packet *forw_packet) static void batadv_forw_packet_free(struct batadv_forw_packet *forw_packet)
{ {
if (forw_packet->skb) if (forw_packet->skb)
kfree_skb(forw_packet->skb); kfree_skb(forw_packet->skb);
...@@ -105,9 +106,10 @@ static void batadv_forw_packet_free(struct forw_packet *forw_packet) ...@@ -105,9 +106,10 @@ static void batadv_forw_packet_free(struct forw_packet *forw_packet)
kfree(forw_packet); kfree(forw_packet);
} }
static void _batadv_add_bcast_packet_to_list(struct bat_priv *bat_priv, static void
struct forw_packet *forw_packet, _batadv_add_bcast_packet_to_list(struct batadv_priv *bat_priv,
unsigned long send_time) struct batadv_forw_packet *forw_packet,
unsigned long send_time)
{ {
INIT_HLIST_NODE(&forw_packet->list); INIT_HLIST_NODE(&forw_packet->list);
...@@ -132,12 +134,12 @@ static void _batadv_add_bcast_packet_to_list(struct bat_priv *bat_priv, ...@@ -132,12 +134,12 @@ static void _batadv_add_bcast_packet_to_list(struct bat_priv *bat_priv,
* The skb is not consumed, so the caller should make sure that the * The skb is not consumed, so the caller should make sure that the
* skb is freed. * skb is freed.
*/ */
int batadv_add_bcast_packet_to_list(struct bat_priv *bat_priv, int batadv_add_bcast_packet_to_list(struct batadv_priv *bat_priv,
const struct sk_buff *skb, const struct sk_buff *skb,
unsigned long delay) unsigned long delay)
{ {
struct hard_iface *primary_if = NULL; struct batadv_hard_iface *primary_if = NULL;
struct forw_packet *forw_packet; struct batadv_forw_packet *forw_packet;
struct batadv_bcast_packet *bcast_packet; struct batadv_bcast_packet *bcast_packet;
struct sk_buff *newskb; struct sk_buff *newskb;
...@@ -187,14 +189,18 @@ int batadv_add_bcast_packet_to_list(struct bat_priv *bat_priv, ...@@ -187,14 +189,18 @@ int batadv_add_bcast_packet_to_list(struct bat_priv *bat_priv,
static void batadv_send_outstanding_bcast_packet(struct work_struct *work) static void batadv_send_outstanding_bcast_packet(struct work_struct *work)
{ {
struct hard_iface *hard_iface; struct batadv_hard_iface *hard_iface;
struct delayed_work *delayed_work = struct delayed_work *delayed_work =
container_of(work, struct delayed_work, work); container_of(work, struct delayed_work, work);
struct forw_packet *forw_packet = struct batadv_forw_packet *forw_packet;
container_of(delayed_work, struct forw_packet, delayed_work);
struct sk_buff *skb1; struct sk_buff *skb1;
struct net_device *soft_iface = forw_packet->if_incoming->soft_iface; struct net_device *soft_iface;
struct bat_priv *bat_priv = netdev_priv(soft_iface); struct batadv_priv *bat_priv;
forw_packet = container_of(delayed_work, struct batadv_forw_packet,
delayed_work);
soft_iface = forw_packet->if_incoming->soft_iface;
bat_priv = netdev_priv(soft_iface);
spin_lock_bh(&bat_priv->forw_bcast_list_lock); spin_lock_bh(&bat_priv->forw_bcast_list_lock);
hlist_del(&forw_packet->list); hlist_del(&forw_packet->list);
...@@ -235,10 +241,11 @@ void batadv_send_outstanding_bat_ogm_packet(struct work_struct *work) ...@@ -235,10 +241,11 @@ void batadv_send_outstanding_bat_ogm_packet(struct work_struct *work)
{ {
struct delayed_work *delayed_work = struct delayed_work *delayed_work =
container_of(work, struct delayed_work, work); container_of(work, struct delayed_work, work);
struct forw_packet *forw_packet = struct batadv_forw_packet *forw_packet;
container_of(delayed_work, struct forw_packet, delayed_work); struct batadv_priv *bat_priv;
struct bat_priv *bat_priv;
forw_packet = container_of(delayed_work, struct batadv_forw_packet,
delayed_work);
bat_priv = netdev_priv(forw_packet->if_incoming->soft_iface); bat_priv = netdev_priv(forw_packet->if_incoming->soft_iface);
spin_lock_bh(&bat_priv->forw_bat_list_lock); spin_lock_bh(&bat_priv->forw_bat_list_lock);
hlist_del(&forw_packet->list); hlist_del(&forw_packet->list);
...@@ -264,10 +271,11 @@ void batadv_send_outstanding_bat_ogm_packet(struct work_struct *work) ...@@ -264,10 +271,11 @@ void batadv_send_outstanding_bat_ogm_packet(struct work_struct *work)
batadv_forw_packet_free(forw_packet); batadv_forw_packet_free(forw_packet);
} }
void batadv_purge_outstanding_packets(struct bat_priv *bat_priv, void
const struct hard_iface *hard_iface) batadv_purge_outstanding_packets(struct batadv_priv *bat_priv,
const struct batadv_hard_iface *hard_iface)
{ {
struct forw_packet *forw_packet; struct batadv_forw_packet *forw_packet;
struct hlist_node *tmp_node, *safe_tmp_node; struct hlist_node *tmp_node, *safe_tmp_node;
bool pending; bool pending;
......
...@@ -20,14 +20,16 @@ ...@@ -20,14 +20,16 @@
#ifndef _NET_BATMAN_ADV_SEND_H_ #ifndef _NET_BATMAN_ADV_SEND_H_
#define _NET_BATMAN_ADV_SEND_H_ #define _NET_BATMAN_ADV_SEND_H_
int batadv_send_skb_packet(struct sk_buff *skb, struct hard_iface *hard_iface, int batadv_send_skb_packet(struct sk_buff *skb,
struct batadv_hard_iface *hard_iface,
const uint8_t *dst_addr); const uint8_t *dst_addr);
void batadv_schedule_bat_ogm(struct hard_iface *hard_iface); void batadv_schedule_bat_ogm(struct batadv_hard_iface *hard_iface);
int batadv_add_bcast_packet_to_list(struct bat_priv *bat_priv, int batadv_add_bcast_packet_to_list(struct batadv_priv *bat_priv,
const struct sk_buff *skb, const struct sk_buff *skb,
unsigned long delay); unsigned long delay);
void batadv_send_outstanding_bat_ogm_packet(struct work_struct *work); void batadv_send_outstanding_bat_ogm_packet(struct work_struct *work);
void batadv_purge_outstanding_packets(struct bat_priv *bat_priv, void
const struct hard_iface *hard_iface); batadv_purge_outstanding_packets(struct batadv_priv *bat_priv,
const struct batadv_hard_iface *hard_iface);
#endif /* _NET_BATMAN_ADV_SEND_H_ */ #endif /* _NET_BATMAN_ADV_SEND_H_ */
...@@ -92,13 +92,13 @@ static int batadv_interface_release(struct net_device *dev) ...@@ -92,13 +92,13 @@ static int batadv_interface_release(struct net_device *dev)
static struct net_device_stats *batadv_interface_stats(struct net_device *dev) static struct net_device_stats *batadv_interface_stats(struct net_device *dev)
{ {
struct bat_priv *bat_priv = netdev_priv(dev); struct batadv_priv *bat_priv = netdev_priv(dev);
return &bat_priv->stats; return &bat_priv->stats;
} }
static int batadv_interface_set_mac_addr(struct net_device *dev, void *p) static int batadv_interface_set_mac_addr(struct net_device *dev, void *p)
{ {
struct bat_priv *bat_priv = netdev_priv(dev); struct batadv_priv *bat_priv = netdev_priv(dev);
struct sockaddr *addr = p; struct sockaddr *addr = p;
if (!is_valid_ether_addr(addr->sa_data)) if (!is_valid_ether_addr(addr->sa_data))
...@@ -131,8 +131,8 @@ static int batadv_interface_tx(struct sk_buff *skb, ...@@ -131,8 +131,8 @@ static int batadv_interface_tx(struct sk_buff *skb,
struct net_device *soft_iface) struct net_device *soft_iface)
{ {
struct ethhdr *ethhdr = (struct ethhdr *)skb->data; struct ethhdr *ethhdr = (struct ethhdr *)skb->data;
struct bat_priv *bat_priv = netdev_priv(soft_iface); struct batadv_priv *bat_priv = netdev_priv(soft_iface);
struct hard_iface *primary_if = NULL; struct batadv_hard_iface *primary_if = NULL;
struct batadv_bcast_packet *bcast_packet; struct batadv_bcast_packet *bcast_packet;
struct vlan_ethhdr *vhdr; struct vlan_ethhdr *vhdr;
__be16 ethertype = __constant_htons(BATADV_ETH_P_BATMAN); __be16 ethertype = __constant_htons(BATADV_ETH_P_BATMAN);
...@@ -260,10 +260,10 @@ static int batadv_interface_tx(struct sk_buff *skb, ...@@ -260,10 +260,10 @@ static int batadv_interface_tx(struct sk_buff *skb,
} }
void batadv_interface_rx(struct net_device *soft_iface, void batadv_interface_rx(struct net_device *soft_iface,
struct sk_buff *skb, struct hard_iface *recv_if, struct sk_buff *skb, struct batadv_hard_iface *recv_if,
int hdr_size) int hdr_size)
{ {
struct bat_priv *bat_priv = netdev_priv(soft_iface); struct batadv_priv *bat_priv = netdev_priv(soft_iface);
struct ethhdr *ethhdr; struct ethhdr *ethhdr;
struct vlan_ethhdr *vhdr; struct vlan_ethhdr *vhdr;
short vid __maybe_unused = -1; short vid __maybe_unused = -1;
...@@ -338,7 +338,7 @@ static const struct net_device_ops batadv_netdev_ops = { ...@@ -338,7 +338,7 @@ static const struct net_device_ops batadv_netdev_ops = {
static void batadv_interface_setup(struct net_device *dev) static void batadv_interface_setup(struct net_device *dev)
{ {
struct bat_priv *priv = netdev_priv(dev); struct batadv_priv *priv = netdev_priv(dev);
ether_setup(dev); ether_setup(dev);
...@@ -364,7 +364,7 @@ static void batadv_interface_setup(struct net_device *dev) ...@@ -364,7 +364,7 @@ static void batadv_interface_setup(struct net_device *dev)
struct net_device *batadv_softif_create(const char *name) struct net_device *batadv_softif_create(const char *name)
{ {
struct net_device *soft_iface; struct net_device *soft_iface;
struct bat_priv *bat_priv; struct batadv_priv *bat_priv;
int ret; int ret;
size_t cnt_len = sizeof(uint64_t) * BATADV_CNT_NUM; size_t cnt_len = sizeof(uint64_t) * BATADV_CNT_NUM;
...@@ -539,7 +539,7 @@ static void batadv_get_ethtool_stats(struct net_device *dev, ...@@ -539,7 +539,7 @@ static void batadv_get_ethtool_stats(struct net_device *dev,
struct ethtool_stats *stats, struct ethtool_stats *stats,
uint64_t *data) uint64_t *data)
{ {
struct bat_priv *bat_priv = netdev_priv(dev); struct batadv_priv *bat_priv = netdev_priv(dev);
int i; int i;
for (i = 0; i < BATADV_CNT_NUM; i++) for (i = 0; i < BATADV_CNT_NUM; i++)
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
int batadv_skb_head_push(struct sk_buff *skb, unsigned int len); int batadv_skb_head_push(struct sk_buff *skb, unsigned int len);
void batadv_interface_rx(struct net_device *soft_iface, struct sk_buff *skb, void batadv_interface_rx(struct net_device *soft_iface, struct sk_buff *skb,
struct hard_iface *recv_if, int hdr_size); struct batadv_hard_iface *recv_if, int hdr_size);
struct net_device *batadv_softif_create(const char *name); struct net_device *batadv_softif_create(const char *name);
void batadv_softif_destroy(struct net_device *soft_iface); void batadv_softif_destroy(struct net_device *soft_iface);
int batadv_softif_is_valid(const struct net_device *net_dev); int batadv_softif_is_valid(const struct net_device *net_dev);
......
This diff is collapsed.
...@@ -21,42 +21,43 @@ ...@@ -21,42 +21,43 @@
#define _NET_BATMAN_ADV_TRANSLATION_TABLE_H_ #define _NET_BATMAN_ADV_TRANSLATION_TABLE_H_
int batadv_tt_len(int changes_num); int batadv_tt_len(int changes_num);
int batadv_tt_init(struct bat_priv *bat_priv); int batadv_tt_init(struct batadv_priv *bat_priv);
void batadv_tt_local_add(struct net_device *soft_iface, const uint8_t *addr, void batadv_tt_local_add(struct net_device *soft_iface, const uint8_t *addr,
int ifindex); int ifindex);
void batadv_tt_local_remove(struct bat_priv *bat_priv, void batadv_tt_local_remove(struct batadv_priv *bat_priv,
const uint8_t *addr, const char *message, const uint8_t *addr, const char *message,
bool roaming); bool roaming);
int batadv_tt_local_seq_print_text(struct seq_file *seq, void *offset); int batadv_tt_local_seq_print_text(struct seq_file *seq, void *offset);
void batadv_tt_global_add_orig(struct bat_priv *bat_priv, void batadv_tt_global_add_orig(struct batadv_priv *bat_priv,
struct orig_node *orig_node, struct batadv_orig_node *orig_node,
const unsigned char *tt_buff, int tt_buff_len); const unsigned char *tt_buff, int tt_buff_len);
int batadv_tt_global_add(struct bat_priv *bat_priv, struct orig_node *orig_node, int batadv_tt_global_add(struct batadv_priv *bat_priv,
struct batadv_orig_node *orig_node,
const unsigned char *addr, uint8_t flags, const unsigned char *addr, uint8_t flags,
uint8_t ttvn); uint8_t ttvn);
int batadv_tt_global_seq_print_text(struct seq_file *seq, void *offset); int batadv_tt_global_seq_print_text(struct seq_file *seq, void *offset);
void batadv_tt_global_del_orig(struct bat_priv *bat_priv, void batadv_tt_global_del_orig(struct batadv_priv *bat_priv,
struct orig_node *orig_node, struct batadv_orig_node *orig_node,
const char *message); const char *message);
struct orig_node *batadv_transtable_search(struct bat_priv *bat_priv, struct batadv_orig_node *batadv_transtable_search(struct batadv_priv *bat_priv,
const uint8_t *src, const uint8_t *src,
const uint8_t *addr); const uint8_t *addr);
void batadv_tt_free(struct bat_priv *bat_priv); void batadv_tt_free(struct batadv_priv *bat_priv);
bool batadv_send_tt_response(struct bat_priv *bat_priv, bool batadv_send_tt_response(struct batadv_priv *bat_priv,
struct batadv_tt_query_packet *tt_request); struct batadv_tt_query_packet *tt_request);
bool batadv_is_my_client(struct bat_priv *bat_priv, const uint8_t *addr); bool batadv_is_my_client(struct batadv_priv *bat_priv, const uint8_t *addr);
void batadv_handle_tt_response(struct bat_priv *bat_priv, void batadv_handle_tt_response(struct batadv_priv *bat_priv,
struct batadv_tt_query_packet *tt_response); struct batadv_tt_query_packet *tt_response);
bool batadv_is_ap_isolated(struct bat_priv *bat_priv, uint8_t *src, bool batadv_is_ap_isolated(struct batadv_priv *bat_priv, uint8_t *src,
uint8_t *dst); uint8_t *dst);
void batadv_tt_update_orig(struct bat_priv *bat_priv, void batadv_tt_update_orig(struct batadv_priv *bat_priv,
struct orig_node *orig_node, struct batadv_orig_node *orig_node,
const unsigned char *tt_buff, uint8_t tt_num_changes, const unsigned char *tt_buff, uint8_t tt_num_changes,
uint8_t ttvn, uint16_t tt_crc); uint8_t ttvn, uint16_t tt_crc);
int batadv_tt_append_diff(struct bat_priv *bat_priv, int batadv_tt_append_diff(struct batadv_priv *bat_priv,
unsigned char **packet_buff, int *packet_buff_len, unsigned char **packet_buff, int *packet_buff_len,
int packet_min_len); int packet_min_len);
bool batadv_tt_global_client_is_roaming(struct bat_priv *bat_priv, bool batadv_tt_global_client_is_roaming(struct batadv_priv *bat_priv,
uint8_t *addr); uint8_t *addr);
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
(ETH_HLEN + max(sizeof(struct batadv_unicast_packet), \ (ETH_HLEN + max(sizeof(struct batadv_unicast_packet), \
sizeof(struct batadv_bcast_packet))) sizeof(struct batadv_bcast_packet)))
struct hard_iface { struct batadv_hard_iface {
struct list_head list; struct list_head list;
int16_t if_num; int16_t if_num;
char if_status; char if_status;
...@@ -44,7 +44,7 @@ struct hard_iface { ...@@ -44,7 +44,7 @@ struct hard_iface {
struct rcu_head rcu; struct rcu_head rcu;
}; };
/* orig_node - structure for orig_list maintaining nodes of mesh /* batadv_orig_node - structure for orig_list maintaining nodes of mesh
* @primary_addr: hosts primary interface address * @primary_addr: hosts primary interface address
* @last_seen: when last packet from this node was received * @last_seen: when last packet from this node was received
* @bcast_seqno_reset: time when the broadcast seqno window was reset * @bcast_seqno_reset: time when the broadcast seqno window was reset
...@@ -58,10 +58,10 @@ struct hard_iface { ...@@ -58,10 +58,10 @@ struct hard_iface {
* @candidates: how many candidates are available * @candidates: how many candidates are available
* @selected: next bonding candidate * @selected: next bonding candidate
*/ */
struct orig_node { struct batadv_orig_node {
uint8_t orig[ETH_ALEN]; uint8_t orig[ETH_ALEN];
uint8_t primary_addr[ETH_ALEN]; uint8_t primary_addr[ETH_ALEN];
struct neigh_node __rcu *router; /* rcu protected pointer */ struct batadv_neigh_node __rcu *router; /* rcu protected pointer */
unsigned long *bcast_own; unsigned long *bcast_own;
uint8_t *bcast_own_sum; uint8_t *bcast_own_sum;
unsigned long last_seen; unsigned long last_seen;
...@@ -93,7 +93,7 @@ struct orig_node { ...@@ -93,7 +93,7 @@ struct orig_node {
atomic_t refcount; atomic_t refcount;
struct rcu_head rcu; struct rcu_head rcu;
struct hlist_node hash_entry; struct hlist_node hash_entry;
struct bat_priv *bat_priv; struct batadv_priv *bat_priv;
unsigned long last_frag_packet; unsigned long last_frag_packet;
/* ogm_cnt_lock protects: bcast_own, bcast_own_sum, /* ogm_cnt_lock protects: bcast_own, bcast_own_sum,
* neigh_node->real_bits, neigh_node->real_packet_count * neigh_node->real_bits, neigh_node->real_packet_count
...@@ -106,18 +106,18 @@ struct orig_node { ...@@ -106,18 +106,18 @@ struct orig_node {
struct list_head bond_list; struct list_head bond_list;
}; };
struct gw_node { struct batadv_gw_node {
struct hlist_node list; struct hlist_node list;
struct orig_node *orig_node; struct batadv_orig_node *orig_node;
unsigned long deleted; unsigned long deleted;
atomic_t refcount; atomic_t refcount;
struct rcu_head rcu; struct rcu_head rcu;
}; };
/* neigh_node /* batadv_neigh_node
* @last_seen: when last packet via this neighbor was received * @last_seen: when last packet via this neighbor was received
*/ */
struct neigh_node { struct batadv_neigh_node {
struct hlist_node list; struct hlist_node list;
uint8_t addr[ETH_ALEN]; uint8_t addr[ETH_ALEN];
uint8_t real_packet_count; uint8_t real_packet_count;
...@@ -130,13 +130,13 @@ struct neigh_node { ...@@ -130,13 +130,13 @@ struct neigh_node {
DECLARE_BITMAP(real_bits, BATADV_TQ_LOCAL_WINDOW_SIZE); DECLARE_BITMAP(real_bits, BATADV_TQ_LOCAL_WINDOW_SIZE);
atomic_t refcount; atomic_t refcount;
struct rcu_head rcu; struct rcu_head rcu;
struct orig_node *orig_node; struct batadv_orig_node *orig_node;
struct hard_iface *if_incoming; struct batadv_hard_iface *if_incoming;
spinlock_t lq_update_lock; /* protects: tq_recv, tq_index */ spinlock_t lq_update_lock; /* protects: tq_recv, tq_index */
}; };
#ifdef CONFIG_BATMAN_ADV_BLA #ifdef CONFIG_BATMAN_ADV_BLA
struct bcast_duplist_entry { struct batadv_bcast_duplist_entry {
uint8_t orig[ETH_ALEN]; uint8_t orig[ETH_ALEN];
uint16_t crc; uint16_t crc;
unsigned long entrytime; unsigned long entrytime;
...@@ -159,7 +159,7 @@ enum batadv_counters { ...@@ -159,7 +159,7 @@ enum batadv_counters {
BATADV_CNT_NUM, BATADV_CNT_NUM,
}; };
struct bat_priv { struct batadv_priv {
atomic_t mesh_state; atomic_t mesh_state;
struct net_device_stats stats; struct net_device_stats stats;
uint64_t __percpu *bat_counters; /* Per cpu counters */ uint64_t __percpu *bat_counters; /* Per cpu counters */
...@@ -190,7 +190,7 @@ struct bat_priv { ...@@ -190,7 +190,7 @@ struct bat_priv {
*/ */
bool tt_poss_change; bool tt_poss_change;
char num_ifaces; char num_ifaces;
struct debug_log *debug_log; struct batadv_debug_log *debug_log;
struct kobject *mesh_obj; struct kobject *mesh_obj;
struct dentry *debug_dir; struct dentry *debug_dir;
struct hlist_head forw_bat_list; struct hlist_head forw_bat_list;
...@@ -209,7 +209,7 @@ struct bat_priv { ...@@ -209,7 +209,7 @@ struct bat_priv {
struct list_head tt_roam_list; struct list_head tt_roam_list;
struct batadv_hashtable *vis_hash; struct batadv_hashtable *vis_hash;
#ifdef CONFIG_BATMAN_ADV_BLA #ifdef CONFIG_BATMAN_ADV_BLA
struct bcast_duplist_entry bcast_duplist[BATADV_DUPLIST_SIZE]; struct batadv_bcast_duplist_entry bcast_duplist[BATADV_DUPLIST_SIZE];
int bcast_duplist_curr; int bcast_duplist_curr;
struct batadv_bla_claim_dst claim_dest; struct batadv_bla_claim_dst claim_dest;
#endif #endif
...@@ -231,29 +231,29 @@ struct bat_priv { ...@@ -231,29 +231,29 @@ struct bat_priv {
struct delayed_work orig_work; struct delayed_work orig_work;
struct delayed_work vis_work; struct delayed_work vis_work;
struct delayed_work bla_work; struct delayed_work bla_work;
struct gw_node __rcu *curr_gw; /* rcu protected pointer */ struct batadv_gw_node __rcu *curr_gw; /* rcu protected pointer */
atomic_t gw_reselect; atomic_t gw_reselect;
struct hard_iface __rcu *primary_if; /* rcu protected pointer */ struct batadv_hard_iface __rcu *primary_if; /* rcu protected pointer */
struct vis_info *my_vis_info; struct batadv_vis_info *my_vis_info;
struct bat_algo_ops *bat_algo_ops; struct batadv_algo_ops *bat_algo_ops;
}; };
struct socket_client { struct batadv_socket_client {
struct list_head queue_list; struct list_head queue_list;
unsigned int queue_len; unsigned int queue_len;
unsigned char index; unsigned char index;
spinlock_t lock; /* protects queue_list, queue_len, index */ spinlock_t lock; /* protects queue_list, queue_len, index */
wait_queue_head_t queue_wait; wait_queue_head_t queue_wait;
struct bat_priv *bat_priv; struct batadv_priv *bat_priv;
}; };
struct socket_packet { struct batadv_socket_packet {
struct list_head list; struct list_head list;
size_t icmp_len; size_t icmp_len;
struct batadv_icmp_packet_rr icmp_packet; struct batadv_icmp_packet_rr icmp_packet;
}; };
struct tt_common_entry { struct batadv_tt_common_entry {
uint8_t addr[ETH_ALEN]; uint8_t addr[ETH_ALEN];
struct hlist_node hash_entry; struct hlist_node hash_entry;
uint16_t flags; uint16_t flags;
...@@ -261,31 +261,31 @@ struct tt_common_entry { ...@@ -261,31 +261,31 @@ struct tt_common_entry {
struct rcu_head rcu; struct rcu_head rcu;
}; };
struct tt_local_entry { struct batadv_tt_local_entry {
struct tt_common_entry common; struct batadv_tt_common_entry common;
unsigned long last_seen; unsigned long last_seen;
}; };
struct tt_global_entry { struct batadv_tt_global_entry {
struct tt_common_entry common; struct batadv_tt_common_entry common;
struct hlist_head orig_list; struct hlist_head orig_list;
spinlock_t list_lock; /* protects the list */ spinlock_t list_lock; /* protects the list */
unsigned long roam_at; /* time at which TT_GLOBAL_ROAM was set */ unsigned long roam_at; /* time at which TT_GLOBAL_ROAM was set */
}; };
struct tt_orig_list_entry { struct batadv_tt_orig_list_entry {
struct orig_node *orig_node; struct batadv_orig_node *orig_node;
uint8_t ttvn; uint8_t ttvn;
struct rcu_head rcu; struct rcu_head rcu;
struct hlist_node list; struct hlist_node list;
}; };
#ifdef CONFIG_BATMAN_ADV_BLA #ifdef CONFIG_BATMAN_ADV_BLA
struct backbone_gw { struct batadv_backbone_gw {
uint8_t orig[ETH_ALEN]; uint8_t orig[ETH_ALEN];
short vid; /* used VLAN ID */ short vid; /* used VLAN ID */
struct hlist_node hash_entry; struct hlist_node hash_entry;
struct bat_priv *bat_priv; struct batadv_priv *bat_priv;
unsigned long lasttime; /* last time we heard of this backbone gw */ unsigned long lasttime; /* last time we heard of this backbone gw */
atomic_t request_sent; atomic_t request_sent;
atomic_t refcount; atomic_t refcount;
...@@ -293,10 +293,10 @@ struct backbone_gw { ...@@ -293,10 +293,10 @@ struct backbone_gw {
uint16_t crc; /* crc checksum over all claims */ uint16_t crc; /* crc checksum over all claims */
}; };
struct claim { struct batadv_claim {
uint8_t addr[ETH_ALEN]; uint8_t addr[ETH_ALEN];
short vid; short vid;
struct backbone_gw *backbone_gw; struct batadv_backbone_gw *backbone_gw;
unsigned long lasttime; /* last time we heard of claim (locals only) */ unsigned long lasttime; /* last time we heard of claim (locals only) */
struct rcu_head rcu; struct rcu_head rcu;
atomic_t refcount; atomic_t refcount;
...@@ -304,18 +304,18 @@ struct claim { ...@@ -304,18 +304,18 @@ struct claim {
}; };
#endif #endif
struct tt_change_node { struct batadv_tt_change_node {
struct list_head list; struct list_head list;
struct batadv_tt_change change; struct batadv_tt_change change;
}; };
struct tt_req_node { struct batadv_tt_req_node {
uint8_t addr[ETH_ALEN]; uint8_t addr[ETH_ALEN];
unsigned long issued_at; unsigned long issued_at;
struct list_head list; struct list_head list;
}; };
struct tt_roam_node { struct batadv_tt_roam_node {
uint8_t addr[ETH_ALEN]; uint8_t addr[ETH_ALEN];
atomic_t counter; atomic_t counter;
unsigned long first_time; unsigned long first_time;
...@@ -325,7 +325,7 @@ struct tt_roam_node { ...@@ -325,7 +325,7 @@ struct tt_roam_node {
/* forw_packet - structure for forw_list maintaining packets to be /* forw_packet - structure for forw_list maintaining packets to be
* send/forwarded * send/forwarded
*/ */
struct forw_packet { struct batadv_forw_packet {
struct hlist_node list; struct hlist_node list;
unsigned long send_time; unsigned long send_time;
uint8_t own; uint8_t own;
...@@ -334,20 +334,20 @@ struct forw_packet { ...@@ -334,20 +334,20 @@ struct forw_packet {
uint32_t direct_link_flags; uint32_t direct_link_flags;
uint8_t num_packets; uint8_t num_packets;
struct delayed_work delayed_work; struct delayed_work delayed_work;
struct hard_iface *if_incoming; struct batadv_hard_iface *if_incoming;
}; };
/* While scanning for vis-entries of a particular vis-originator /* While scanning for vis-entries of a particular vis-originator
* this list collects its interfaces to create a subgraph/cluster * this list collects its interfaces to create a subgraph/cluster
* out of them later * out of them later
*/ */
struct if_list_entry { struct batadv_if_list_entry {
uint8_t addr[ETH_ALEN]; uint8_t addr[ETH_ALEN];
bool primary; bool primary;
struct hlist_node list; struct hlist_node list;
}; };
struct debug_log { struct batadv_debug_log {
char log_buff[BATADV_LOG_BUF_LEN]; char log_buff[BATADV_LOG_BUF_LEN];
unsigned long log_start; unsigned long log_start;
unsigned long log_end; unsigned long log_end;
...@@ -355,13 +355,13 @@ struct debug_log { ...@@ -355,13 +355,13 @@ struct debug_log {
wait_queue_head_t queue_wait; wait_queue_head_t queue_wait;
}; };
struct frag_packet_list_entry { struct batadv_frag_packet_list_entry {
struct list_head list; struct list_head list;
uint16_t seqno; uint16_t seqno;
struct sk_buff *skb; struct sk_buff *skb;
}; };
struct vis_info { struct batadv_vis_info {
unsigned long first_seen; unsigned long first_seen;
/* list of server-neighbors we received a vis-packet /* list of server-neighbors we received a vis-packet
* from. we should not reply to them. * from. we should not reply to them.
...@@ -370,40 +370,40 @@ struct vis_info { ...@@ -370,40 +370,40 @@ struct vis_info {
struct list_head send_list; struct list_head send_list;
struct kref refcount; struct kref refcount;
struct hlist_node hash_entry; struct hlist_node hash_entry;
struct bat_priv *bat_priv; struct batadv_priv *bat_priv;
/* this packet might be part of the vis send queue. */ /* this packet might be part of the vis send queue. */
struct sk_buff *skb_packet; struct sk_buff *skb_packet;
/* vis_info may follow here */ /* vis_info may follow here */
} __packed; } __packed;
struct vis_info_entry { struct batadv_vis_info_entry {
uint8_t src[ETH_ALEN]; uint8_t src[ETH_ALEN];
uint8_t dest[ETH_ALEN]; uint8_t dest[ETH_ALEN];
uint8_t quality; /* quality = 0 client */ uint8_t quality; /* quality = 0 client */
} __packed; } __packed;
struct recvlist_node { struct batadv_recvlist_node {
struct list_head list; struct list_head list;
uint8_t mac[ETH_ALEN]; uint8_t mac[ETH_ALEN];
}; };
struct bat_algo_ops { struct batadv_algo_ops {
struct hlist_node list; struct hlist_node list;
char *name; char *name;
/* init routing info when hard-interface is enabled */ /* init routing info when hard-interface is enabled */
int (*bat_iface_enable)(struct hard_iface *hard_iface); int (*bat_iface_enable)(struct batadv_hard_iface *hard_iface);
/* de-init routing info when hard-interface is disabled */ /* de-init routing info when hard-interface is disabled */
void (*bat_iface_disable)(struct hard_iface *hard_iface); void (*bat_iface_disable)(struct batadv_hard_iface *hard_iface);
/* (re-)init mac addresses of the protocol information /* (re-)init mac addresses of the protocol information
* belonging to this hard-interface * belonging to this hard-interface
*/ */
void (*bat_iface_update_mac)(struct hard_iface *hard_iface); void (*bat_iface_update_mac)(struct batadv_hard_iface *hard_iface);
/* called when primary interface is selected / changed */ /* called when primary interface is selected / changed */
void (*bat_primary_iface_set)(struct hard_iface *hard_iface); void (*bat_primary_iface_set)(struct batadv_hard_iface *hard_iface);
/* prepare a new outgoing OGM for the send queue */ /* prepare a new outgoing OGM for the send queue */
void (*bat_ogm_schedule)(struct hard_iface *hard_iface); void (*bat_ogm_schedule)(struct batadv_hard_iface *hard_iface);
/* send scheduled OGM */ /* send scheduled OGM */
void (*bat_ogm_emit)(struct forw_packet *forw_packet); void (*bat_ogm_emit)(struct batadv_forw_packet *forw_packet);
}; };
#endif /* _NET_BATMAN_ADV_TYPES_H_ */ #endif /* _NET_BATMAN_ADV_TYPES_H_ */
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
static struct sk_buff * static struct sk_buff *
batadv_frag_merge_packet(struct list_head *head, batadv_frag_merge_packet(struct list_head *head,
struct frag_packet_list_entry *tfp, struct batadv_frag_packet_list_entry *tfp,
struct sk_buff *skb) struct sk_buff *skb)
{ {
struct batadv_unicast_frag_packet *up; struct batadv_unicast_frag_packet *up;
...@@ -80,7 +80,7 @@ batadv_frag_merge_packet(struct list_head *head, ...@@ -80,7 +80,7 @@ batadv_frag_merge_packet(struct list_head *head,
static void batadv_frag_create_entry(struct list_head *head, static void batadv_frag_create_entry(struct list_head *head,
struct sk_buff *skb) struct sk_buff *skb)
{ {
struct frag_packet_list_entry *tfp; struct batadv_frag_packet_list_entry *tfp;
struct batadv_unicast_frag_packet *up; struct batadv_unicast_frag_packet *up;
up = (struct batadv_unicast_frag_packet *)skb->data; up = (struct batadv_unicast_frag_packet *)skb->data;
...@@ -98,7 +98,7 @@ static void batadv_frag_create_entry(struct list_head *head, ...@@ -98,7 +98,7 @@ static void batadv_frag_create_entry(struct list_head *head,
static int batadv_frag_create_buffer(struct list_head *head) static int batadv_frag_create_buffer(struct list_head *head)
{ {
int i; int i;
struct frag_packet_list_entry *tfp; struct batadv_frag_packet_list_entry *tfp;
for (i = 0; i < BATADV_FRAG_BUFFER_SIZE; i++) { for (i = 0; i < BATADV_FRAG_BUFFER_SIZE; i++) {
tfp = kmalloc(sizeof(*tfp), GFP_ATOMIC); tfp = kmalloc(sizeof(*tfp), GFP_ATOMIC);
...@@ -115,11 +115,11 @@ static int batadv_frag_create_buffer(struct list_head *head) ...@@ -115,11 +115,11 @@ static int batadv_frag_create_buffer(struct list_head *head)
return 0; return 0;
} }
static struct frag_packet_list_entry * static struct batadv_frag_packet_list_entry *
batadv_frag_search_packet(struct list_head *head, batadv_frag_search_packet(struct list_head *head,
const struct batadv_unicast_frag_packet *up) const struct batadv_unicast_frag_packet *up)
{ {
struct frag_packet_list_entry *tfp; struct batadv_frag_packet_list_entry *tfp;
struct batadv_unicast_frag_packet *tmp_up = NULL; struct batadv_unicast_frag_packet *tmp_up = NULL;
uint16_t search_seqno; uint16_t search_seqno;
...@@ -156,7 +156,7 @@ batadv_frag_search_packet(struct list_head *head, ...@@ -156,7 +156,7 @@ batadv_frag_search_packet(struct list_head *head,
void batadv_frag_list_free(struct list_head *head) void batadv_frag_list_free(struct list_head *head)
{ {
struct frag_packet_list_entry *pf, *tmp_pf; struct batadv_frag_packet_list_entry *pf, *tmp_pf;
if (!list_empty(head)) { if (!list_empty(head)) {
...@@ -175,11 +175,12 @@ void batadv_frag_list_free(struct list_head *head) ...@@ -175,11 +175,12 @@ void batadv_frag_list_free(struct list_head *head)
* or the skb could be reassembled (skb_new will point to the new packet and * or the skb could be reassembled (skb_new will point to the new packet and
* skb was freed) * skb was freed)
*/ */
int batadv_frag_reassemble_skb(struct sk_buff *skb, struct bat_priv *bat_priv, int batadv_frag_reassemble_skb(struct sk_buff *skb,
struct batadv_priv *bat_priv,
struct sk_buff **new_skb) struct sk_buff **new_skb)
{ {
struct orig_node *orig_node; struct batadv_orig_node *orig_node;
struct frag_packet_list_entry *tmp_frag_entry; struct batadv_frag_packet_list_entry *tmp_frag_entry;
int ret = NET_RX_DROP; int ret = NET_RX_DROP;
struct batadv_unicast_frag_packet *unicast_packet; struct batadv_unicast_frag_packet *unicast_packet;
...@@ -219,11 +220,12 @@ int batadv_frag_reassemble_skb(struct sk_buff *skb, struct bat_priv *bat_priv, ...@@ -219,11 +220,12 @@ int batadv_frag_reassemble_skb(struct sk_buff *skb, struct bat_priv *bat_priv,
return ret; return ret;
} }
int batadv_frag_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv, int batadv_frag_send_skb(struct sk_buff *skb, struct batadv_priv *bat_priv,
struct hard_iface *hard_iface, const uint8_t dstaddr[]) struct batadv_hard_iface *hard_iface,
const uint8_t dstaddr[])
{ {
struct batadv_unicast_packet tmp_uc, *unicast_packet; struct batadv_unicast_packet tmp_uc, *unicast_packet;
struct hard_iface *primary_if; struct batadv_hard_iface *primary_if;
struct sk_buff *frag_skb; struct sk_buff *frag_skb;
struct batadv_unicast_frag_packet *frag1, *frag2; struct batadv_unicast_frag_packet *frag1, *frag2;
int uc_hdr_len = sizeof(*unicast_packet); int uc_hdr_len = sizeof(*unicast_packet);
...@@ -286,12 +288,12 @@ int batadv_frag_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv, ...@@ -286,12 +288,12 @@ int batadv_frag_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv,
return ret; return ret;
} }
int batadv_unicast_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv) int batadv_unicast_send_skb(struct sk_buff *skb, struct batadv_priv *bat_priv)
{ {
struct ethhdr *ethhdr = (struct ethhdr *)skb->data; struct ethhdr *ethhdr = (struct ethhdr *)skb->data;
struct batadv_unicast_packet *unicast_packet; struct batadv_unicast_packet *unicast_packet;
struct orig_node *orig_node; struct batadv_orig_node *orig_node;
struct neigh_node *neigh_node; struct batadv_neigh_node *neigh_node;
int data_len = skb->len; int data_len = skb->len;
int ret = 1; int ret = 1;
...@@ -307,12 +309,14 @@ int batadv_unicast_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv) ...@@ -307,12 +309,14 @@ int batadv_unicast_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv)
*/ */
orig_node = batadv_transtable_search(bat_priv, ethhdr->h_source, orig_node = batadv_transtable_search(bat_priv, ethhdr->h_source,
ethhdr->h_dest); ethhdr->h_dest);
find_router: find_router:
/* find_router(): /* find_router():
* - if orig_node is NULL it returns NULL * - if orig_node is NULL it returns NULL
* - increases neigh_nodes refcount if found. * - increases neigh_nodes refcount if found.
*/ */
neigh_node = batadv_find_router(bat_priv, orig_node, NULL); neigh_node = batadv_find_router(bat_priv, orig_node, NULL);
if (!neigh_node) if (!neigh_node)
goto out; goto out;
......
...@@ -25,12 +25,13 @@ ...@@ -25,12 +25,13 @@
#define BATADV_FRAG_TIMEOUT 10000 /* purge frag list entries after time in ms */ #define BATADV_FRAG_TIMEOUT 10000 /* purge frag list entries after time in ms */
#define BATADV_FRAG_BUFFER_SIZE 6 /* number of list elements in buffer */ #define BATADV_FRAG_BUFFER_SIZE 6 /* number of list elements in buffer */
int batadv_frag_reassemble_skb(struct sk_buff *skb, struct bat_priv *bat_priv, int batadv_frag_reassemble_skb(struct sk_buff *skb,
struct batadv_priv *bat_priv,
struct sk_buff **new_skb); struct sk_buff **new_skb);
void batadv_frag_list_free(struct list_head *head); void batadv_frag_list_free(struct list_head *head);
int batadv_unicast_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv); int batadv_unicast_send_skb(struct sk_buff *skb, struct batadv_priv *bat_priv);
int batadv_frag_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv, int batadv_frag_send_skb(struct sk_buff *skb, struct batadv_priv *bat_priv,
struct hard_iface *hard_iface, struct batadv_hard_iface *hard_iface,
const uint8_t dstaddr[]); const uint8_t dstaddr[]);
static inline int batadv_frag_can_reassemble(const struct sk_buff *skb, int mtu) static inline int batadv_frag_can_reassemble(const struct sk_buff *skb, int mtu)
......
This diff is collapsed.
...@@ -24,13 +24,13 @@ ...@@ -24,13 +24,13 @@
#define BATADV_VIS_TIMEOUT 200000 #define BATADV_VIS_TIMEOUT 200000
int batadv_vis_seq_print_text(struct seq_file *seq, void *offset); int batadv_vis_seq_print_text(struct seq_file *seq, void *offset);
void batadv_receive_server_sync_packet(struct bat_priv *bat_priv, void batadv_receive_server_sync_packet(struct batadv_priv *bat_priv,
struct batadv_vis_packet *vis_packet, struct batadv_vis_packet *vis_packet,
int vis_info_len); int vis_info_len);
void batadv_receive_client_update_packet(struct bat_priv *bat_priv, void batadv_receive_client_update_packet(struct batadv_priv *bat_priv,
struct batadv_vis_packet *vis_packet, struct batadv_vis_packet *vis_packet,
int vis_info_len); int vis_info_len);
int batadv_vis_init(struct bat_priv *bat_priv); int batadv_vis_init(struct batadv_priv *bat_priv);
void batadv_vis_quit(struct bat_priv *bat_priv); void batadv_vis_quit(struct batadv_priv *bat_priv);
#endif /* _NET_BATMAN_ADV_VIS_H_ */ #endif /* _NET_BATMAN_ADV_VIS_H_ */
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