aboutsummaryrefslogtreecommitdiffstats
path: root/net/batman-adv/bat_iv_ogm.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/batman-adv/bat_iv_ogm.c')
-rw-r--r--net/batman-adv/bat_iv_ogm.c206
1 files changed, 107 insertions, 99 deletions
diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c
index 94e6fdbdd13d..025df7c9a2d9 100644
--- a/net/batman-adv/bat_iv_ogm.c
+++ b/net/batman-adv/bat_iv_ogm.c
@@ -179,16 +179,16 @@ static void bat_iv_ogm_send_to_if(struct forw_packet *forw_packet,
179 fwd_str = (packet_num > 0 ? "Forwarding" : (forw_packet->own ? 179 fwd_str = (packet_num > 0 ? "Forwarding" : (forw_packet->own ?
180 "Sending own" : 180 "Sending own" :
181 "Forwarding")); 181 "Forwarding"));
182 bat_dbg(DBG_BATMAN, bat_priv, 182 batadv_dbg(DBG_BATMAN, bat_priv,
183 "%s %spacket (originator %pM, seqno %u, TQ %d, TTL %d, IDF %s, ttvn %d) on interface %s [%pM]\n", 183 "%s %spacket (originator %pM, seqno %u, TQ %d, TTL %d, IDF %s, ttvn %d) on interface %s [%pM]\n",
184 fwd_str, (packet_num > 0 ? "aggregated " : ""), 184 fwd_str, (packet_num > 0 ? "aggregated " : ""),
185 batman_ogm_packet->orig, 185 batman_ogm_packet->orig,
186 ntohl(batman_ogm_packet->seqno), 186 ntohl(batman_ogm_packet->seqno),
187 batman_ogm_packet->tq, batman_ogm_packet->header.ttl, 187 batman_ogm_packet->tq, batman_ogm_packet->header.ttl,
188 (batman_ogm_packet->flags & DIRECTLINK ? 188 (batman_ogm_packet->flags & DIRECTLINK ?
189 "on" : "off"), 189 "on" : "off"),
190 batman_ogm_packet->ttvn, hard_iface->net_dev->name, 190 batman_ogm_packet->ttvn, hard_iface->net_dev->name,
191 hard_iface->net_dev->dev_addr); 191 hard_iface->net_dev->dev_addr);
192 192
193 buff_pos += BATMAN_OGM_HLEN; 193 buff_pos += BATMAN_OGM_HLEN;
194 buff_pos += batadv_tt_len(batman_ogm_packet->tt_num_changes); 194 buff_pos += batadv_tt_len(batman_ogm_packet->tt_num_changes);
@@ -243,14 +243,14 @@ static void bat_iv_ogm_emit(struct forw_packet *forw_packet)
243 (forw_packet->own && (forw_packet->if_incoming != primary_if))) { 243 (forw_packet->own && (forw_packet->if_incoming != primary_if))) {
244 244
245 /* FIXME: what about aggregated packets ? */ 245 /* FIXME: what about aggregated packets ? */
246 bat_dbg(DBG_BATMAN, bat_priv, 246 batadv_dbg(DBG_BATMAN, bat_priv,
247 "%s packet (originator %pM, seqno %u, TTL %d) on interface %s [%pM]\n", 247 "%s packet (originator %pM, seqno %u, TTL %d) on interface %s [%pM]\n",
248 (forw_packet->own ? "Sending own" : "Forwarding"), 248 (forw_packet->own ? "Sending own" : "Forwarding"),
249 batman_ogm_packet->orig, 249 batman_ogm_packet->orig,
250 ntohl(batman_ogm_packet->seqno), 250 ntohl(batman_ogm_packet->seqno),
251 batman_ogm_packet->header.ttl, 251 batman_ogm_packet->header.ttl,
252 forw_packet->if_incoming->net_dev->name, 252 forw_packet->if_incoming->net_dev->name,
253 forw_packet->if_incoming->net_dev->dev_addr); 253 forw_packet->if_incoming->net_dev->dev_addr);
254 254
255 /* skb is only used once and than forw_packet is free'd */ 255 /* skb is only used once and than forw_packet is free'd */
256 batadv_send_skb_packet(forw_packet->skb, 256 batadv_send_skb_packet(forw_packet->skb,
@@ -373,8 +373,8 @@ static void bat_iv_ogm_aggregate_new(const unsigned char *packet_buff,
373 /* own packet should always be scheduled */ 373 /* own packet should always be scheduled */
374 if (!own_packet) { 374 if (!own_packet) {
375 if (!atomic_dec_not_zero(&bat_priv->batman_queue_left)) { 375 if (!atomic_dec_not_zero(&bat_priv->batman_queue_left)) {
376 bat_dbg(DBG_BATMAN, bat_priv, 376 batadv_dbg(DBG_BATMAN, bat_priv,
377 "batman packet queue full\n"); 377 "batman packet queue full\n");
378 goto out; 378 goto out;
379 } 379 }
380 } 380 }
@@ -521,7 +521,7 @@ static void bat_iv_ogm_forward(struct orig_node *orig_node,
521 uint8_t tt_num_changes; 521 uint8_t tt_num_changes;
522 522
523 if (batman_ogm_packet->header.ttl <= 1) { 523 if (batman_ogm_packet->header.ttl <= 1) {
524 bat_dbg(DBG_BATMAN, bat_priv, "ttl exceeded\n"); 524 batadv_dbg(DBG_BATMAN, bat_priv, "ttl exceeded\n");
525 return; 525 return;
526 } 526 }
527 527
@@ -546,9 +546,9 @@ static void bat_iv_ogm_forward(struct orig_node *orig_node,
546 /* apply hop penalty */ 546 /* apply hop penalty */
547 batman_ogm_packet->tq = hop_penalty(batman_ogm_packet->tq, bat_priv); 547 batman_ogm_packet->tq = hop_penalty(batman_ogm_packet->tq, bat_priv);
548 548
549 bat_dbg(DBG_BATMAN, bat_priv, 549 batadv_dbg(DBG_BATMAN, bat_priv,
550 "Forwarding packet: tq: %i, ttl: %i\n", 550 "Forwarding packet: tq: %i, ttl: %i\n",
551 batman_ogm_packet->tq, batman_ogm_packet->header.ttl); 551 batman_ogm_packet->tq, batman_ogm_packet->header.ttl);
552 552
553 /* switch of primaries first hop flag when forwarding */ 553 /* switch of primaries first hop flag when forwarding */
554 batman_ogm_packet->flags &= ~PRIMARIES_FIRST_HOP; 554 batman_ogm_packet->flags &= ~PRIMARIES_FIRST_HOP;
@@ -625,16 +625,18 @@ static void bat_iv_ogm_orig_update(struct bat_priv *bat_priv,
625 struct orig_node *orig_node_tmp; 625 struct orig_node *orig_node_tmp;
626 struct hlist_node *node; 626 struct hlist_node *node;
627 uint8_t bcast_own_sum_orig, bcast_own_sum_neigh; 627 uint8_t bcast_own_sum_orig, bcast_own_sum_neigh;
628 uint8_t *neigh_addr;
628 629
629 bat_dbg(DBG_BATMAN, bat_priv, 630 batadv_dbg(DBG_BATMAN, bat_priv,
630 "update_originator(): Searching and updating originator entry of received packet\n"); 631 "update_originator(): Searching and updating originator entry of received packet\n");
631 632
632 rcu_read_lock(); 633 rcu_read_lock();
633 hlist_for_each_entry_rcu(tmp_neigh_node, node, 634 hlist_for_each_entry_rcu(tmp_neigh_node, node,
634 &orig_node->neigh_list, list) { 635 &orig_node->neigh_list, list) {
635 if (compare_eth(tmp_neigh_node->addr, ethhdr->h_source) && 636 neigh_addr = tmp_neigh_node->addr;
636 (tmp_neigh_node->if_incoming == if_incoming) && 637 if (batadv_compare_eth(neigh_addr, ethhdr->h_source) &&
637 atomic_inc_not_zero(&tmp_neigh_node->refcount)) { 638 tmp_neigh_node->if_incoming == if_incoming &&
639 atomic_inc_not_zero(&tmp_neigh_node->refcount)) {
638 if (neigh_node) 640 if (neigh_node)
639 batadv_neigh_node_free_ref(neigh_node); 641 batadv_neigh_node_free_ref(neigh_node);
640 neigh_node = tmp_neigh_node; 642 neigh_node = tmp_neigh_node;
@@ -667,8 +669,8 @@ static void bat_iv_ogm_orig_update(struct bat_priv *bat_priv,
667 if (!neigh_node) 669 if (!neigh_node)
668 goto unlock; 670 goto unlock;
669 } else 671 } else
670 bat_dbg(DBG_BATMAN, bat_priv, 672 batadv_dbg(DBG_BATMAN, bat_priv,
671 "Updating existing last-hop neighbor of originator\n"); 673 "Updating existing last-hop neighbor of originator\n");
672 674
673 rcu_read_unlock(); 675 rcu_read_unlock();
674 676
@@ -774,7 +776,8 @@ static int bat_iv_ogm_calc_tq(struct orig_node *orig_node,
774 hlist_for_each_entry_rcu(tmp_neigh_node, node, 776 hlist_for_each_entry_rcu(tmp_neigh_node, node,
775 &orig_neigh_node->neigh_list, list) { 777 &orig_neigh_node->neigh_list, list) {
776 778
777 if (!compare_eth(tmp_neigh_node->addr, orig_neigh_node->orig)) 779 if (!batadv_compare_eth(tmp_neigh_node->addr,
780 orig_neigh_node->orig))
778 continue; 781 continue;
779 782
780 if (tmp_neigh_node->if_incoming != if_incoming) 783 if (tmp_neigh_node->if_incoming != if_incoming)
@@ -844,10 +847,11 @@ static int bat_iv_ogm_calc_tq(struct orig_node *orig_node,
844 * tq_asym_penalty) / 847 * tq_asym_penalty) /
845 (TQ_MAX_VALUE * TQ_MAX_VALUE)); 848 (TQ_MAX_VALUE * TQ_MAX_VALUE));
846 849
847 bat_dbg(DBG_BATMAN, bat_priv, 850 batadv_dbg(DBG_BATMAN, bat_priv,
848 "bidirectional: orig = %-15pM neigh = %-15pM => own_bcast = %2i, real recv = %2i, local tq: %3i, asym_penalty: %3i, total tq: %3i\n", 851 "bidirectional: orig = %-15pM neigh = %-15pM => own_bcast = %2i, real recv = %2i, local tq: %3i, asym_penalty: %3i, total tq: %3i\n",
849 orig_node->orig, orig_neigh_node->orig, total_count, 852 orig_node->orig, orig_neigh_node->orig, total_count,
850 neigh_rq_count, tq_own, tq_asym_penalty, batman_ogm_packet->tq); 853 neigh_rq_count, tq_own,
854 tq_asym_penalty, batman_ogm_packet->tq);
851 855
852 /* if link has the minimum required transmission quality 856 /* if link has the minimum required transmission quality
853 * consider it bidirectional 857 * consider it bidirectional
@@ -883,6 +887,7 @@ static int bat_iv_ogm_update_seqnos(const struct ethhdr *ethhdr,
883 int need_update = 0; 887 int need_update = 0;
884 int set_mark, ret = -1; 888 int set_mark, ret = -1;
885 uint32_t seqno = ntohl(batman_ogm_packet->seqno); 889 uint32_t seqno = ntohl(batman_ogm_packet->seqno);
890 uint8_t *neigh_addr;
886 891
887 orig_node = batadv_get_orig_node(bat_priv, batman_ogm_packet->orig); 892 orig_node = batadv_get_orig_node(bat_priv, batman_ogm_packet->orig);
888 if (!orig_node) 893 if (!orig_node)
@@ -905,8 +910,9 @@ static int bat_iv_ogm_update_seqnos(const struct ethhdr *ethhdr,
905 orig_node->last_real_seqno, 910 orig_node->last_real_seqno,
906 seqno); 911 seqno);
907 912
908 if (compare_eth(tmp_neigh_node->addr, ethhdr->h_source) && 913 neigh_addr = tmp_neigh_node->addr;
909 (tmp_neigh_node->if_incoming == if_incoming)) 914 if (batadv_compare_eth(neigh_addr, ethhdr->h_source) &&
915 tmp_neigh_node->if_incoming == if_incoming)
910 set_mark = 1; 916 set_mark = 1;
911 else 917 else
912 set_mark = 0; 918 set_mark = 0;
@@ -923,9 +929,9 @@ static int bat_iv_ogm_update_seqnos(const struct ethhdr *ethhdr,
923 rcu_read_unlock(); 929 rcu_read_unlock();
924 930
925 if (need_update) { 931 if (need_update) {
926 bat_dbg(DBG_BATMAN, bat_priv, 932 batadv_dbg(DBG_BATMAN, bat_priv,
927 "updating last_seqno: old %u, new %u\n", 933 "updating last_seqno: old %u, new %u\n",
928 orig_node->last_real_seqno, seqno); 934 orig_node->last_real_seqno, seqno);
929 orig_node->last_real_seqno = seqno; 935 orig_node->last_real_seqno = seqno;
930 } 936 }
931 937
@@ -954,6 +960,7 @@ static void bat_iv_ogm_process(const struct ethhdr *ethhdr,
954 bool is_from_best_next_hop = false; 960 bool is_from_best_next_hop = false;
955 int is_duplicate; 961 int is_duplicate;
956 uint32_t if_incoming_seqno; 962 uint32_t if_incoming_seqno;
963 uint8_t *prev_sender;
957 964
958 /* Silently drop when the batman packet is actually not a 965 /* Silently drop when the batman packet is actually not a
959 * correct packet. 966 * correct packet.
@@ -975,18 +982,19 @@ static void bat_iv_ogm_process(const struct ethhdr *ethhdr,
975 982
976 has_directlink_flag = (batman_ogm_packet->flags & DIRECTLINK ? 1 : 0); 983 has_directlink_flag = (batman_ogm_packet->flags & DIRECTLINK ? 1 : 0);
977 984
978 if (compare_eth(ethhdr->h_source, batman_ogm_packet->orig)) 985 if (batadv_compare_eth(ethhdr->h_source, batman_ogm_packet->orig))
979 is_single_hop_neigh = true; 986 is_single_hop_neigh = true;
980 987
981 bat_dbg(DBG_BATMAN, bat_priv, 988 batadv_dbg(DBG_BATMAN, bat_priv,
982 "Received BATMAN packet via NB: %pM, IF: %s [%pM] (from OG: %pM, via prev OG: %pM, seqno %u, ttvn %u, crc %u, changes %u, td %d, TTL %d, V %d, IDF %d)\n", 989 "Received BATMAN packet via NB: %pM, IF: %s [%pM] (from OG: %pM, via prev OG: %pM, seqno %u, ttvn %u, crc %u, changes %u, td %d, TTL %d, V %d, IDF %d)\n",
983 ethhdr->h_source, if_incoming->net_dev->name, 990 ethhdr->h_source, if_incoming->net_dev->name,
984 if_incoming->net_dev->dev_addr, batman_ogm_packet->orig, 991 if_incoming->net_dev->dev_addr, batman_ogm_packet->orig,
985 batman_ogm_packet->prev_sender, ntohl(batman_ogm_packet->seqno), 992 batman_ogm_packet->prev_sender,
986 batman_ogm_packet->ttvn, ntohs(batman_ogm_packet->tt_crc), 993 ntohl(batman_ogm_packet->seqno), batman_ogm_packet->ttvn,
987 batman_ogm_packet->tt_num_changes, batman_ogm_packet->tq, 994 ntohs(batman_ogm_packet->tt_crc),
988 batman_ogm_packet->header.ttl, 995 batman_ogm_packet->tt_num_changes, batman_ogm_packet->tq,
989 batman_ogm_packet->header.version, has_directlink_flag); 996 batman_ogm_packet->header.ttl,
997 batman_ogm_packet->header.version, has_directlink_flag);
990 998
991 rcu_read_lock(); 999 rcu_read_lock();
992 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { 1000 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) {
@@ -996,16 +1004,16 @@ static void bat_iv_ogm_process(const struct ethhdr *ethhdr,
996 if (hard_iface->soft_iface != if_incoming->soft_iface) 1004 if (hard_iface->soft_iface != if_incoming->soft_iface)
997 continue; 1005 continue;
998 1006
999 if (compare_eth(ethhdr->h_source, 1007 if (batadv_compare_eth(ethhdr->h_source,
1000 hard_iface->net_dev->dev_addr)) 1008 hard_iface->net_dev->dev_addr))
1001 is_my_addr = 1; 1009 is_my_addr = 1;
1002 1010
1003 if (compare_eth(batman_ogm_packet->orig, 1011 if (batadv_compare_eth(batman_ogm_packet->orig,
1004 hard_iface->net_dev->dev_addr)) 1012 hard_iface->net_dev->dev_addr))
1005 is_my_orig = 1; 1013 is_my_orig = 1;
1006 1014
1007 if (compare_eth(batman_ogm_packet->prev_sender, 1015 if (batadv_compare_eth(batman_ogm_packet->prev_sender,
1008 hard_iface->net_dev->dev_addr)) 1016 hard_iface->net_dev->dev_addr))
1009 is_my_oldorig = 1; 1017 is_my_oldorig = 1;
1010 1018
1011 if (is_broadcast_ether_addr(ethhdr->h_source)) 1019 if (is_broadcast_ether_addr(ethhdr->h_source))
@@ -1014,23 +1022,23 @@ static void bat_iv_ogm_process(const struct ethhdr *ethhdr,
1014 rcu_read_unlock(); 1022 rcu_read_unlock();
1015 1023
1016 if (batman_ogm_packet->header.version != COMPAT_VERSION) { 1024 if (batman_ogm_packet->header.version != COMPAT_VERSION) {
1017 bat_dbg(DBG_BATMAN, bat_priv, 1025 batadv_dbg(DBG_BATMAN, bat_priv,
1018 "Drop packet: incompatible batman version (%i)\n", 1026 "Drop packet: incompatible batman version (%i)\n",
1019 batman_ogm_packet->header.version); 1027 batman_ogm_packet->header.version);
1020 return; 1028 return;
1021 } 1029 }
1022 1030
1023 if (is_my_addr) { 1031 if (is_my_addr) {
1024 bat_dbg(DBG_BATMAN, bat_priv, 1032 batadv_dbg(DBG_BATMAN, bat_priv,
1025 "Drop packet: received my own broadcast (sender: %pM)\n", 1033 "Drop packet: received my own broadcast (sender: %pM)\n",
1026 ethhdr->h_source); 1034 ethhdr->h_source);
1027 return; 1035 return;
1028 } 1036 }
1029 1037
1030 if (is_broadcast) { 1038 if (is_broadcast) {
1031 bat_dbg(DBG_BATMAN, bat_priv, 1039 batadv_dbg(DBG_BATMAN, bat_priv,
1032 "Drop packet: ignoring all packets with broadcast source addr (sender: %pM)\n", 1040 "Drop packet: ignoring all packets with broadcast source addr (sender: %pM)\n",
1033 ethhdr->h_source); 1041 ethhdr->h_source);
1034 return; 1042 return;
1035 } 1043 }
1036 1044
@@ -1049,8 +1057,8 @@ static void bat_iv_ogm_process(const struct ethhdr *ethhdr,
1049 * save packet seqno for bidirectional check 1057 * save packet seqno for bidirectional check
1050 */ 1058 */
1051 if (has_directlink_flag && 1059 if (has_directlink_flag &&
1052 compare_eth(if_incoming->net_dev->dev_addr, 1060 batadv_compare_eth(if_incoming->net_dev->dev_addr,
1053 batman_ogm_packet->orig)) { 1061 batman_ogm_packet->orig)) {
1054 offset = if_incoming->if_num * NUM_WORDS; 1062 offset = if_incoming->if_num * NUM_WORDS;
1055 1063
1056 spin_lock_bh(&orig_neigh_node->ogm_cnt_lock); 1064 spin_lock_bh(&orig_neigh_node->ogm_cnt_lock);
@@ -1063,23 +1071,23 @@ static void bat_iv_ogm_process(const struct ethhdr *ethhdr,
1063 spin_unlock_bh(&orig_neigh_node->ogm_cnt_lock); 1071 spin_unlock_bh(&orig_neigh_node->ogm_cnt_lock);
1064 } 1072 }
1065 1073
1066 bat_dbg(DBG_BATMAN, bat_priv, 1074 batadv_dbg(DBG_BATMAN, bat_priv,
1067 "Drop packet: originator packet from myself (via neighbor)\n"); 1075 "Drop packet: originator packet from myself (via neighbor)\n");
1068 batadv_orig_node_free_ref(orig_neigh_node); 1076 batadv_orig_node_free_ref(orig_neigh_node);
1069 return; 1077 return;
1070 } 1078 }
1071 1079
1072 if (is_my_oldorig) { 1080 if (is_my_oldorig) {
1073 bat_dbg(DBG_BATMAN, bat_priv, 1081 batadv_dbg(DBG_BATMAN, bat_priv,
1074 "Drop packet: ignoring all rebroadcast echos (sender: %pM)\n", 1082 "Drop packet: ignoring all rebroadcast echos (sender: %pM)\n",
1075 ethhdr->h_source); 1083 ethhdr->h_source);
1076 return; 1084 return;
1077 } 1085 }
1078 1086
1079 if (batman_ogm_packet->flags & NOT_BEST_NEXT_HOP) { 1087 if (batman_ogm_packet->flags & NOT_BEST_NEXT_HOP) {
1080 bat_dbg(DBG_BATMAN, bat_priv, 1088 batadv_dbg(DBG_BATMAN, bat_priv,
1081 "Drop packet: ignoring all packets not forwarded from the best next hop (sender: %pM)\n", 1089 "Drop packet: ignoring all packets not forwarded from the best next hop (sender: %pM)\n",
1082 ethhdr->h_source); 1090 ethhdr->h_source);
1083 return; 1091 return;
1084 } 1092 }
1085 1093
@@ -1091,15 +1099,15 @@ static void bat_iv_ogm_process(const struct ethhdr *ethhdr,
1091 if_incoming); 1099 if_incoming);
1092 1100
1093 if (is_duplicate == -1) { 1101 if (is_duplicate == -1) {
1094 bat_dbg(DBG_BATMAN, bat_priv, 1102 batadv_dbg(DBG_BATMAN, bat_priv,
1095 "Drop packet: packet within seqno protection time (sender: %pM)\n", 1103 "Drop packet: packet within seqno protection time (sender: %pM)\n",
1096 ethhdr->h_source); 1104 ethhdr->h_source);
1097 goto out; 1105 goto out;
1098 } 1106 }
1099 1107
1100 if (batman_ogm_packet->tq == 0) { 1108 if (batman_ogm_packet->tq == 0) {
1101 bat_dbg(DBG_BATMAN, bat_priv, 1109 batadv_dbg(DBG_BATMAN, bat_priv,
1102 "Drop packet: originator packet with tq equal 0\n"); 1110 "Drop packet: originator packet with tq equal 0\n");
1103 goto out; 1111 goto out;
1104 } 1112 }
1105 1113
@@ -1108,18 +1116,18 @@ static void bat_iv_ogm_process(const struct ethhdr *ethhdr,
1108 router_router = batadv_orig_node_get_router(router->orig_node); 1116 router_router = batadv_orig_node_get_router(router->orig_node);
1109 1117
1110 if ((router && router->tq_avg != 0) && 1118 if ((router && router->tq_avg != 0) &&
1111 (compare_eth(router->addr, ethhdr->h_source))) 1119 (batadv_compare_eth(router->addr, ethhdr->h_source)))
1112 is_from_best_next_hop = true; 1120 is_from_best_next_hop = true;
1113 1121
1122 prev_sender = batman_ogm_packet->prev_sender;
1114 /* avoid temporary routing loops */ 1123 /* avoid temporary routing loops */
1115 if (router && router_router && 1124 if (router && router_router &&
1116 (compare_eth(router->addr, batman_ogm_packet->prev_sender)) && 1125 (batadv_compare_eth(router->addr, prev_sender)) &&
1117 !(compare_eth(batman_ogm_packet->orig, 1126 !(batadv_compare_eth(batman_ogm_packet->orig, prev_sender)) &&
1118 batman_ogm_packet->prev_sender)) && 1127 (batadv_compare_eth(router->addr, router_router->addr))) {
1119 (compare_eth(router->addr, router_router->addr))) { 1128 batadv_dbg(DBG_BATMAN, bat_priv,
1120 bat_dbg(DBG_BATMAN, bat_priv, 1129 "Drop packet: ignoring all rebroadcast packets that may make me loop (sender: %pM)\n",
1121 "Drop packet: ignoring all rebroadcast packets that may make me loop (sender: %pM)\n", 1130 ethhdr->h_source);
1122 ethhdr->h_source);
1123 goto out; 1131 goto out;
1124 } 1132 }
1125 1133
@@ -1138,8 +1146,8 @@ static void bat_iv_ogm_process(const struct ethhdr *ethhdr,
1138 * don't route towards it 1146 * don't route towards it
1139 */ 1147 */
1140 if (!is_single_hop_neigh && (!orig_neigh_router)) { 1148 if (!is_single_hop_neigh && (!orig_neigh_router)) {
1141 bat_dbg(DBG_BATMAN, bat_priv, 1149 batadv_dbg(DBG_BATMAN, bat_priv,
1142 "Drop packet: OGM via unknown neighbor!\n"); 1150 "Drop packet: OGM via unknown neighbor!\n");
1143 goto out_neigh; 1151 goto out_neigh;
1144 } 1152 }
1145 1153
@@ -1168,26 +1176,26 @@ static void bat_iv_ogm_process(const struct ethhdr *ethhdr,
1168 is_single_hop_neigh, is_from_best_next_hop, 1176 is_single_hop_neigh, is_from_best_next_hop,
1169 if_incoming); 1177 if_incoming);
1170 1178
1171 bat_dbg(DBG_BATMAN, bat_priv, 1179 batadv_dbg(DBG_BATMAN, bat_priv,
1172 "Forwarding packet: rebroadcast neighbor packet with direct link flag\n"); 1180 "Forwarding packet: rebroadcast neighbor packet with direct link flag\n");
1173 goto out_neigh; 1181 goto out_neigh;
1174 } 1182 }
1175 1183
1176 /* multihop originator */ 1184 /* multihop originator */
1177 if (!is_bidirectional) { 1185 if (!is_bidirectional) {
1178 bat_dbg(DBG_BATMAN, bat_priv, 1186 batadv_dbg(DBG_BATMAN, bat_priv,
1179 "Drop packet: not received via bidirectional link\n"); 1187 "Drop packet: not received via bidirectional link\n");
1180 goto out_neigh; 1188 goto out_neigh;
1181 } 1189 }
1182 1190
1183 if (is_duplicate) { 1191 if (is_duplicate) {
1184 bat_dbg(DBG_BATMAN, bat_priv, 1192 batadv_dbg(DBG_BATMAN, bat_priv,
1185 "Drop packet: duplicate packet received\n"); 1193 "Drop packet: duplicate packet received\n");
1186 goto out_neigh; 1194 goto out_neigh;
1187 } 1195 }
1188 1196
1189 bat_dbg(DBG_BATMAN, bat_priv, 1197 batadv_dbg(DBG_BATMAN, bat_priv,
1190 "Forwarding packet: rebroadcast originator packet\n"); 1198 "Forwarding packet: rebroadcast originator packet\n");
1191 bat_iv_ogm_forward(orig_node, ethhdr, batman_ogm_packet, 1199 bat_iv_ogm_forward(orig_node, ethhdr, batman_ogm_packet,
1192 is_single_hop_neigh, is_from_best_next_hop, 1200 is_single_hop_neigh, is_from_best_next_hop,
1193 if_incoming); 1201 if_incoming);