aboutsummaryrefslogtreecommitdiff
path: root/net/batman-adv/routing.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/batman-adv/routing.c')
-rw-r--r--net/batman-adv/routing.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/net/batman-adv/routing.c b/net/batman-adv/routing.c
index 46dd5b47ed2..859679b0828 100644
--- a/net/batman-adv/routing.c
+++ b/net/batman-adv/routing.c
@@ -986,14 +986,18 @@ int batadv_recv_unicast_packet(struct sk_buff *skb,
struct batadv_unicast_packet *unicast_packet;
int hdr_size = sizeof(*unicast_packet);
+ unicast_packet = (struct batadv_unicast_packet *)skb->data;
+
+ /* the caller function should have already pulled 2 bytes */
+ if (unicast_packet->header.packet_type == BATADV_UNICAST_4ADDR)
+ hdr_size = sizeof(struct batadv_unicast_4addr_packet);
+
if (batadv_check_unicast_packet(skb, hdr_size) < 0)
return NET_RX_DROP;
if (!batadv_check_unicast_ttvn(bat_priv, skb))
return NET_RX_DROP;
- unicast_packet = (struct batadv_unicast_packet *)skb->data;
-
/* packet for me */
if (batadv_is_my_mac(unicast_packet->dest)) {
batadv_interface_rx(recv_if->soft_iface, skb, recv_if, hdr_size,