Commit 7cf06bc6 authored by Sven Eckelmann's avatar Sven Eckelmann Committed by Antonio Quartulli
Browse files

batman-adv: Prefix gateway-client non-static functions with batadv_



batman-adv can be compiled as part of the kernel instead of an module. In that
case the linker will see all non-static symbols of batman-adv and all other
non-static symbols of the kernel. This could lead to symbol collisions. A
prefix for the batman-adv symbols that defines their private namespace avoids
such a problem.

Reported-by: default avatarDavid Miller <davem@davemloft.net>
Signed-off-by: default avatarSven Eckelmann <sven@narfation.org>
parent 08adf151
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -236,7 +236,7 @@ static int originators_open(struct inode *inode, struct file *file)
static int gateways_open(struct inode *inode, struct file *file)
{
	struct net_device *net_dev = (struct net_device *)inode->i_private;
	return single_open(file, gw_client_seq_print_text, net_dev);
	return single_open(file, batadv_gw_client_seq_print_text, net_dev);
}

static int transtable_global_open(struct inode *inode, struct file *file)
+3 −3
Original line number Diff line number Diff line
@@ -729,7 +729,7 @@ update_tt:
			       ntohs(batman_ogm_packet->tt_crc));

	if (orig_node->gw_flags != batman_ogm_packet->gw_flags)
		gw_node_update(bat_priv, orig_node,
		batadv_gw_node_update(bat_priv, orig_node,
				      batman_ogm_packet->gw_flags);

	orig_node->gw_flags = batman_ogm_packet->gw_flags;
@@ -738,7 +738,7 @@ update_tt:
	if ((orig_node->gw_flags) &&
	    (atomic_read(&bat_priv->gw_mode) == GW_MODE_CLIENT) &&
	    (atomic_read(&bat_priv->gw_sel_class) > 2))
		gw_check_election(bat_priv, orig_node);
		batadv_gw_check_election(bat_priv, orig_node);

	goto out;

+2 −2
Original line number Diff line number Diff line
@@ -326,7 +326,7 @@ static ssize_t show_bat_algo(struct kobject *kobj, struct attribute *attr,
static void post_gw_deselect(struct net_device *net_dev)
{
	struct bat_priv *bat_priv = netdev_priv(net_dev);
	gw_deselect(bat_priv);
	batadv_gw_deselect(bat_priv);
}

static ssize_t show_gw_mode(struct kobject *kobj, struct attribute *attr,
@@ -397,7 +397,7 @@ static ssize_t store_gw_mode(struct kobject *kobj, struct attribute *attr,
	bat_info(net_dev, "Changing gw mode from: %s to: %s\n",
		 curr_gw_mode_str, buff);

	gw_deselect(bat_priv);
	batadv_gw_deselect(bat_priv);
	atomic_set(&bat_priv->gw_mode, (unsigned int)gw_mode_tmp);
	return count;
}
+21 −19
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ out:
	return gw_node;
}

struct orig_node *gw_get_selected_orig(struct bat_priv *bat_priv)
struct orig_node *batadv_gw_get_selected_orig(struct bat_priv *bat_priv)
{
	struct gw_node *gw_node;
	struct orig_node *orig_node = NULL;
@@ -103,7 +103,7 @@ static void gw_select(struct bat_priv *bat_priv, struct gw_node *new_gw_node)
	spin_unlock_bh(&bat_priv->gw_list_lock);
}

void gw_deselect(struct bat_priv *bat_priv)
void batadv_gw_deselect(struct bat_priv *bat_priv)
{
	atomic_set(&bat_priv->gw_reselect, 1);
}
@@ -182,7 +182,7 @@ next:
	return curr_gw;
}

void gw_election(struct bat_priv *bat_priv)
void batadv_gw_election(struct bat_priv *bat_priv)
{
	struct gw_node *curr_gw = NULL, *next_gw = NULL;
	struct neigh_node *router = NULL;
@@ -212,7 +212,7 @@ void gw_election(struct bat_priv *bat_priv)

		router = orig_node_get_router(next_gw->orig_node);
		if (!router) {
			gw_deselect(bat_priv);
			batadv_gw_deselect(bat_priv);
			goto out;
		}
	}
@@ -246,13 +246,14 @@ out:
		neigh_node_free_ref(router);
}

void gw_check_election(struct bat_priv *bat_priv, struct orig_node *orig_node)
void batadv_gw_check_election(struct bat_priv *bat_priv,
			      struct orig_node *orig_node)
{
	struct orig_node *curr_gw_orig;
	struct neigh_node *router_gw = NULL, *router_orig = NULL;
	uint8_t gw_tq_avg, orig_tq_avg;

	curr_gw_orig = gw_get_selected_orig(bat_priv);
	curr_gw_orig = batadv_gw_get_selected_orig(bat_priv);
	if (!curr_gw_orig)
		goto deselect;

@@ -288,7 +289,7 @@ void gw_check_election(struct bat_priv *bat_priv, struct orig_node *orig_node)
		gw_tq_avg, orig_tq_avg);

