summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2010-11-10 17:08:26 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2010-11-10 17:08:26 -0800
commit6174c3496d43b78969d4a989e1aabfbc55acbf15 (patch)
tree1229fbe1ecd94ae14f9ff25ac968d028c2bb7d88
parent3701befc44eb9b0e5a0e0b7169448658919b9850 (diff)
downloadop-kernel-dev-6174c3496d43b78969d4a989e1aabfbc55acbf15.zip
op-kernel-dev-6174c3496d43b78969d4a989e1aabfbc55acbf15.tar.gz
Revert "staging: batman-adv: Use linux/etherdevice.h address helper functions"
This reverts commit 5712dc7fc812d1bdbc5e634d389bc759d4e7550c. Turns out the batman maintainers didn't like the implementation of it, and the original author was going to rework it to meet their approval, and I applied it without fully realizing all of this. My fault. Cc: Marek Lindner <lindner_marek@yahoo.de> Cc: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Cc: Andrew Lunn <andrew@lunn.ch> Cc: Tobias Klauser <tklauser@distanz.ch> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/staging/batman-adv/main.c12
-rw-r--r--drivers/staging/batman-adv/main.h3
-rw-r--r--drivers/staging/batman-adv/routing.c16
-rw-r--r--drivers/staging/batman-adv/soft-interface.c2
-rw-r--r--drivers/staging/batman-adv/vis.c4
5 files changed, 24 insertions, 13 deletions
diff --git a/drivers/staging/batman-adv/main.c b/drivers/staging/batman-adv/main.c
index 6ea6420..0587940 100644
--- a/drivers/staging/batman-adv/main.c
+++ b/drivers/staging/batman-adv/main.c
@@ -149,7 +149,7 @@ void dec_module_count(void)
int compare_orig(void *data1, void *data2)
{
- return (compare_ether_addr(data1, data2) == 0 ? 1 : 0);
+ return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0);
}
/* hashfunction to choose an entry in a hash table of given size */
@@ -192,6 +192,16 @@ int is_my_mac(uint8_t *addr)
}
+int is_bcast(uint8_t *addr)
+{
+ return (addr[0] == (uint8_t)0xff) && (addr[1] == (uint8_t)0xff);
+}
+
+int is_mcast(uint8_t *addr)
+{
+ return *addr & 0x01;
+}
+
module_init(batman_init);
module_exit(batman_exit);
diff --git a/drivers/staging/batman-adv/main.h b/drivers/staging/batman-adv/main.h
index 14d567d..5e3f516 100644
--- a/drivers/staging/batman-adv/main.h
+++ b/drivers/staging/batman-adv/main.h
@@ -109,7 +109,6 @@
#include <linux/mutex.h> /* mutex */
#include <linux/module.h> /* needed by all modules */
#include <linux/netdevice.h> /* netdevice */
-#include <linux/etherdevice.h>
#include <linux/if_ether.h> /* ethernet header */
#include <linux/poll.h> /* poll_table */
#include <linux/kthread.h> /* kernel threads */
@@ -139,6 +138,8 @@ void dec_module_count(void);
int compare_orig(void *data1, void *data2);
int choose_orig(void *data, int32_t size);
int is_my_mac(uint8_t *addr);
+int is_bcast(uint8_t *addr);
+int is_mcast(uint8_t *addr);
#ifdef CONFIG_BATMAN_ADV_DEBUG
int debug_log(struct bat_priv *bat_priv, char *fmt, ...);
diff --git a/drivers/staging/batman-adv/routing.c b/drivers/staging/batman-adv/routing.c
index d42c165..9010263 100644
--- a/drivers/staging/batman-adv/routing.c
+++ b/drivers/staging/batman-adv/routing.c
@@ -756,11 +756,11 @@ int recv_bat_packet(struct sk_buff *skb, struct batman_if *batman_if)
ethhdr = (struct ethhdr *)skb_mac_header(skb);
/* packet with broadcast indication but unicast recipient */
- if (!is_broadcast_ether_addr(ethhdr->h_dest))
+ if (!is_bcast(ethhdr->h_dest))
return NET_RX_DROP;
/* packet with broadcast sender address */
- if (is_broadcast_ether_addr(ethhdr->h_source))
+ if (is_bcast(ethhdr->h_source))
return NET_RX_DROP;
/* create a copy of the skb, if needed, to modify it. */
@@ -933,11 +933,11 @@ int recv_icmp_packet(struct sk_buff *skb, struct batman_if *recv_if)
ethhdr = (struct ethhdr *)skb_mac_header(skb);
/* packet with unicast indication but broadcast recipient */
- if (is_broadcast_ether_addr(ethhdr->h_dest))
+ if (is_bcast(ethhdr->h_dest))
return NET_RX_DROP;
/* packet with broadcast sender address */
- if (is_broadcast_ether_addr(ethhdr->h_source))
+ if (is_bcast(ethhdr->h_source))
return NET_RX_DROP;
/* not for me */
@@ -1107,11 +1107,11 @@ static int check_unicast_packet(struct sk_buff *skb, int hdr_size)
ethhdr = (struct ethhdr *)skb_mac_header(skb);
/* packet with unicast indication but broadcast recipient */
- if (is_broadcast_ether_addr(ethhdr->h_dest))
+ if (is_bcast(ethhdr->h_dest))
return -1;
/* packet with broadcast sender address */
- if (is_broadcast_ether_addr(ethhdr->h_source))
+ if (is_bcast(ethhdr->h_source))
return -1;
/* not for me */
@@ -1283,11 +1283,11 @@ int recv_bcast_packet(struct sk_buff *skb, struct batman_if *recv_if)
ethhdr = (struct ethhdr *)skb_mac_header(skb);
/* packet with broadcast indication but unicast recipient */
- if (!is_broadcast_ether_addr(ethhdr->h_dest))
+ if (!is_bcast(ethhdr->h_dest))
return NET_RX_DROP;
/* packet with broadcast sender address */
- if (is_broadcast_ether_addr(ethhdr->h_source))
+ if (is_bcast(ethhdr->h_source))
return NET_RX_DROP;
/* ignore broadcasts sent by myself */
diff --git a/drivers/staging/batman-adv/soft-interface.c b/drivers/staging/batman-adv/soft-interface.c
index 820e141..3904db9 100644
--- a/drivers/staging/batman-adv/soft-interface.c
+++ b/drivers/staging/batman-adv/soft-interface.c
@@ -140,7 +140,7 @@ int interface_tx(struct sk_buff *skb, struct net_device *soft_iface)
hna_local_add(soft_iface, ethhdr->h_source);
/* ethernet packet should be broadcasted */
- if (is_multicast_ether_addr(ethhdr->h_dest)) {
+ if (is_bcast(ethhdr->h_dest) || is_mcast(ethhdr->h_dest)) {
if (!bat_priv->primary_if)
goto dropped;
diff --git a/drivers/staging/batman-adv/vis.c b/drivers/staging/batman-adv/vis.c
index 395f110..4473cc8 100644
--- a/drivers/staging/batman-adv/vis.c
+++ b/drivers/staging/batman-adv/vis.c
@@ -469,7 +469,7 @@ void receive_client_update_packet(struct bat_priv *bat_priv,
int are_target = 0;
/* clients shall not broadcast. */
- if (is_broadcast_ether_addr(vis_packet->target_orig))
+ if (is_bcast(vis_packet->target_orig))
return;
/* Are we the target for this VIS packet? */
@@ -746,7 +746,7 @@ static void send_vis_packet(struct bat_priv *bat_priv, struct vis_info *info)
ETH_ALEN);
packet->ttl--;
- if (is_broadcast_ether_addr(packet->target_orig))
+ if (is_bcast(packet->target_orig))
broadcast_vis_packet(bat_priv, info);
else
unicast_vis_packet(bat_priv, info);
OpenPOWER on IntegriCloud