aboutsummaryrefslogtreecommitdiffstats
path: root/net/batman-adv/routing.c
Commit message (Collapse)AuthorAgeFilesLines
* batman-adv: Remove unused hdr_size variable in route_unicast_packet()Linus Lüssing2011-03-051-4/+3
| | | | | Signed-off-by: Linus Lüssing <linus.luessing@ascom.ch> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: rename batman_if struct to hard_ifaceMarek Lindner2011-03-051-24/+24
| | | | Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: rename global if_list to hardif_listMarek Lindner2011-03-051-1/+1
| | | | | | | | Batman-adv works with "hard interfaces" as well as "soft interfaces". The new name should better make clear which kind of interfaces this list stores. Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: remove orig_hash spinlockMarek Lindner2011-03-051-63/+12
| | | | Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: increase refcount in create_neighbor to be consistentMarek Lindner2011-03-051-36/+27
| | | | Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: Correct rcu refcounting for orig_nodeMarek Lindner2011-03-051-12/+12
| | | | | | | | | | | It might be possible that 2 threads access the same data in the same rcu grace period. The first thread calls call_rcu() to decrement the refcount and free the data while the second thread increases the refcount to use the data. To avoid this race condition all refcount operations have to be atomic. Reported-by: Sven Eckelmann <sven@narfation.org> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: remove extra layer between hash and hash element - hash bucketMarek Lindner2011-03-051-27/+13
| | | | Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: separate ethernet comparing calls from hash functionsMarek Lindner2011-03-051-28/+27
| | | | | | | Note: The function compare_ether_addr() provided by the Linux kernel requires aligned memory. Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: make broadcast seqno operations atomicMarek Lindner2011-03-051-22/+34
| | | | | | | | | | | | Batman-adv could receive several payload broadcasts at the same time that would trigger access to the broadcast seqno sliding window to determine whether this is a new broadcast or not. If these incoming broadcasts are accessing the sliding window simultaneously it could be left in an inconsistent state. Therefore it is necessary to make sure this access is atomic. Reported-by: Linus Lüssing <linus.luessing@web.de> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: protect bit operations to count OGMs with spinlockMarek Lindner2011-03-051-31/+30
| | | | | Reported-by: Linus Lüssing <linus.luessing@saxnet.de> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: Correct rcu refcounting for neigh_nodeMarek Lindner2011-03-051-116/+222
| | | | | | | | | | | It might be possible that 2 threads access the same data in the same rcu grace period. The first thread calls call_rcu() to decrement the refcount and free the data while the second thread increases the refcount to use the data. To avoid this race condition all refcount operations have to be atomic. Reported-by: Sven Eckelmann <sven@narfation.org> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: protect bonding with rcu locksSimon Wunderlich2011-03-051-150/+163
| | | | | | | | | | bonding / alternating candidates need to be secured by rcu locks as well. This patch therefore converts the bonding list from a plain pointer list to a rcu securable lists and references the bonding candidates. Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: protect ogm counter arrays with spinlockMarek Lindner2011-03-051-4/+23
| | | | Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: protect originator nodes with reference countersMarek Lindner2011-03-051-10/+23
| | | | Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: protect each hash row with rcu locksMarek Lindner2011-03-051-1/+15
| | | | Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: protect neigh_nodes used outside of rcu_locks with refcountingMarek Lindner2011-03-051-9/+31
| | | | Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: protect neighbor list with rcu locksMarek Lindner2011-03-051-14/+27
| | | | Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: convert neighbor list to hlistMarek Lindner2011-03-051-11/+18
| | | | Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: protect neighbor nodes with reference countersMarek Lindner2011-03-051-0/+7
| | | | Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
* batman-adv: Remove duplicate types.h inclusionsLinus Lüssing2011-02-111-1/+0
| | | | | | | | | types.h is included by main.h, which is included at the beginning of any other c-file anyway. Therefore this commit removes those duplicate inclussions. Signed-off-by: Linus Lüssing <linus.luessing@ascom.ch> Signed-off-by: Sven Eckelmann <sven@narfation.org>
* batman-adv: Update copyright yearsSven Eckelmann2011-01-311-1/+1
| | | | Signed-off-by: Sven Eckelmann <sven@narfation.org>
* batman-adv: Remove unused variablesSven Eckelmann2011-01-311-7/+0
| | | | Signed-off-by: Sven Eckelmann <sven@narfation.org>
* batman-adv: remove unused parametersSimon Wunderlich2011-01-311-9/+6
| | | | | | | | Some function parameters are obsolete now and can be removed. Reported-by: Sven Eckelmann <sven@narfation.org> Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Sven Eckelmann <sven@narfation.org>
* batman-adv: Calculate correct size for merged packetsSven Eckelmann2011-01-311-1/+1
| | | | | | | | | | | | | | | | | | | | The routing algorithm must be able to decide if a fragment can be merged with the missing part and still be passed to a forwarding interface. The fragments can only differ by one byte in case that the original payload had an uneven length. In that situation the sender has to inform all possible receivers that the tail is one byte longer using the flag UNI_FRAG_LARGETAIL. The combination of UNI_FRAG_LARGETAIL and UNI_FRAG_HEAD flag makes it possible to calculate the correct length for even and uneven sized payloads. The original formula missed to add the unicast header at all and forgot to remove the fragment header of the second fragment. This made the results highly unreliable and only useful for machines with large differences between the configured MTUs. Reported-by: Russell Senior <russell@personaltelco.net> Reported-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Sven Eckelmann <sven@narfation.org>
* net: Add batman-adv meshing protocolSven Eckelmann2010-12-161-0/+1397
B.A.T.M.A.N. (better approach to mobile ad-hoc networking) is a routing protocol for multi-hop ad-hoc mesh networks. The networks may be wired or wireless. See http://www.open-mesh.org/ for more information and user space tools. Signed-off-by: Sven Eckelmann <sven@narfation.org> Signed-off-by: David S. Miller <davem@davemloft.net>