deselect:
	gw_deselect(bat_priv);
	batadv_gw_deselect(bat_priv);
out:
	if (curr_gw_orig)
		orig_node_free_ref(curr_gw_orig);
@@ -328,7 +329,7 @@ static void gw_node_add(struct bat_priv *bat_priv,
		(up > 2048 ? "MBit" : "KBit"));
}

void gw_node_update(struct bat_priv *bat_priv,
void batadv_gw_node_update(struct bat_priv *bat_priv,
			   struct orig_node *orig_node, uint8_t new_gwflags)
{
	struct hlist_node *node;
@@ -374,7 +375,7 @@ void gw_node_update(struct bat_priv *bat_priv,
	goto unlock;

deselect:
	gw_deselect(bat_priv);
	batadv_gw_deselect(bat_priv);
unlock:
	rcu_read_unlock();

@@ -382,12 +383,13 @@ unlock:
		gw_node_free_ref(curr_gw);
}

void gw_node_delete(struct bat_priv *bat_priv, struct orig_node *orig_node)
void batadv_gw_node_delete(struct bat_priv *bat_priv,
			   struct orig_node *orig_node)
{
	gw_node_update(bat_priv, orig_node, 0);
	batadv_gw_node_update(bat_priv, orig_node, 0);
}

void gw_node_purge(struct bat_priv *bat_priv)
void batadv_gw_node_purge(struct bat_priv *bat_priv)
{
	struct gw_node *gw_node, *curr_gw;
	struct hlist_node *node, *node_tmp;
@@ -416,7 +418,7 @@ void gw_node_purge(struct bat_priv *bat_priv)

	/* gw_deselect() needs to acquire the gw_list_lock */
	if (do_deselect)
		gw_deselect(bat_priv);
		batadv_gw_deselect(bat_priv);

	if (curr_gw)
		gw_node_free_ref(curr_gw);
@@ -458,7 +460,7 @@ out:
	return ret;
}

int 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 bat_priv *bat_priv = netdev_priv(net_dev);
@@ -568,7 +570,7 @@ out:
	return ret;
}

bool 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)
{
	struct ethhdr *ethhdr;
	struct iphdr *iphdr;
@@ -634,7 +636,7 @@ bool gw_is_dhcp_target(struct sk_buff *skb, unsigned int *header_len)
	return true;
}

bool gw_out_of_range(struct bat_priv *bat_priv,
bool batadv_gw_out_of_range(struct bat_priv *bat_priv,
			    struct sk_buff *skb, struct ethhdr *ethhdr)
{
	struct neigh_node *neigh_curr = NULL, *neigh_old = NULL;
@@ -644,7 +646,7 @@ bool gw_out_of_range(struct bat_priv *bat_priv,
	unsigned int header_len = 0;
	uint8_t curr_tq_avg;

	ret = gw_is_dhcp_target(skb, &header_len);
	ret = batadv_gw_is_dhcp_target(skb, &header_len);
	if (!ret)
		goto out;

+14 −12
Original line number Diff line number Diff line
@@ -22,17 +22,19 @@
#ifndef _NET_BATMAN_ADV_GATEWAY_CLIENT_H_
#define _NET_BATMAN_ADV_GATEWAY_CLIENT_H_

void gw_deselect(struct bat_priv *bat_priv);
void gw_election(struct bat_priv *bat_priv);
struct orig_node *gw_get_selected_orig(struct bat_priv *bat_priv);
void gw_check_election(struct bat_priv *bat_priv, struct orig_node *orig_node);
void gw_node_update(struct bat_priv *bat_priv,
void batadv_gw_deselect(struct bat_priv *bat_priv);
void batadv_gw_election(struct bat_priv *bat_priv);
struct orig_node *batadv_gw_get_selected_orig(struct bat_priv *bat_priv);
void batadv_gw_check_election(struct bat_priv *bat_priv,
			      struct orig_node *orig_node);
void batadv_gw_node_update(struct bat_priv *bat_priv,
			   struct orig_node *orig_node, uint8_t new_gwflags);
void gw_node_delete(struct bat_priv *bat_priv, struct orig_node *orig_node);
void gw_node_purge(struct bat_priv *bat_priv);
int gw_client_seq_print_text(struct seq_file *seq, void *offset);
bool gw_is_dhcp_target(struct sk_buff *skb, unsigned int *header_len);
bool gw_out_of_range(struct bat_priv *bat_priv,
void batadv_gw_node_delete(struct bat_priv *bat_priv,
			   struct orig_node *orig_node);
void batadv_gw_node_purge(struct bat_priv *bat_priv);
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_out_of_range(struct bat_priv *bat_priv,
			    struct sk_buff *skb, struct ethhdr *ethhdr);

#endif /* _NET_BATMAN_ADV_GATEWAY_CLIENT_H_ */
Loading