Commit 88ed1e77 authored by Sven Eckelmann's avatar Sven Eckelmann Committed by Antonio Quartulli
Browse files

batman-adv: Prefix unicast 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 08c36d3e
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -138,7 +138,7 @@ static void orig_node_free_rcu(struct rcu_head *rcu)

	spin_unlock_bh(&orig_node->neigh_list_lock);

	frag_list_free(&orig_node->frag_list);
	batadv_frag_list_free(&orig_node->frag_list);
	batadv_tt_global_del_orig(orig_node->bat_priv, orig_node,
				  "originator timed out");

@@ -372,7 +372,7 @@ static void _purge_orig(struct bat_priv *bat_priv)

			if (has_timed_out(orig_node->last_frag_packet,
					  FRAG_TIMEOUT))
				frag_list_free(&orig_node->frag_list);
				batadv_frag_list_free(&orig_node->frag_list);
		}
		spin_unlock_bh(list_lock);
	}
+5 −4
Original line number Diff line number Diff line
@@ -850,15 +850,16 @@ static int route_unicast_packet(struct sk_buff *skb, struct hard_iface *recv_if)
	if (unicast_packet->header.packet_type == BAT_UNICAST &&
	    atomic_read(&bat_priv->fragmentation) &&
	    skb->len > neigh_node->if_incoming->net_dev->mtu) {
		ret = frag_send_skb(skb, bat_priv,
				    neigh_node->if_incoming, neigh_node->addr);
		ret = batadv_frag_send_skb(skb, bat_priv,
					   neigh_node->if_incoming,
					   neigh_node->addr);
		goto out;
	}

	if (unicast_packet->header.packet_type == BAT_UNICAST_FRAG &&
	    frag_can_reassemble(skb, neigh_node->if_incoming->net_dev->mtu)) {

		ret = frag_reassemble_skb(skb, bat_priv, &new_skb);
		ret = batadv_frag_reassemble_skb(skb, bat_priv, &new_skb);

		if (ret == NET_RX_DROP)
			goto out;
@@ -1013,7 +1014,7 @@ int batadv_recv_ucast_frag_packet(struct sk_buff *skb,
	/* packet for me */
	if (is_my_mac(unicast_packet->dest)) {

		ret = frag_reassemble_skb(skb, bat_priv, &new_skb);
		ret = batadv_frag_reassemble_skb(skb, bat_priv, &new_skb);

		if (ret == NET_RX_DROP)
			return NET_RX_DROP;
+1 −1
Original line number Diff line number Diff line
@@ -237,7 +237,7 @@ static int interface_tx(struct sk_buff *skb, struct net_device *soft_iface)
				goto dropped;
		}

		ret = unicast_send_skb(skb, bat_priv);
		ret = batadv_unicast_send_skb(skb, bat_priv);
		if (ret != 0)
			goto dropped_freed;
	}
+10 −9
Original line number Diff line number Diff line
@@ -101,7 +101,7 @@ static int frag_create_buffer(struct list_head *head)
	for (i = 0; i < FRAG_BUFFER_SIZE; i++) {
		tfp = kmalloc(sizeof(*tfp), GFP_ATOMIC);
		if (!tfp) {
			frag_list_free(head);
			batadv_frag_list_free(head);
			return -ENOMEM;
		}
		tfp->skb = NULL;
@@ -151,7 +151,7 @@ mov_tail:
	return NULL;
}

void frag_list_free(struct list_head *head)
void batadv_frag_list_free(struct list_head *head)
{
	struct frag_packet_list_entry *pf, *tmp_pf;

@@ -172,7 +172,7 @@ void frag_list_free(struct list_head *head)
 * or the skb could be reassembled (skb_new will point to the new packet and
 * skb was freed)
 */
int frag_reassemble_skb(struct sk_buff *skb, struct bat_priv *bat_priv,
int batadv_frag_reassemble_skb(struct sk_buff *skb, struct bat_priv *bat_priv,
			       struct sk_buff **new_skb)
{
	struct orig_node *orig_node;
@@ -216,7 +216,7 @@ out:
	return ret;
}

int frag_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv,
int batadv_frag_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv,
			 struct hard_iface *hard_iface, const uint8_t dstaddr[])
{
	struct unicast_packet tmp_uc, *unicast_packet;
@@ -283,7 +283,7 @@ out:
	return ret;
}

int unicast_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv)
int batadv_unicast_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv)
{
	struct ethhdr *ethhdr = (struct ethhdr *)skb->data;
	struct unicast_packet *unicast_packet;
@@ -342,8 +342,9 @@ find_router:
				neigh_node->if_incoming->net_dev->mtu) {
		/* send frag skb decreases ttl */
		unicast_packet->header.ttl++;
		ret = frag_send_skb(skb, bat_priv,
				    neigh_node->if_incoming, neigh_node->addr);
		ret = batadv_frag_send_skb(skb, bat_priv,
					   neigh_node->if_incoming,
					   neigh_node->addr);
		goto out;
	}

+7 −6
Original line number Diff line number Diff line
@@ -27,12 +27,13 @@
#define FRAG_TIMEOUT 10000	/* purge frag list entries after time in ms */
#define FRAG_BUFFER_SIZE 6	/* number of list elements in buffer */

int frag_reassemble_skb(struct sk_buff *skb, struct bat_priv *bat_priv,
int batadv_frag_reassemble_skb(struct sk_buff *skb, struct bat_priv *bat_priv,
			       struct sk_buff **new_skb);
void frag_list_free(struct list_head *head);
int unicast_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv);
int frag_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv,
		  struct hard_iface *hard_iface, const uint8_t dstaddr[]);
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_frag_send_skb(struct sk_buff *skb, struct bat_priv *bat_priv,
			 struct hard_iface *hard_iface,
			 const uint8_t dstaddr[]);

static inline int frag_can_reassemble(const struct sk_buff *skb, int mtu)
{