From cdbfaca8130ed0b831ca38e8022436b06f53604c Mon Sep 17 00:00:00 2001 From: Antonio Quartulli Date: Sun, 14 Oct 2012 17:19:19 +0200 Subject: [PATCH] --- yaml --- r: 340705 b: refs/heads/master c: 9affec6be810d1d529cb9dc95126119451696ba6 h: refs/heads/master i: 340703: 480469b37468c33895e84294b451caab9986a99f v: v3 --- [refs] | 2 +- trunk/net/batman-adv/routing.c | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index d79dfe9b61cc..05400cde8cab 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4046b24aface62f5647699e9af3260a486bc5f49 +refs/heads/master: 9affec6be810d1d529cb9dc95126119451696ba6 diff --git a/trunk/net/batman-adv/routing.c b/trunk/net/batman-adv/routing.c index 3f21c0905dde..32aa4d460e1f 100644 --- a/trunk/net/batman-adv/routing.c +++ b/trunk/net/batman-adv/routing.c @@ -986,6 +986,8 @@ int batadv_recv_unicast_packet(struct sk_buff *skb, struct batadv_priv *bat_priv = netdev_priv(recv_if->soft_iface); struct batadv_unicast_packet *unicast_packet; struct batadv_unicast_4addr_packet *unicast_4addr_packet; + uint8_t *orig_addr; + struct batadv_orig_node *orig_node = NULL; int hdr_size = sizeof(*unicast_packet); bool is4addr; @@ -1005,9 +1007,12 @@ int batadv_recv_unicast_packet(struct sk_buff *skb, /* packet for me */ if (batadv_is_my_mac(unicast_packet->dest)) { - if (is4addr) + if (is4addr) { batadv_dat_inc_counter(bat_priv, unicast_4addr_packet->subtype); + orig_addr = unicast_4addr_packet->src; + orig_node = batadv_orig_hash_find(bat_priv, orig_addr); + } if (batadv_dat_snoop_incoming_arp_request(bat_priv, skb, hdr_size)) @@ -1017,9 +1022,12 @@ int batadv_recv_unicast_packet(struct sk_buff *skb, goto rx_success; batadv_interface_rx(recv_if->soft_iface, skb, recv_if, hdr_size, - NULL); + orig_node); rx_success: + if (orig_node) + batadv_orig_node_free_ref(orig_node); + return NET_RX_SUCCESS; }