Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b426b10 authored by Sven Eckelmann's avatar Sven Eckelmann Committed by Antonio Quartulli
Browse files

batman-adv: Use bool as return type for boolean functions



It is easier to understand that the returned value of a specific function
doesn't have to be 0 when the functions was successful when the actual
return type is bool. This is especially true when all surrounding functions
with return type int use negative values to return the error code.

Reported-by: default avatarNicholas Krause <xerofoify@gmail.com>
Signed-off-by: default avatarSven Eckelmann <sven@narfation.org>
Signed-off-by: default avatarMarek Lindner <mareklindner@neomailbox.ch>
Signed-off-by: default avatarAntonio Quartulli <a@unstable.cc>
parent f0b94ebc
Loading
Loading
Loading
Loading
+12 −11
Original line number Original line Diff line number Diff line
@@ -1168,9 +1168,9 @@ batadv_iv_ogm_orig_update(struct batadv_priv *bat_priv,
 * @if_incoming: interface where the packet was received
 * @if_incoming: interface where the packet was received
 * @if_outgoing: interface for which the retransmission should be considered
 * @if_outgoing: interface for which the retransmission should be considered
 *
 *
 * Return: 1 if the link can be considered bidirectional, 0 otherwise
 * Return: true if the link can be considered bidirectional, false otherwise
 */
 */
static int batadv_iv_ogm_calc_tq(struct batadv_orig_node *orig_node,
static bool batadv_iv_ogm_calc_tq(struct batadv_orig_node *orig_node,
				  struct batadv_orig_node *orig_neigh_node,
				  struct batadv_orig_node *orig_neigh_node,
				  struct batadv_ogm_packet *batadv_ogm_packet,
				  struct batadv_ogm_packet *batadv_ogm_packet,
				  struct batadv_hard_iface *if_incoming,
				  struct batadv_hard_iface *if_incoming,
@@ -1182,9 +1182,10 @@ static int batadv_iv_ogm_calc_tq(struct batadv_orig_node *orig_node,
	u8 total_count;
	u8 total_count;
	u8 orig_eq_count, neigh_rq_count, neigh_rq_inv, tq_own;
	u8 orig_eq_count, neigh_rq_count, neigh_rq_inv, tq_own;
	unsigned int neigh_rq_inv_cube, neigh_rq_max_cube;
	unsigned int neigh_rq_inv_cube, neigh_rq_max_cube;
	int tq_asym_penalty, inv_asym_penalty, if_num, ret = 0;
	int tq_asym_penalty, inv_asym_penalty, if_num;
	unsigned int combined_tq;
	unsigned int combined_tq;
	int tq_iface_penalty;
	int tq_iface_penalty;
	bool ret = false;


	/* find corresponding one hop neighbor */
	/* find corresponding one hop neighbor */
	rcu_read_lock();
	rcu_read_lock();
@@ -1296,7 +1297,7 @@ static int batadv_iv_ogm_calc_tq(struct batadv_orig_node *orig_node,
	 * consider it bidirectional
	 * consider it bidirectional
	 */
	 */
	if (batadv_ogm_packet->tq >= BATADV_TQ_TOTAL_BIDRECT_LIMIT)
	if (batadv_ogm_packet->tq >= BATADV_TQ_TOTAL_BIDRECT_LIMIT)
		ret = 1;
		ret = true;


out:
out:
	if (neigh_node)
	if (neigh_node)
@@ -1325,9 +1326,9 @@ batadv_iv_ogm_update_seqnos(const struct ethhdr *ethhdr,
	struct batadv_orig_ifinfo *orig_ifinfo = NULL;
	struct batadv_orig_ifinfo *orig_ifinfo = NULL;
	struct batadv_neigh_node *neigh_node;
	struct batadv_neigh_node *neigh_node;
	struct batadv_neigh_ifinfo *neigh_ifinfo;
	struct batadv_neigh_ifinfo *neigh_ifinfo;
	int is_dup;
	bool is_dup;
	s32 seq_diff;
	s32 seq_diff;
	int need_update = 0;
	bool need_update = false;
	int set_mark;
	int set_mark;
	enum batadv_dup_status ret = BATADV_NO_DUP;
	enum batadv_dup_status ret = BATADV_NO_DUP;
	u32 seqno = ntohl(batadv_ogm_packet->seqno);
	u32 seqno = ntohl(batadv_ogm_packet->seqno);
@@ -1437,7 +1438,7 @@ batadv_iv_ogm_process_per_outif(const struct sk_buff *skb, int ogm_offset,
	struct sk_buff *skb_priv;
	struct sk_buff *skb_priv;
	struct ethhdr *ethhdr;
	struct ethhdr *ethhdr;
	u8 *prev_sender;
	u8 *prev_sender;
	int is_bidirect;
	bool is_bidirect;


	/* create a private copy of the skb, as some functions change tq value
	/* create a private copy of the skb, as some functions change tq value
	 * and/or flags.
	 * and/or flags.
+8 −8
Original line number Original line Diff line number Diff line
@@ -38,11 +38,11 @@ static void batadv_bitmap_shift_left(unsigned long *seq_bits, s32 n)
 *  the last sequence number
 *  the last sequence number
 * @set_mark: whether this packet should be marked in seq_bits
 * @set_mark: whether this packet should be marked in seq_bits
 *
 *
 * Return: 1 if the window was moved (either new or very old),
 * Return: true if the window was moved (either new or very old),
 *  0 if the window was not moved/shifted.
 *  false if the window was not moved/shifted.
 */
 */
int batadv_bit_get_packet(void *priv, unsigned long *seq_bits, s32 seq_num_diff,
bool batadv_bit_get_packet(void *priv, unsigned long *seq_bits,
			  int set_mark)
			   s32 seq_num_diff, int set_mark)
{
{
	struct batadv_priv *bat_priv = priv;
	struct batadv_priv *bat_priv = priv;


@@ -52,7 +52,7 @@ int batadv_bit_get_packet(void *priv, unsigned long *seq_bits, s32 seq_num_diff,
	if (seq_num_diff <= 0 && seq_num_diff > -BATADV_TQ_LOCAL_WINDOW_SIZE) {
	if (seq_num_diff <= 0 && seq_num_diff > -BATADV_TQ_LOCAL_WINDOW_SIZE) {
		if (set_mark)
		if (set_mark)
			batadv_set_bit(seq_bits, -seq_num_diff);
			batadv_set_bit(seq_bits, -seq_num_diff);
		return 0;
		return false;
	}
	}


	/* sequence number is slightly newer, so we shift the window and
	/* sequence number is slightly newer, so we shift the window and
@@ -63,7 +63,7 @@ int batadv_bit_get_packet(void *priv, unsigned long *seq_bits, s32 seq_num_diff,


		if (set_mark)
		if (set_mark)
			batadv_set_bit(seq_bits, 0);
			batadv_set_bit(seq_bits, 0);
		return 1;
		return true;
	}
	}


	/* sequence number is much newer, probably missed a lot of packets */
	/* sequence number is much newer, probably missed a lot of packets */
@@ -75,7 +75,7 @@ int batadv_bit_get_packet(void *priv, unsigned long *seq_bits, s32 seq_num_diff,
		bitmap_zero(seq_bits, BATADV_TQ_LOCAL_WINDOW_SIZE);
		bitmap_zero(seq_bits, BATADV_TQ_LOCAL_WINDOW_SIZE);
		if (set_mark)
		if (set_mark)
			batadv_set_bit(seq_bits, 0);
			batadv_set_bit(seq_bits, 0);
		return 1;
		return true;
	}
	}


	/* received a much older packet. The other host either restarted
	/* received a much older packet. The other host either restarted
@@ -94,5 +94,5 @@ int batadv_bit_get_packet(void *priv, unsigned long *seq_bits, s32 seq_num_diff,
	if (set_mark)
	if (set_mark)
		batadv_set_bit(seq_bits, 0);
		batadv_set_bit(seq_bits, 0);


	return 1;
	return true;
}
}
+8 −7
Original line number Original line Diff line number Diff line
@@ -22,6 +22,7 @@


#include <linux/bitops.h>
#include <linux/bitops.h>
#include <linux/compiler.h>
#include <linux/compiler.h>
#include <linux/stddef.h>
#include <linux/types.h>
#include <linux/types.h>


/**
/**
@@ -31,17 +32,17 @@
 * @last_seqno: latest sequence number in seq_bits
 * @last_seqno: latest sequence number in seq_bits
 * @curr_seqno: sequence number to test for
 * @curr_seqno: sequence number to test for
 *
 *
 * Return: 1 if the corresponding bit in the given seq_bits indicates true
 * Return: true if the corresponding bit in the given seq_bits indicates true
 * and curr_seqno is within range of last_seqno. Otherwise returns 0.
 * and curr_seqno is within range of last_seqno. Otherwise returns false.
 */
 */
static inline int batadv_test_bit(const unsigned long *seq_bits,
static inline bool batadv_test_bit(const unsigned long *seq_bits,
				   u32 last_seqno, u32 curr_seqno)
				   u32 last_seqno, u32 curr_seqno)
{
{
	s32 diff;
	s32 diff;


	diff = last_seqno - curr_seqno;
	diff = last_seqno - curr_seqno;
	if (diff < 0 || diff >= BATADV_TQ_LOCAL_WINDOW_SIZE)
	if (diff < 0 || diff >= BATADV_TQ_LOCAL_WINDOW_SIZE)
		return 0;
		return false;
	return test_bit(diff, seq_bits) != 0;
	return test_bit(diff, seq_bits) != 0;
}
}


@@ -55,7 +56,7 @@ static inline void batadv_set_bit(unsigned long *seq_bits, s32 n)
	set_bit(n, seq_bits); /* turn the position on */
	set_bit(n, seq_bits); /* turn the position on */
}
}


int batadv_bit_get_packet(void *priv, unsigned long *seq_bits, s32 seq_num_diff,
bool batadv_bit_get_packet(void *priv, unsigned long *seq_bits,
			  int set_mark);
			   s32 seq_num_diff, int set_mark);


#endif /* _NET_BATMAN_ADV_BITARRAY_H_ */
#endif /* _NET_BATMAN_ADV_BITARRAY_H_ */
+88 −87
Original line number Original line Diff line number Diff line
@@ -101,9 +101,9 @@ static inline u32 batadv_choose_backbone_gw(const void *data, u32 size)
 * @node: list node of the first entry to compare
 * @node: list node of the first entry to compare
 * @data2: pointer to the second backbone gateway
 * @data2: pointer to the second backbone gateway
 *
 *
 * Return: 1 if the backbones have the same data, 0 otherwise
 * Return: true if the backbones have the same data, false otherwise
 */
 */
static int batadv_compare_backbone_gw(const struct hlist_node *node,
static bool batadv_compare_backbone_gw(const struct hlist_node *node,
				       const void *data2)
				       const void *data2)
{
{
	const void *data1 = container_of(node, struct batadv_bla_backbone_gw,
	const void *data1 = container_of(node, struct batadv_bla_backbone_gw,
@@ -112,12 +112,12 @@ static int batadv_compare_backbone_gw(const struct hlist_node *node,
	const struct batadv_bla_backbone_gw *gw2 = data2;
	const struct batadv_bla_backbone_gw *gw2 = data2;


	if (!batadv_compare_eth(gw1->orig, gw2->orig))
	if (!batadv_compare_eth(gw1->orig, gw2->orig))
		return 0;
		return false;


	if (gw1->vid != gw2->vid)
	if (gw1->vid != gw2->vid)
		return 0;
		return false;


	return 1;
	return true;
}
}


/**
/**
@@ -125,9 +125,9 @@ static int batadv_compare_backbone_gw(const struct hlist_node *node,
 * @node: list node of the first entry to compare
 * @node: list node of the first entry to compare
 * @data2: pointer to the second claims
 * @data2: pointer to the second claims
 *
 *
 * Return: 1 if the claim have the same data, 0 otherwise
 * Return: true if the claim have the same data, 0 otherwise
 */
 */
static int batadv_compare_claim(const struct hlist_node *node,
static bool batadv_compare_claim(const struct hlist_node *node,
				 const void *data2)
				 const void *data2)
{
{
	const void *data1 = container_of(node, struct batadv_bla_claim,
	const void *data1 = container_of(node, struct batadv_bla_claim,
@@ -136,12 +136,12 @@ static int batadv_compare_claim(const struct hlist_node *node,
	const struct batadv_bla_claim *cl2 = data2;
	const struct batadv_bla_claim *cl2 = data2;


	if (!batadv_compare_eth(cl1->addr, cl2->addr))
	if (!batadv_compare_eth(cl1->addr, cl2->addr))
		return 0;
		return false;


	if (cl1->vid != cl2->vid)
	if (cl1->vid != cl2->vid)
		return 0;
		return false;


	return 1;
	return true;
}
}


/**
/**
@@ -775,22 +775,22 @@ static void batadv_bla_del_claim(struct batadv_priv *bat_priv,
 * @backbone_addr: originator address of the sender (Ethernet source MAC)
 * @backbone_addr: originator address of the sender (Ethernet source MAC)
 * @vid: the VLAN ID of the frame
 * @vid: the VLAN ID of the frame
 *
 *
 * Return: 1 if handled
 * Return: true if handled
 */
 */
static int batadv_handle_announce(struct batadv_priv *bat_priv, u8 *an_addr,
static bool batadv_handle_announce(struct batadv_priv *bat_priv, u8 *an_addr,
				   u8 *backbone_addr, unsigned short vid)
				   u8 *backbone_addr, unsigned short vid)
{
{
	struct batadv_bla_backbone_gw *backbone_gw;
	struct batadv_bla_backbone_gw *backbone_gw;
	u16 backbone_crc, crc;
	u16 backbone_crc, crc;


	if (memcmp(an_addr, batadv_announce_mac, 4) != 0)
	if (memcmp(an_addr, batadv_announce_mac, 4) != 0)
		return 0;
		return false;


	backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid,
	backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid,
						 false);
						 false);


	if (unlikely(!backbone_gw))
	if (unlikely(!backbone_gw))
		return 1;
		return true;


	/* handle as ANNOUNCE frame */
	/* handle as ANNOUNCE frame */
	backbone_gw->lasttime = jiffies;
	backbone_gw->lasttime = jiffies;
@@ -823,7 +823,7 @@ static int batadv_handle_announce(struct batadv_priv *bat_priv, u8 *an_addr,
	}
	}


	batadv_backbone_gw_put(backbone_gw);
	batadv_backbone_gw_put(backbone_gw);
	return 1;
	return true;
}
}


/**
/**
@@ -834,29 +834,29 @@ static int batadv_handle_announce(struct batadv_priv *bat_priv, u8 *an_addr,
 * @ethhdr: ethernet header of a packet
 * @ethhdr: ethernet header of a packet
 * @vid: the VLAN ID of the frame
 * @vid: the VLAN ID of the frame
 *
 *
 * Return: 1 if handled
 * Return: true if handled
 */
 */
static int batadv_handle_request(struct batadv_priv *bat_priv,
static bool batadv_handle_request(struct batadv_priv *bat_priv,
				  struct batadv_hard_iface *primary_if,
				  struct batadv_hard_iface *primary_if,
				  u8 *backbone_addr, struct ethhdr *ethhdr,
				  u8 *backbone_addr, struct ethhdr *ethhdr,
				  unsigned short vid)
				  unsigned short vid)
{
{
	/* check for REQUEST frame */
	/* check for REQUEST frame */
	if (!batadv_compare_eth(backbone_addr, ethhdr->h_dest))
	if (!batadv_compare_eth(backbone_addr, ethhdr->h_dest))
		return 0;
		return false;


	/* sanity check, this should not happen on a normal switch,
	/* sanity check, this should not happen on a normal switch,
	 * we ignore it in this case.
	 * we ignore it in this case.
	 */
	 */
	if (!batadv_compare_eth(ethhdr->h_dest, primary_if->net_dev->dev_addr))
	if (!batadv_compare_eth(ethhdr->h_dest, primary_if->net_dev->dev_addr))
		return 1;
		return true;


	batadv_dbg(BATADV_DBG_BLA, bat_priv,
	batadv_dbg(BATADV_DBG_BLA, bat_priv,
		   "handle_request(): REQUEST vid %d (sent by %pM)...\n",
		   "handle_request(): REQUEST vid %d (sent by %pM)...\n",
		   BATADV_PRINT_VID(vid), ethhdr->h_source);
		   BATADV_PRINT_VID(vid), ethhdr->h_source);


	batadv_bla_answer_request(bat_priv, primary_if, vid);
	batadv_bla_answer_request(bat_priv, primary_if, vid);
	return 1;
	return true;
}
}


/**
/**
@@ -867,9 +867,9 @@ static int batadv_handle_request(struct batadv_priv *bat_priv,
 * @claim_addr: Client to be unclaimed (ARP sender HW MAC)
 * @claim_addr: Client to be unclaimed (ARP sender HW MAC)
 * @vid: the VLAN ID of the frame
 * @vid: the VLAN ID of the frame
 *
 *
 * Return: 1 if handled
 * Return: true if handled
 */
 */
static int batadv_handle_unclaim(struct batadv_priv *bat_priv,
static bool batadv_handle_unclaim(struct batadv_priv *bat_priv,
				  struct batadv_hard_iface *primary_if,
				  struct batadv_hard_iface *primary_if,
				  u8 *backbone_addr, u8 *claim_addr,
				  u8 *backbone_addr, u8 *claim_addr,
				  unsigned short vid)
				  unsigned short vid)
@@ -885,7 +885,7 @@ static int batadv_handle_unclaim(struct batadv_priv *bat_priv,
	backbone_gw = batadv_backbone_hash_find(bat_priv, backbone_addr, vid);
	backbone_gw = batadv_backbone_hash_find(bat_priv, backbone_addr, vid);


	if (!backbone_gw)
	if (!backbone_gw)
		return 1;
		return true;


	/* this must be an UNCLAIM frame */
	/* this must be an UNCLAIM frame */
	batadv_dbg(BATADV_DBG_BLA, bat_priv,
	batadv_dbg(BATADV_DBG_BLA, bat_priv,
@@ -894,7 +894,7 @@ static int batadv_handle_unclaim(struct batadv_priv *bat_priv,


	batadv_bla_del_claim(bat_priv, claim_addr, vid);
	batadv_bla_del_claim(bat_priv, claim_addr, vid);
	batadv_backbone_gw_put(backbone_gw);
	batadv_backbone_gw_put(backbone_gw);
	return 1;
	return true;
}
}


/**
/**
@@ -905,9 +905,9 @@ static int batadv_handle_unclaim(struct batadv_priv *bat_priv,
 * @claim_addr: client mac address to be claimed (ARP sender HW MAC)
 * @claim_addr: client mac address to be claimed (ARP sender HW MAC)
 * @vid: the VLAN ID of the frame
 * @vid: the VLAN ID of the frame
 *
 *
 * Return: 1 if handled
 * Return: true if handled
 */
 */
static int batadv_handle_claim(struct batadv_priv *bat_priv,
static bool batadv_handle_claim(struct batadv_priv *bat_priv,
				struct batadv_hard_iface *primary_if,
				struct batadv_hard_iface *primary_if,
				u8 *backbone_addr, u8 *claim_addr,
				u8 *backbone_addr, u8 *claim_addr,
				unsigned short vid)
				unsigned short vid)
@@ -920,7 +920,7 @@ static int batadv_handle_claim(struct batadv_priv *bat_priv,
						 false);
						 false);


	if (unlikely(!backbone_gw))
	if (unlikely(!backbone_gw))
		return 1;
		return true;


	/* this must be a CLAIM frame */
	/* this must be a CLAIM frame */
	batadv_bla_add_claim(bat_priv, claim_addr, vid, backbone_gw);
	batadv_bla_add_claim(bat_priv, claim_addr, vid, backbone_gw);
@@ -931,7 +931,7 @@ static int batadv_handle_claim(struct batadv_priv *bat_priv,
	/* TODO: we could call something like tt_local_del() here. */
	/* TODO: we could call something like tt_local_del() here. */


	batadv_backbone_gw_put(backbone_gw);
	batadv_backbone_gw_put(backbone_gw);
	return 1;
	return true;
}
}


/**
/**
@@ -1015,10 +1015,10 @@ static int batadv_check_claim_group(struct batadv_priv *bat_priv,
 * @primary_if: the primary hard interface of this batman soft interface
 * @primary_if: the primary hard interface of this batman soft interface
 * @skb: the frame to be checked
 * @skb: the frame to be checked
 *
 *
 * Return: 1 if it was a claim frame, otherwise return 0 to
 * Return: true if it was a claim frame, otherwise return false to
 * tell the callee that it can use the frame on its own.
 * tell the callee that it can use the frame on its own.
 */
 */
static int batadv_bla_process_claim(struct batadv_priv *bat_priv,
static bool batadv_bla_process_claim(struct batadv_priv *bat_priv,
				     struct batadv_hard_iface *primary_if,
				     struct batadv_hard_iface *primary_if,
				     struct sk_buff *skb)
				     struct sk_buff *skb)
{
{
@@ -1051,7 +1051,7 @@ static int batadv_bla_process_claim(struct batadv_priv *bat_priv,
			vhdr = skb_header_pointer(skb, headlen, VLAN_HLEN,
			vhdr = skb_header_pointer(skb, headlen, VLAN_HLEN,
						  &vhdr_buf);
						  &vhdr_buf);
			if (!vhdr)
			if (!vhdr)
				return 0;
				return false;


			proto = vhdr->h_vlan_encapsulated_proto;
			proto = vhdr->h_vlan_encapsulated_proto;
			headlen += VLAN_HLEN;
			headlen += VLAN_HLEN;
@@ -1060,12 +1060,12 @@ static int batadv_bla_process_claim(struct batadv_priv *bat_priv,
	}
	}


	if (proto != htons(ETH_P_ARP))
	if (proto != htons(ETH_P_ARP))
		return 0; /* not a claim frame */
		return false; /* not a claim frame */


	/* this must be a ARP frame. check if it is a claim. */
	/* this must be a ARP frame. check if it is a claim. */


	if (unlikely(!pskb_may_pull(skb, headlen + arp_hdr_len(skb->dev))))
	if (unlikely(!pskb_may_pull(skb, headlen + arp_hdr_len(skb->dev))))
		return 0;
		return false;


	/* pskb_may_pull() may have modified the pointers, get ethhdr again */
	/* pskb_may_pull() may have modified the pointers, get ethhdr again */
	ethhdr = eth_hdr(skb);
	ethhdr = eth_hdr(skb);
@@ -1075,13 +1075,13 @@ static int batadv_bla_process_claim(struct batadv_priv *bat_priv,
	 * IP information
	 * IP information
	 */
	 */
	if (arphdr->ar_hrd != htons(ARPHRD_ETHER))
	if (arphdr->ar_hrd != htons(ARPHRD_ETHER))
		return 0;
		return false;
	if (arphdr->ar_pro != htons(ETH_P_IP))
	if (arphdr->ar_pro != htons(ETH_P_IP))
		return 0;
		return false;
	if (arphdr->ar_hln != ETH_ALEN)
	if (arphdr->ar_hln != ETH_ALEN)
		return 0;
		return false;
	if (arphdr->ar_pln != 4)
	if (arphdr->ar_pln != 4)
		return 0;
		return false;


	hw_src = (u8 *)arphdr + sizeof(struct arphdr);
	hw_src = (u8 *)arphdr + sizeof(struct arphdr);
	hw_dst = hw_src + ETH_ALEN + 4;
	hw_dst = hw_src + ETH_ALEN + 4;
@@ -1091,14 +1091,14 @@ static int batadv_bla_process_claim(struct batadv_priv *bat_priv,
	/* check if it is a claim frame in general */
	/* check if it is a claim frame in general */
	if (memcmp(bla_dst->magic, bla_dst_own->magic,
	if (memcmp(bla_dst->magic, bla_dst_own->magic,
		   sizeof(bla_dst->magic)) != 0)
		   sizeof(bla_dst->magic)) != 0)
		return 0;
		return false;


	/* check if there is a claim frame encapsulated deeper in (QinQ) and
	/* check if there is a claim frame encapsulated deeper in (QinQ) and
	 * drop that, as this is not supported by BLA but should also not be
	 * drop that, as this is not supported by BLA but should also not be
	 * sent via the mesh.
	 * sent via the mesh.
	 */
	 */
	if (vlan_depth > 1)
	if (vlan_depth > 1)
		return 1;
		return true;


	/* Let the loopdetect frames on the mesh in any case. */
	/* Let the loopdetect frames on the mesh in any case. */
	if (bla_dst->type == BATADV_CLAIM_TYPE_LOOPDETECT)
	if (bla_dst->type == BATADV_CLAIM_TYPE_LOOPDETECT)
@@ -1114,7 +1114,7 @@ static int batadv_bla_process_claim(struct batadv_priv *bat_priv,
			   hw_dst);
			   hw_dst);


	if (ret < 2)
	if (ret < 2)
		return ret;
		return !!ret;


	/* become a backbone gw ourselves on this vlan if not happened yet */
	/* become a backbone gw ourselves on this vlan if not happened yet */
	batadv_bla_update_own_backbone_gw(bat_priv, primary_if, vid);
	batadv_bla_update_own_backbone_gw(bat_priv, primary_if, vid);
@@ -1124,30 +1124,30 @@ static int batadv_bla_process_claim(struct batadv_priv *bat_priv,
	case BATADV_CLAIM_TYPE_CLAIM:
	case BATADV_CLAIM_TYPE_CLAIM:
		if (batadv_handle_claim(bat_priv, primary_if, hw_src,
		if (batadv_handle_claim(bat_priv, primary_if, hw_src,
					ethhdr->h_source, vid))
					ethhdr->h_source, vid))
			return 1;
			return true;
		break;
		break;
	case BATADV_CLAIM_TYPE_UNCLAIM:
	case BATADV_CLAIM_TYPE_UNCLAIM:
		if (batadv_handle_unclaim(bat_priv, primary_if,
		if (batadv_handle_unclaim(bat_priv, primary_if,
					  ethhdr->h_source, hw_src, vid))
					  ethhdr->h_source, hw_src, vid))
			return 1;
			return true;
		break;
		break;


	case BATADV_CLAIM_TYPE_ANNOUNCE:
	case BATADV_CLAIM_TYPE_ANNOUNCE:
		if (batadv_handle_announce(bat_priv, hw_src, ethhdr->h_source,
		if (batadv_handle_announce(bat_priv, hw_src, ethhdr->h_source,
					   vid))
					   vid))
			return 1;
			return true;
		break;
		break;
	case BATADV_CLAIM_TYPE_REQUEST:
	case BATADV_CLAIM_TYPE_REQUEST:
		if (batadv_handle_request(bat_priv, primary_if, hw_src, ethhdr,
		if (batadv_handle_request(bat_priv, primary_if, hw_src, ethhdr,
					  vid))
					  vid))
			return 1;
			return true;
		break;
		break;
	}
	}


	batadv_dbg(BATADV_DBG_BLA, bat_priv,
	batadv_dbg(BATADV_DBG_BLA, bat_priv,
		   "bla_process_claim(): ERROR - this looks like a claim frame, but is useless. eth src %pM on vid %d ...(hw_src %pM, hw_dst %pM)\n",
		   "bla_process_claim(): ERROR - this looks like a claim frame, but is useless. eth src %pM on vid %d ...(hw_src %pM, hw_dst %pM)\n",
		   ethhdr->h_source, BATADV_PRINT_VID(vid), hw_src, hw_dst);
		   ethhdr->h_source, BATADV_PRINT_VID(vid), hw_src, hw_dst);
	return 1;
	return true;
}
}


/**
/**
@@ -1529,15 +1529,16 @@ int batadv_bla_init(struct batadv_priv *bat_priv)
 * sent by another host, drop it. We allow equal packets from
 * sent by another host, drop it. We allow equal packets from
 * the same host however as this might be intended.
 * the same host however as this might be intended.
 *
 *
 * Return: 1 if a packet is in the duplicate list, 0 otherwise.
 * Return: true if a packet is in the duplicate list, false otherwise.
 */
 */
int batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv,
bool batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv,
				    struct sk_buff *skb)
				    struct sk_buff *skb)
{
{
	int i, curr, ret = 0;
	int i, curr;
	__be32 crc;
	__be32 crc;
	struct batadv_bcast_packet *bcast_packet;
	struct batadv_bcast_packet *bcast_packet;
	struct batadv_bcast_duplist_entry *entry;
	struct batadv_bcast_duplist_entry *entry;
	bool ret = false;


	bcast_packet = (struct batadv_bcast_packet *)skb->data;
	bcast_packet = (struct batadv_bcast_packet *)skb->data;


@@ -1565,9 +1566,9 @@ int batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv,
			continue;
			continue;


		/* this entry seems to match: same crc, not too old,
		/* this entry seems to match: same crc, not too old,
		 * and from another gw. therefore return 1 to forbid it.
		 * and from another gw. therefore return true to forbid it.
		 */
		 */
		ret = 1;
		ret = true;
		goto out;
		goto out;
	}
	}
	/* not found, add a new entry (overwrite the oldest entry)
	/* not found, add a new entry (overwrite the oldest entry)
@@ -1633,21 +1634,21 @@ bool batadv_bla_is_backbone_gw_orig(struct batadv_priv *bat_priv, u8 *orig,
 * @orig_node: the orig_node of the frame
 * @orig_node: the orig_node of the frame
 * @hdr_size: maximum length of the frame
 * @hdr_size: maximum length of the frame
 *
 *
 * Return: 1 if the orig_node is also a gateway on the soft interface, otherwise
 * Return: true if the orig_node is also a gateway on the soft interface,
 * it returns 0.
 * otherwise it returns false.
 */
 */
int batadv_bla_is_backbone_gw(struct sk_buff *skb,
bool batadv_bla_is_backbone_gw(struct sk_buff *skb,
			       struct batadv_orig_node *orig_node, int hdr_size)
			       struct batadv_orig_node *orig_node, int hdr_size)
{
{
	struct batadv_bla_backbone_gw *backbone_gw;
	struct batadv_bla_backbone_gw *backbone_gw;
	unsigned short vid;
	unsigned short vid;


	if (!atomic_read(&orig_node->bat_priv->bridge_loop_avoidance))
	if (!atomic_read(&orig_node->bat_priv->bridge_loop_avoidance))
		return 0;
		return false;


	/* first, find out the vid. */
	/* first, find out the vid. */
	if (!pskb_may_pull(skb, hdr_size + ETH_HLEN))
	if (!pskb_may_pull(skb, hdr_size + ETH_HLEN))
		return 0;
		return false;


	vid = batadv_get_vid(skb, hdr_size);
	vid = batadv_get_vid(skb, hdr_size);


@@ -1655,10 +1656,10 @@ int batadv_bla_is_backbone_gw(struct sk_buff *skb,
	backbone_gw = batadv_backbone_hash_find(orig_node->bat_priv,
	backbone_gw = batadv_backbone_hash_find(orig_node->bat_priv,
						orig_node->orig, vid);
						orig_node->orig, vid);
	if (!backbone_gw)
	if (!backbone_gw)
		return 0;
		return false;


	batadv_backbone_gw_put(backbone_gw);
	batadv_backbone_gw_put(backbone_gw);
	return 1;
	return true;
}
}


/**
/**
@@ -1750,16 +1751,16 @@ batadv_bla_loopdetect_check(struct batadv_priv *bat_priv, struct sk_buff *skb,
 *
 *
 * in these cases, the skb is further handled by this function
 * in these cases, the skb is further handled by this function
 *
 *
 * Return: 1 if handled, otherwise it returns 0 and the caller shall further
 * Return: true if handled, otherwise it returns false and the caller shall
 * process the skb.
 * further process the skb.
 */
 */
int batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb,
bool batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb,
		   unsigned short vid, bool is_bcast)
		   unsigned short vid, bool is_bcast)
{
{
	struct ethhdr *ethhdr;
	struct ethhdr *ethhdr;
	struct batadv_bla_claim search_claim, *claim = NULL;
	struct batadv_bla_claim search_claim, *claim = NULL;
	struct batadv_hard_iface *primary_if;
	struct batadv_hard_iface *primary_if;
	int ret;
	bool ret;


	ethhdr = eth_hdr(skb);
	ethhdr = eth_hdr(skb);


@@ -1821,12 +1822,12 @@ int batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb,
	}
	}
allow:
allow:
	batadv_bla_update_own_backbone_gw(bat_priv, primary_if, vid);
	batadv_bla_update_own_backbone_gw(bat_priv, primary_if, vid);
	ret = 0;
	ret = false;
	goto out;
	goto out;


handled:
handled:
	kfree_skb(skb);
	kfree_skb(skb);
	ret = 1;
	ret = true;


out:
out:
	if (primary_if)
	if (primary_if)
@@ -1850,16 +1851,16 @@ int batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb,
 *
 *
 * This call might reallocate skb data.
 * This call might reallocate skb data.
 *
 *
 * Return: 1 if handled, otherwise it returns 0 and the caller shall further
 * Return: true if handled, otherwise it returns false and the caller shall
 * process the skb.
 * further process the skb.
 */
 */
int batadv_bla_tx(struct batadv_priv *bat_priv, struct sk_buff *skb,
bool batadv_bla_tx(struct batadv_priv *bat_priv, struct sk_buff *skb,
		   unsigned short vid)
		   unsigned short vid)
{
{
	struct ethhdr *ethhdr;
	struct ethhdr *ethhdr;
	struct batadv_bla_claim search_claim, *claim = NULL;
	struct batadv_bla_claim search_claim, *claim = NULL;
	struct batadv_hard_iface *primary_if;
	struct batadv_hard_iface *primary_if;
	int ret = 0;
	bool ret = false;


	primary_if = batadv_primary_if_get_selected(bat_priv);
	primary_if = batadv_primary_if_get_selected(bat_priv);
	if (!primary_if)
	if (!primary_if)
@@ -1913,10 +1914,10 @@ int batadv_bla_tx(struct batadv_priv *bat_priv, struct sk_buff *skb,
	}
	}
allow:
allow:
	batadv_bla_update_own_backbone_gw(bat_priv, primary_if, vid);
	batadv_bla_update_own_backbone_gw(bat_priv, primary_if, vid);
	ret = 0;
	ret = false;
	goto out;
	goto out;
handled:
handled:
	ret = 1;
	ret = true;
out:
out:
	if (primary_if)
	if (primary_if)
		batadv_hardif_put(primary_if);
		batadv_hardif_put(primary_if);
+22 −21
Original line number Original line Diff line number Diff line
@@ -27,18 +27,19 @@ struct seq_file;
struct sk_buff;
struct sk_buff;


#ifdef CONFIG_BATMAN_ADV_BLA
#ifdef CONFIG_BATMAN_ADV_BLA
int batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb,
bool batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb,
		   unsigned short vid, bool is_bcast);
		   unsigned short vid, bool is_bcast);
int batadv_bla_tx(struct batadv_priv *bat_priv, struct sk_buff *skb,
bool batadv_bla_tx(struct batadv_priv *bat_priv, struct sk_buff *skb,
		   unsigned short vid);
		   unsigned short vid);
int batadv_bla_is_backbone_gw(struct sk_buff *skb,
bool batadv_bla_is_backbone_gw(struct sk_buff *skb,
			      struct batadv_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_backbone_table_seq_print_text(struct seq_file *seq,
int batadv_bla_backbone_table_seq_print_text(struct seq_file *seq,
					     void *offset);
					     void *offset);
bool batadv_bla_is_backbone_gw_orig(struct batadv_priv *bat_priv, u8 *orig,
bool batadv_bla_is_backbone_gw_orig(struct batadv_priv *bat_priv, u8 *orig,
				    unsigned short vid);
				    unsigned short vid);
int batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv,
bool batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv,
				    struct sk_buff *skb);
				    struct sk_buff *skb);
void batadv_bla_update_orig_address(struct batadv_priv *bat_priv,
void batadv_bla_update_orig_address(struct batadv_priv *bat_priv,
				    struct batadv_hard_iface *primary_if,
				    struct batadv_hard_iface *primary_if,
@@ -50,24 +51,24 @@ 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 batadv_priv *bat_priv,
static inline bool batadv_bla_rx(struct batadv_priv *bat_priv,
				 struct sk_buff *skb, unsigned short vid,
				 struct sk_buff *skb, unsigned short vid,
				 bool is_bcast)
				 bool is_bcast)
{
{
	return 0;
	return false;
}
}


static inline int batadv_bla_tx(struct batadv_priv *bat_priv,
static inline bool batadv_bla_tx(struct batadv_priv *bat_priv,
				 struct sk_buff *skb, unsigned short vid)
				 struct sk_buff *skb, unsigned short vid)
{
{
	return 0;
	return false;
}
}


static inline int batadv_bla_is_backbone_gw(struct sk_buff *skb,
static inline bool batadv_bla_is_backbone_gw(struct sk_buff *skb,
					     struct batadv_orig_node *orig_node,
					     struct batadv_orig_node *orig_node,
					     int hdr_size)
					     int hdr_size)
{
{
	return 0;
	return false;
}
}


static inline int batadv_bla_claim_table_seq_print_text(struct seq_file *seq,
static inline int batadv_bla_claim_table_seq_print_text(struct seq_file *seq,
@@ -88,11 +89,11 @@ static inline bool batadv_bla_is_backbone_gw_orig(struct batadv_priv *bat_priv,
	return false;
	return false;
}
}


static inline int
static inline bool
batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv,
batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv,
			       struct sk_buff *skb)
			       struct sk_buff *skb)
{
{
	return 0;
	return false;
}
}


static inline void
static inline void
Loading