linux/net/batman-adv
Marek Lindner 13b2541b11 batman-adv: avoid temporary routing loops by being strict on forwarded OGMs
batman-adv would forward OGMs from non-besthops while replacing the the TQ
and TTL values with the values from the best hop. In certain corner cases
this leads to a temporary routing loop.
This patch changes this behavior: Only packets from best next hops are
forwarded - TQ and TTL values won't be replaced anymore. However, the protocol
needs to rebroadcast OGMs from single hop neighbors regardless of whether or
not they are the best hop. To handle this case a new flag is introduced to
alert neighboring nodes about the forwarded OGM that is not from my best
next hop. It is to be discarded by all nodes except for the one originating
the OGM.

Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
Acked-by: Daniele Furlan <daniele.furlan@gmail.com>
Tested-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
2012-05-11 13:56:05 +02:00
..
bat_algo.h batman-adv: Update copyright years 2012-02-17 02:50:21 +08:00
bat_debugfs.c batman-adv: replace HZ calculations with jiffies_to_msecs() 2012-05-11 10:08:13 +02:00
bat_debugfs.h batman-adv: Update copyright years 2012-02-17 02:50:21 +08:00
bat_iv_ogm.c batman-adv: avoid temporary routing loops by being strict on forwarded OGMs 2012-05-11 13:56:05 +02:00
bat_sysfs.c batman-adv: Adding hard_iface specific sysfs wrapper macros for UINT 2012-05-11 13:56:03 +02:00
bat_sysfs.h batman-adv: Update copyright years 2012-02-17 02:50:21 +08:00
bitarray.c batman-adv: Replace bitarray operations with bitmap 2012-04-11 14:28:58 +02:00
bitarray.h batman-adv: Replace bitarray operations with bitmap 2012-04-11 14:28:58 +02:00
bridge_loop_avoidance.c batman-adv: use ETH_HLEN instead of sizeof(struct ethhdr) 2012-04-18 09:54:01 +02:00
bridge_loop_avoidance.h batman-adv: add bridge loop avoidance compile option 2012-04-11 14:29:00 +02:00
gateway_client.c batman-adv: fix wrong dhcp option list browsing 2012-05-11 10:08:08 +02:00
gateway_client.h batman-adv: Update copyright years 2012-02-17 02:50:21 +08:00
gateway_common.c batman-adv: Ignore 80-chars per line limits for strings 2012-03-11 06:29:44 +08:00
gateway_common.h batman-adv: Update copyright years 2012-02-17 02:50:21 +08:00
hard-interface.c batman-adv: refactoring API: find generalized name for bat_ogm_update_mac callback 2012-05-11 13:56:01 +02:00
hard-interface.h batman-adv: Update copyright years 2012-02-17 02:50:21 +08:00
hash.c batman-adv: Update copyright years 2012-02-17 02:50:21 +08:00
hash.h batman-adv: Update copyright years 2012-02-17 02:50:21 +08:00
icmp_socket.c batman-adv: use ETH_HLEN instead of sizeof(struct ethhdr) 2012-04-18 09:54:01 +02:00
icmp_socket.h batman-adv: Update copyright years 2012-02-17 02:50:21 +08:00
Kconfig batman-adv: add bridge loop avoidance compile option 2012-04-11 14:29:00 +02:00
main.c batman-adv: refactoring API: find generalized name for bat_ogm_update_mac callback 2012-05-11 13:56:01 +02:00
main.h batman-adv: introduce packet type handler array for incoming packets 2012-05-11 10:08:10 +02:00
Makefile batman-adv: add bridge loop avoidance compile option 2012-04-11 14:29:00 +02:00
originator.c batman-adv: split neigh_new function into generic and batman iv specific parts 2012-05-11 13:55:57 +02:00
originator.h batman-adv: split neigh_new function into generic and batman iv specific parts 2012-05-11 13:55:57 +02:00
packet.h batman-adv: avoid temporary routing loops by being strict on forwarded OGMs 2012-05-11 13:56:05 +02:00
ring_buffer.c batman-adv: Update copyright years 2012-02-17 02:50:21 +08:00
ring_buffer.h batman-adv: Update copyright years 2012-02-17 02:50:21 +08:00
routing.c batman-adv: register batman ogm receive function during protocol init 2012-05-11 10:08:11 +02:00
routing.h batman-adv: register batman ogm receive function during protocol init 2012-05-11 10:08:11 +02:00
send.c batman-adv: replace HZ calculations with jiffies_to_msecs() 2012-05-11 10:08:13 +02:00
send.h batman-adv: Update copyright years 2012-02-17 02:50:21 +08:00
soft-interface.c batman-adv: use ETH_HLEN instead of sizeof(struct ethhdr) 2012-04-18 09:54:01 +02:00
soft-interface.h batman-adv: remove old bridge loop avoidance code 2012-04-11 14:28:58 +02:00
translation-table.c batman-adv: convert the tt_crc to network order 2012-04-18 09:43:36 +02:00
translation-table.h batman-adv: Remove declaration of only locally used functions 2012-04-11 14:28:58 +02:00
types.h batman-adv: refactoring API: find generalized name for bat_ogm_update_mac callback 2012-05-11 13:56:01 +02:00
unicast.c batman-adv: Remove spaces after a cast 2012-03-11 06:29:44 +08:00
unicast.h batman-adv: Update copyright years 2012-02-17 02:50:21 +08:00
vis.c batman-adv: use ETH_HLEN instead of sizeof(struct ethhdr) 2012-04-18 09:54:01 +02:00
vis.h batman-adv: Update copyright years 2012-02-17 02:50:21 +08:00