35df3b298fc8779f7edf4b0228c683f7e98edcd5 |
|
08-May-2014 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: fix TT VLAN inconsistency on VLAN re-add When a VLAN interface (on top of batX) is removed and re-added within a short timeframe TT does not have enough time to properly cleanup. This creates an internal TT state mismatch as the newly created softif_vlan will be initialized from scratch with a TT client count of zero (even if TT entries for this VLAN still exist). The resulting TT messages are bogus due to the counter / tt client listing mismatch, thus creating inconsistencies on every node in the network To fix this issue destroy_vlan() has to not free the VLAN object immediately but it has to be kept alive until all the TT entries for this VLAN have been removed. destroy_vlan() still removes the sysfs folder so that the user has the feeling that everything went fine. If the same VLAN is re-added before the old object is free'd, then the latter is resurrected and re-used. Implement such behaviour by increasing the reference counter of a softif_vlan object every time a new local TT entry for such VLAN is created and remove the object from the list only when all the TT entries have been destroyed. Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
|
151dcb3c56f56e1e5d75247f0dccdb5f6526cf39 |
|
22-Feb-2014 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: improve DAT documentation Add missing documentation for BATADV_DAT_ADDR_MAX and convert an existing documentation to kerneldoc Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
|
4c8755d69cbde2ec464a39c932aed0a83f9ff89f |
|
15-Feb-2014 |
Linus Lüssing <linus.luessing@web.de> |
batman-adv: Send multicast packets to nodes with a WANT_ALL flag With this patch a node sends IPv4 multicast packets to nodes which have a BATADV_MCAST_WANT_ALL_IPV4 flag set and IPv6 multicast packets to nodes which have a BATADV_MCAST_WANT_ALL_IPV6 flag set, too. Why is this needed? There are scenarios involving bridges where multicast report snooping and multicast TT announcements are not sufficient, which would lead to packet loss for some nodes otherwise: MLDv1 and IGMPv1/IGMPv2 have a suppression mechanism for multicast listener reports. When we have an MLDv1/IGMPv1/IGMPv2 querier behind a bridge then our snooping bridge is potentially not going to see any reports even though listeners exist because according to RFC4541 such reports are only forwarded to multicast routers: ----------------------------------------------------------- --------------- {Querier}---|Snoop. Switch|----{Listener} --------------- \ ^ ------- | br0 | < ??? ------- \ _-~---~_ _-~/ ~-_ ~ batman-adv \-----{Sender} \~_ cloud ~/ -~~__-__-~_/ I) MLDv1 Query: {Querier} -> flooded II) MLDv1 Report: {Listener} -> {Querier} -> br0 cannot detect the {Listener} => Packets from {Sender} need to be forwarded to all detected listeners and MLDv1/IGMPv1/IGMPv2 queriers. ----------------------------------------------------------- Note that we do not need to explicitly forward to MLDv2/IGMPv3 queriers, because these protocols have no report suppression: A bridge has no trouble detecting MLDv2/IGMPv3 listeners. Even though we do not support bridges yet we need to provide the according infrastructure already to not break compatibility later. Signed-off-by: Linus Lüssing <linus.luessing@web.de> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
ab49886e3da73b6b35ece21006e191910427bb30 |
|
15-Feb-2014 |
Linus Lüssing <linus.luessing@web.de> |
batman-adv: Add IPv4 link-local/IPv6-ll-all-nodes multicast support With this patch a node may additionally perform the dropping or unicasting behaviour for a link-local IPv4 and link-local-all-nodes IPv6 multicast packet, too. The extra counter and BATADV_MCAST_WANT_ALL_UNSNOOPABLES flag is needed because with a future bridge snooping support integration a node with a bridge on top of its soft interface is not able to reliably detect its multicast listeners for IPv4 link-local and the IPv6 link-local-all-nodes addresses anymore (see RFC4541, section 2.1.2.2 and section 3). Even though this new flag does make "no difference" now, it'll ensure a seamless integration of multicast bridge support without needing to break compatibility later. Also note, that even with multicast bridge support it won't be possible to optimize 224.0.0.x and ff02::1 towards nodes with bridges, they will always receive these ranges. Signed-off-by: Linus Lüssing <linus.luessing@web.de> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
1d8ab8d3c176d31530b3ffd4547cf731018e2a45 |
|
15-Feb-2014 |
Linus Lüssing <linus.luessing@web.de> |
batman-adv: Modified forwarding behaviour for multicast packets With this patch a multicast packet is not always simply flooded anymore, the behaviour for the following cases is changed to reduce unnecessary overhead: If all nodes within the horizon of a certain node have signalized multicast listener announcement capability then an IPv6 multicast packet with a destination of IPv6 link-local scope (excluding ff02::1) coming from the upstream of this node... * ...is dropped if there is no according multicast listener in the translation table, * ...is forwarded via unicast if there is a single node with interested multicast listeners * ...and otherwise still gets flooded. Signed-off-by: Linus Lüssing <linus.luessing@web.de> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
60432d756cf06e597ef9da511402dd059b112447 |
|
15-Feb-2014 |
Linus Lüssing <linus.luessing@web.de> |
batman-adv: Announce new capability via multicast TVLV If the soft interface of a node is not part of a bridge then a node announces a new multicast TVLV: The existence of this TVLV signalizes that this node is announcing all of its multicast listeners via the translation table infrastructure. Signed-off-by: Linus Lüssing <linus.luessing@web.de> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
e17931d1a61d189845d3ca923c5baf99e729156a |
|
15-Feb-2014 |
Linus Lüssing <linus.luessing@web.de> |
batman-adv: introduce capability initialization bitfield The new bitfield allows us to keep track whether capability subsets of an originator have gone through their initialization phase yet. The translation table is the only user right now, but a new one will be added soon. Signed-off-by: Linus Lüssing <linus.luessing@web.de> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
c5caf4ef34e2779c9a90bf4cbb57fbdf57dc8cbc |
|
15-Feb-2014 |
Linus Lüssing <linus.luessing@web.de> |
batman-adv: Multicast Listener Announcements via Translation Table With this patch a node which has no bridge interface on top of its soft interface announces its local multicast listeners via the translation table. Signed-off-by: Linus Lüssing <linus.luessing@web.de> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
1a321b0debf05423d4c72c73b9cf7b2ef921d4a1 |
|
24-Jan-2014 |
Simon Wunderlich <sw@simonwunderlich.de> |
batman-adv: fix a few kerneldoc inconsistencies Reported-by: Antonio Quartulli <antonio@meshcoding.com> Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
1b371d13071d6b6b9dc7a00fe1bc5a6babd68a5b |
|
15-Jan-2014 |
Simon Wunderlich <sw@simonwunderlich.de> |
batman-adv: use consistent kerneldoc style Reported-by: Antonio Quartulli <antonio@meshcoding.com> Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
e19f9759edf811c94cf6f2dd67d08e6c86260741 |
|
04-Jan-2014 |
Simon Wunderlich <sw@simonwunderlich.de> |
batman-adv: update copyright years for 2014 Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
cb1c92ec37fb70543d133a1fa7d9b54d6f8a1ecd |
|
21-Nov-2013 |
Simon Wunderlich <simon@open-mesh.com> |
batman-adv: add debugfs support to view multiif tables Show tables for the multi interface operation. Originator tables are added per hard interface. This patch also changes the API by adding the interface to the bat_orig_print() parameters. Signed-off-by: Simon Wunderlich <simon@open-mesh.com> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
5bc7c1eb44f25a2e0d6a37af8eb1e07c7d2d43e6 |
|
21-Nov-2013 |
Simon Wunderlich <simon@open-mesh.com> |
batman-adv: add debugfs structure for information per interface To show information per interface, add a debugfs hardif structure similar to the system in sysfs. Hard interface folders will be created in "$debugfs/batman-adv/". Files are not yet added. Signed-off-by: Simon Wunderlich <simon@open-mesh.com> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
f3b3d9018975ffb2680b7c1d37122f9d80301587 |
|
13-Nov-2013 |
Simon Wunderlich <simon@open-mesh.com> |
batman-adv: add bonding again With the new interface alternating, the first hop may send packets in a round robin fashion to it's neighbors because it has multiple valid routes built by the multi interface optimization. This patch enables the feature if bonding is selected. Note that unlike the bonding implemented before, this version is much simpler and may even enable multi path routing to a certain degree. Signed-off-by: Simon Wunderlich <simon@open-mesh.com> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
ef0a937f7a1450d3a133ccd83c9c7d07587e7a00 |
|
13-Nov-2013 |
Simon Wunderlich <simon@open-mesh.com> |
batman-adv: consider outgoing interface in OGM sending The current OGM sending an aggregation functionality decides on which interfaces a packet should be sent when it parses the forward packet struct. However, with the network wide multi interface optimization the outgoing interface is decided by the OGM processing function. This is reflected by moving the decision in the OGM processing function and add the outgoing interface in the forwarding packet struct. This practically implies that an OGM may be added multiple times (once per outgoing interface), and this also affects aggregation which needs to consider the outgoing interface as well. Signed-off-by: Simon Wunderlich <simon@open-mesh.com> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
7351a4822d42827ba0110677c0cbad88a3d52585 |
|
13-Nov-2013 |
Simon Wunderlich <simon@open-mesh.com> |
batman-adv: split out router from orig_node For the network wide multi interface optimization there are different routers for each outgoing interface (outgoing from the OGM perspective, incoming for payload traffic). To reflect this, change the router and associated data to a list of routers. While at it, rename batadv_orig_node_get_router() to batadv_orig_router_get() to follow the new naming scheme. Signed-off-by: Simon Wunderlich <simon@open-mesh.com> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
89652331c00f43574515059ecbf262d26d885717 |
|
13-Nov-2013 |
Simon Wunderlich <simon@open-mesh.com> |
batman-adv: split tq information in neigh_node struct For the network wide multi interface optimization it is required to save metrics per outgoing interface in one neighbor. Therefore a new type is introduced to keep interface-specific information. This also requires some changes in access and list management. The compare and equiv_or_better API calls are changed to take the outgoing interface into consideration. Signed-off-by: Simon Wunderlich <simon@open-mesh.com> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
f6c8b71173ad50e48e6569a1ef5d7d4486268b4d |
|
13-Nov-2013 |
Simon Wunderlich <simon@open-mesh.com> |
batman-adv: remove bonding and interface alternating Remove bonding and interface alternating code - it will be replaced by a new, network-wide multi interface optimization which enables both bonding and interface alternating in a better way. Keep the sysfs and find router function though, this will be needed later. Signed-off-by: Simon Wunderlich <simon@open-mesh.com> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
c42edfe382fee1c2c74550a5a3cbf50b2a28cf07 |
|
16-Nov-2013 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: add isolation_mark sysfs attribute This attribute can be used to set and read the value and the mask of the skb mark which will be used to classify the source non-mesh client as ISOLATED. In this way a client can be advertised as such and the mark can potentially be restored at the receiving node before delivering the skb. This can be helpful for creating network wide netfilter policies. This sysfs file expects a string of the shape "$mark/$mask". Where $mark has to be a 32-bit number in any base, while $mask must be a 32bit mask expressed in hex base. Only bits in $mark covered by the bitmask are really stored. Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
|
6c413b1c22a2c4ef324f1c6f2c282f1ca10a93b9 |
|
05-Nov-2013 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: send every DHCP packet as bat-unicast In different situations it is possible that the DHCP server or client uses broadcast Ethernet frames to send messages to each other. The GW component in batman-adv takes care of using bat-unicast packets to bring broadcast DHCP Discover/Requests to the "best" server. On the way back the DHCP server usually sends unicasts, but upon client request it may decide to use broadcasts as well. This patch improves the GW component so that it now snoops and sends as unicast all the DHCP packets, no matter if they were generated by a DHCP server or client. Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
|
ebf38fb7ab18ba60460bbd03de760ad5a2f435eb |
|
03-Nov-2013 |
Antonio Quartulli <antonio@meshcoding.com> |
batman-adv: remove FSF address from GPL disclaimer As suggested by checkpatch, remove all the references to the FSF address since the kernel already has one reference in its documentation. In this way it is easier to update it in case of future changes. Signed-off-by: Antonio Quartulli <antonio@meshcoding.com> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
|
da6b8c20a5b8c7edce95c95fa2356300691094f5 |
|
22-Oct-2013 |
Simon Wunderlich <sw@simonwunderlich.de> |
batman-adv: generalize batman-adv icmp packet handling Instead of handling icmp packets only up to length of icmp_packet_rr, the code should handle any icmp length size. Therefore the length truncating is moved to when the packet is actually sent to userspace (this does not support lengths longer than icmp_packet_rr yet). Longer packets are forwarded without truncating. This patch also cleans up some parts where the icmp header struct could be used instead of other icmp_packet(_rr) structs to make the code more readable. Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
0eb01568f0b78f482eb2fd91d01e9eab344933aa |
|
13-Oct-2013 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: include the sync-flags when compute the global/local table CRC Flags covered by TT_SYNC_MASK are kept in sync among the nodes in the network and therefore they have to be considered while computing the global/local table CRC. In this way a generic originator is able to understand if its table contains the correct flags or not. Bits from 4 to 7 in the TT flags fields are now reserved for "synchronized" flags only. This allows future developers to add more flags of this type without breaking compatibility. It's important to note that not all the remote TT flags are synchronised. This comes from the fact that some flags are used to inject an information once only. Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
|
3c4f7ab60cc21e8fc65b234f3a6174fc19a93fee |
|
13-Oct-2013 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: improve the TT component to support runtime flag changes Some flags (i.e. the WIFI flag) may change after that the related client has already been announced. However it is useful to informa the rest of the network about this change. Add a runtime-flag-switch detection mechanism and re-announce the related TT entry to advertise the new flag value. This mechanism can be easily exploited by future flags that may need the same treatment. Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
|
a19d3d85e1b854e4a483a55d740a42458085560d |
|
27-May-2013 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: limit local translation table max size The local translation table size is limited by what can be transferred from one node to another via a full table request. The number of entries fitting into a full table request depend on whether the fragmentation is enabled or not. Therefore this patch introduces a max table size check and refuses to add more local clients when that size is reached. Moreover, if the max full table packet size changes (MTU change or fragmentation is disabled) the local table is downsized instantaneously. Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Acked-by: Antonio Quartulli <ordex@autistici.org>
|
d0015fdd3d2c9cc5927637c74a66d85e8bcacf1c |
|
03-Sep-2013 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: provide orig_node routing API Some operations executed on an orig_node depends on the current routing algorithm being used. To easily make this mechanism routing algorithm agnostic add a orig_node specific API that each algorithm can populate with its own routines. Such routines are then invoked by the code when needed, without knowing which routing algorithm is currently in use With this patch 3 API functions are added: - orig_free (to free routing depending internal structs) - orig_add_if (to change the inner state of an orig_node when a new hard interface is added) - orig_del_if (to change the inner state of an orig_node when an hard interface is removed) Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
c43c981e50f47bdd0f1eb400dc30ff13472c7be6 |
|
02-Sep-2013 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: add bat_neigh_is_equiv_or_better API function Each routing protocol has its own metric semantic and therefore is the protocol itself the only component able to compare two metrics to check their "similarity". This new API allows each routing protocol to implement its own logic and make the external code protocol agnostic. Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
a3285a8f20dace536ecc6a2f349150ea1d0bb391 |
|
02-Sep-2013 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: add bat_neigh_cmp API function This new API allows to compare the two neighbours based on the metric avoiding the user to deal with any routing algorithm specific detail Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
737a2a229774ef983ef783149384bae3e3aa38ac |
|
02-Sep-2013 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: add bat_orig_print API function Each routing protocol has its own metric and private variables, therefore it is useful to introduce a new API for originator information printing. This API needs to be implemented by each protocol in order to provide its specific originator table output. Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
bbad0a5e3691cb3976d7a4815c47d9b7bb244731 |
|
02-Sep-2013 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: make struct batadv_orig_node algorithm agnostic some of the struct batadv_orig_node members are B.A.T.M.A.N. IV specific and therefore they are moved in a algorithm specific substruct in order to make batadv_orig_node routing algorithm agnostic Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
0538f7599157b7bdef1814472048de5351c4fd6d |
|
02-Sep-2013 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: make struct batadv_neigh_node algorithm agnostic some of the fields in struct batadv_neigh_node are strictly related to the B.A.T.M.A.N. IV algorithm. In order to make the struct usable by any routing algorithm it has to be split and made more generic Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
7ea7b4a142758deaf46c1af0ca9ceca6dd55138b |
|
30-Jul-2013 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: make the TT CRC logic VLAN specific This change allows nodes to handle the TT table on a per-VLAN basis. This is needed because nodes may have to store only some of the global entries advertised by another node. In this scenario such nodes would re-create only a partial global table and would not be able to compute a correct CRC anymore. This patch splits the logic and introduces one CRC per VLAN. In this way a node fetching only some entries belonging to some VLANs is still able to compute the needed CRCs and still check the table correctness. With this patch the shape of the TVLV-TT is changed too because now a node needs to advertise all the CRCs of all the VLANs that it is wired to. The debug output of the local Translation Table now shows the CRC along with each entry since there is not a common value for the entire table anymore. Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
a70a9aa990bdf24039cb4167993bcc5a0f9cbb18 |
|
30-Jul-2013 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: lock around TT operations to avoid sending inconsistent data A TT response may be prepared and sent while the local or global translation table is getting updated. The worst case is when one of the tables is accessed after its content has been recently updated but the metadata (TTVN/CRC) has not yet. In this case the reader will get a table content which does not match the TTVN/CRC. This will lead to an inconsistent state and so to a TT recovery. To avoid entering this situation, put a lock around those TT operations recomputing the metadata and around the TT Response creation (the latter is the only reader that accesses the metadata together with the table). Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
b8cbd81d0944cd2dc097b2b4ae8adaf639c5b4df |
|
02-Jul-2013 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: make the AP isolation attribute VLAN specific AP isolation has to be enabled on one VLAN interface only. This patch moves the AP isolation attribute to the per-vlan interface attribute set, enabling it to have a different value depending on the selected vlan. Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
5d2c05b213377694a2aa8ce1ed9b23f7c39b0569 |
|
02-Jul-2013 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: add per VLAN interface attribute framework Since batman-adv is now fully VLAN-aware, a proper framework able to handle per-vlan-interface attributes is needed. Those attributes will affect the associated VLAN interface only, rather than the real soft_iface (which would result in every vlan interface having the same attribute configuration). To make the code simpler and easier to extend, attributes associated to the standalone soft_iface are now treated like belonging to yet another vlan having a special vid. This vid is different from the others because it is made up by all zeros and the VLAN_HAS_TAG bit is not set. Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
be1db4f6615b5e6156c807ea8985171c215c2d57 |
|
04-Jun-2013 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: make the Distributed ARP Table vlan aware The same IP subnet can be used on different VLANs, therefore DAT has to differentiate whether the IP to resolve belongs to one or the other virtual LAN. To accomplish this task DAT has to deal with the VLAN tag and store it together with each ARP entry. Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
c018ad3de61a1dc4194879a53e5559e094aa7b1a |
|
04-Jun-2013 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: add the VLAN ID attribute to the TT entry To make the translation table code VLAN-aware, each entry must carry the VLAN ID which it belongs to. This patch adds such attribute to the related TT structures. Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
411d6ed93a5d0601980d3e5ce75de07c98e3a7de |
|
08-May-2013 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: consider network coding overhead when calculating required mtu The module prints a warning when the MTU on the hard interface is too small to transfer payload traffic without fragmentation. The required MTU is calculated based on the encapsulation header size. If network coding is compild into the module its header size is taken into account as well. Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
ee75ed88879af88558818a5c6609d85f60ff0df4 |
|
23-May-2013 |
Martin Hundebøll <martin@hundeboll.net> |
batman-adv: Fragment and send skbs larger than mtu Non-broadcast packets larger than MTU are fragmented and sent with an encapsulating header. Up to 16 fragments are supported, which are sent in reverse order on the wire to allow minimal memory copying when creating fragments. Signed-off-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
610bfc6bc99bc83680d190ebc69359a05fc7f605 |
|
23-May-2013 |
Martin Hundebøll <martin@hundeboll.net> |
batman-adv: Receive fragmented packets and merge Fragments arriving at their destination are buffered for later merge. Merged packets are passed to the main receive function as had they never been fragmented. Fragments are forwarded without merging if the MTU of the outgoing interface is smaller than the size of the merged packet. Signed-off-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
f097e25dbe9144447f46b6b61ca3da1a2ba432d4 |
|
23-May-2013 |
Martin Hundebøll <martin@hundeboll.net> |
batman-adv: Remove old fragmentation code Remove the existing fragmentation code before adding the new version and delete unicast.{h,c}. batadv_unicast_send_skb() is moved to send.c and renamed to batadv_send_skb_unicast(). fragmentation entry in sysfs (bat_priv->fragmentation) is kept for use in the new fragmentation code. BATADV_UNICAST_FRAG packet type is renamed to BATADV_FRAG for use in the new fragmentation code. Signed-off-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
9f4980e68b4b72e6a4d7caadfacc54260d05ebf6 |
|
25-Apr-2013 |
Simon Wunderlich <siwu@hrz.tu-chemnitz.de> |
batman-adv: remove vis functionality This is replaced by a userspace program, we don't need this functionality to bloat the kernel. Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
ced72933a5e8ab52bb066a4a4083840b6f7f62ff |
|
24-Apr-2013 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: use CRC32C instead of CRC16 in TT code CRC32C has to be preferred to CRC16 because of its possible HW native support and because of the reduced collision probability. With this change the Translation Table component now uses CRC32C to compute the local and global table checksum. Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
e1bf0c14096f9dc09c7695f42051d178b23d0670 |
|
23-Apr-2013 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: tvlv - convert tt data sent within OGMs The translation table meta data (version number, crc checksum, etc) as well as the translation table diff propgated within OGMs now uses the newly introduced tvlv infrastructure. Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
3f4841ffb336075f74b05fe4a205e877bb22848d |
|
23-Apr-2013 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: tvlv - add network coding container Create network coding container to announce network coding capabilities (if enabled). Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
17cf0ea455f1a4a7e8436ef96236999e9c452a93 |
|
23-Apr-2013 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: tvlv - add distributed arp table container Create DAT container to announce DAT capabilities (if enabled). Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
414254e342a0d58144de40c3da777521ebaeeb07 |
|
23-Apr-2013 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: tvlv - gateway download/upload bandwidth container Prior to this patch batman-adv read the advertised uplink bandwidth from userspace and compressed this information into a single byte called "gateway class". Now the download & upload bandwidth information is sent as-is. No userspace change is necessary since the sysfs API always allowed to specify a bandwidth. Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Spyros Gasteratos <morfeas3000@gmail.com> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
ef26157747d42254453f6b3ac2bd8bd3c53339c3 |
|
23-Apr-2013 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: tvlv - basic infrastructure The goal is to provide the infrastructure for sending, receiving and parsing information 'containers' while preserving backward compatibility. TVLV (based on the commonly known Type Length Value technique) was chosen as the format for those containers. Even if a node does not know the tvlv type of a certain container it can simply skip the current container and proceed with the next. Past experience has shown features evolve over time, so a 'version' field was added right from the start to allow differentiating between feature variants - hence the name: T(ype) V(ersion) L(ength) V(alue). This patch introduces the basic TVLV infrastructure: * register / unregister tvlv containers to be sent with each OGM (on primary interfaces only) * register / unregister callback handlers to be called upon finding the corresponding tvlv type in a tvlv buffer * unicast tvlv send / receive API calls Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Spyros Gasteratos <morfeas3000@gmail.com> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
|
eb2deb6b39b1597577c1635e9ebf319f1ae02213 |
|
19-Apr-2013 |
Antonio Quartulli <antonio@open-mesh.com> |
batman-adv: change VID semantic in the BLA code In order to make batman-adv fully vlan aware later, the semantic used for variables storing the VLAN ID values has to be changed in order to be adapted to the new one which will be used batman-adv wide. In particular, the VID has to be an "_unsigned_ short int" and its 4 MSB will be used as a flag bitfield, while the remaining 12 bits are used to store the real VID value Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Acked-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
|
caf65bfcc5dbabd7222fa45fdcd42ce0783d7a42 |
|
09-Mar-2013 |
Matthias Schiffer <mschiffer@universe-factory.net> |
batman-adv: send each broadcast only once on non-wireless interfaces While it makes sense to send each broadcast thrice on 802.11 (WLAN) interfaces as broadcasts are often unreliable on these, there is no reason to do so on other interface types. The increased the overhead can be harmful on low-bandwidth links like VPN connections over slow internet lines, therefore it is better to reduce the number of broadcast packets sent on non-wireless links to one. Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
2df5278b0267c799f3e877e8eeddbb6e93cda0bb |
|
25-Jan-2013 |
Martin Hundebøll <martin@hundeboll.net> |
batman-adv: network coding - receive coded packets and decode them When receiving a network coded packet, the decoding buffer is searched for a packet to use for decoding. The source, destination, and crc32 from the coded packet is used to identify the wanted packet. The decoded packet is passed to the usual unicast receiver function, as had it never been network coded. Signed-off-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
612d2b4fe0a1ff2f8389462a6f8be34e54124c05 |
|
25-Jan-2013 |
Martin Hundebøll <martin@hundeboll.net> |
batman-adv: network coding - save overheard and tx packets for decoding To be able to decode a network coded packet, a node must already know one of the two coded packets. This is done by buffering skbs before transmission and buffering packets sniffed with promiscuous mode from other hosts. Packets are kept in a buffer similar to the one with forward-skbs: A hash table, where each entry, which corresponds to a src-dst pair, has a linked list packets. Signed-off-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
3c12de9a5c756b23fe7c9ab332474ece1568914c |
|
25-Jan-2013 |
Martin Hundebøll <martin@hundeboll.net> |
batman-adv: network coding - code and transmit packets if possible Before adding forward-skbs to the coding buffer, the buffer is searched for a potential coding opportunity. If one is found, the two packets are network coded and transmitted right away. If not, the forward-skb is added to the buffer. Network coded packets are transmitted with information about the two receivers and the two coded packets. The first receiver is given by the MAC header, while the second is given in the payload/bat-header. The second receiver uses promiscuous mode to receive the packet and check the second destination. Signed-off-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
953324776d6d23eb81f5b825870027b9c069db29 |
|
25-Jan-2013 |
Martin Hundebøll <martin@hundeboll.net> |
batman-adv: network coding - buffer unicast packets before forward Two be able to network code two packets, one packet must be buffered until the next is available. This is done in a "coding buffer", which is essentially a hash table with lists of packets. Each entry in the hash table corresponds to a specific src-dst pair, which has a linked list of packets that are buffered. This patch adds skbs to the buffer just before forwarding them. The buffer is traversed every 10 ms, where timed skbs are removed from the buffer and transmitted. To allow experiments with the network coding scheme, the timeout is tunable through a file in debugfs. Signed-off-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
d56b1705e28c196312607bc8bdde0e91879c20b6 |
|
25-Jan-2013 |
Martin Hundebøll <martin@hundeboll.net> |
batman-adv: network coding - detect coding nodes and remove these after timeout To use network coding efficiently, a relay must know when neighbor nodes are likely to have enough information to be able to decode a network coded packet. This is detected by using OGMs from batman-adv to discover when one neighbor is in range of another neighbor. The relay check the TLL to detect when an OGM is forwarded from one neighbor by another neighbor, and thereby knows that the two neighbors are in range and thus overhear packets sent by each other. This information is saved in the orig_node struct to be used when searching for coding opportunities. Two lists are added to the orig_node struct: One for neighbors that can hear the orig_node (outgoing nc_nodes) and one for neighbors that the orig_node can hear (incoming nc_nodes). Information about nc_nodes is kept for 10 seconds and is available through debugfs in batman_adv/nc_nodes to use when debugging network coding. Signed-off-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
d353d8d4d9f0184ac43a90c6e04b593c33bd28ea |
|
25-Jan-2013 |
Martin Hundebøll <martin@hundeboll.net> |
batman-adv: network coding - add the initial infrastructure code Network coding exploits the 802.11 shared medium to allow multiple packets to be sent in a single transmission. In brief, a relay can XOR two packets, and send the coded packet to two destinations. The receivers can decode one of the original packets by XOR'ing the coded packet with the other original packet. This will lead to increased throughput in topologies where two packets cross one relay. In a simple topology with three nodes, it takes four transmissions without network coding to get one packet from Node A to Node B and one from Node B to Node A: 1. Node A ---- p1 ---> Node R Node B 2. Node A Node R <--- p2 ---- Node B 3. Node A <--- p2 ---- Node R Node B 4. Node A Node R ---- p1 ---> Node B With network coding, the relay only needs one transmission, which saves us one slot of valuable airtime: 1. Node A ---- p1 ---> Node R Node B 2. Node A Node R <--- p2 ---- Node B 3. Node A <- p1 x p2 - Node R - p1 x p2 -> Node B The same principle holds for a topology including five nodes. Here the packets from Node A and Node B are overheard by Node C and Node D, respectively. This allows Node R to send a network coded packet to save one transmission: Node A Node B | \ / | | p1 p2 | | \ / | p1 > Node R < p2 | | | / \ | | p1 x p2 p1 x p2 | v / \ v / \ Node C < > Node D More information is available on the open-mesh.org wiki[1]. This patch adds the initial code to support network coding in batman-adv. It sets up a worker thread to do house keeping and adds a sysfs file to enable/disable network coding. The feature is disabled by default, as it requires a wifi-driver with working promiscuous mode, and also because it adds a small delay at each hop. [1] http://www.open-mesh.org/projects/batman-adv/wiki/Catwoman Signed-off-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
0b87393146244c2dc31cb3c69c45f4948ca94ee1 |
|
04-Jan-2013 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: update copyright years Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
5bc44dc8458cbac08c664f2f337326bf87cc924b |
|
11-Jan-2013 |
Simon Wunderlich <simon.wunderlich@s2003.tu-chemnitz.de> |
batman-adv: postpone sysfs removal when unregistering When processing the unregister notify for a hard interface, removing the sysfs files may lead to a circular deadlock (rtnl mutex <-> s_active). To overcome this problem, postpone the sysfs removal in a worker. Reported-by: Sasha Levin <sasha.levin@oracle.com> Reported-by: Sven Eckelmann <sven@narfation.org> Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
88a32c9a8a3f0217430f0b67fc90e425c1ceaa7f |
|
25-Dec-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: kernel doc for types.h Thanks to Sven Eckelmann and Simon Wunderlich for their support. Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
712bbfe46b3004603762adb506baff99be0f8d8c |
|
25-Dec-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: rename batadv_claim struct to make clear it is used by bla Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
bae987747150d8939bf385863f49e2647db15e2a |
|
25-Dec-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: rename batadv_backbone_gw struct to make clear it is used by bla Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
28500f07abf120e5609a68d6eb2f78350562381d |
|
25-Dec-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: rename batadv_recvlist_node struct to make clear it is used by vis Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
015b4ae4a36bb5ee62187ac6e2f193e87d225516 |
|
25-Dec-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: rename batadv_if_list_entry struct to make clear it is used by vis Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
2006fea82085cfd9ddc92b23ef1ea8d57e065c61 |
|
25-Dec-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: group tt type definitions together Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
0abf5d8117dc864135eda5adda12640e16ed0cb8 |
|
25-Dec-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: mark debug_log struct as bat_priv only struct Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
b6d0ab7ca306f3363a5996570ae8772d57d61846 |
|
25-Dec-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: align kernel doc properly Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
0c430d0d7b8bafa74959a84156ef0bda1417a3d4 |
|
16-Dec-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: unbloat batadv_priv if debug is not enabled Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
9338026107166b54d54ef875978c9c3dca3aaee5 |
|
15-Dec-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: remove unused variable from orig_node struct Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
fa706554d6553331e886ce6fb86ca40b6dbc2083 |
|
26-Nov-2012 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: don't compile the BLA switch if not requested When the Bridge Loop Avoidance component is not compiled-in, its boolean switch should be not compiled as well. This patch surrounds the switch with a proper ifdef. This behaviour was introduced by 9fd6b0615b5499b270d39a92b8790e206cf75833 ("batman-adv: add bridge loop avoidance compile option") Signed-off-by: Antonio Quartulli <ordex@autistici.org> Acked-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
004e86fc585f617f07bff38480eeee335be9b017 |
|
18-Oct-2012 |
Simon Wunderlich <simon.wunderlich@s2003.tu-chemnitz.de> |
batman-adv: Fix broadcast duplist for fragmentation If the skb is fragmented, the checksum must be computed on the individual fragments, just using skb->data may fail on fragmented data. Instead of doing linearizing the packet, use the new batadv_crc32 to do that more efficiently- it should not hurt replacing the old crc16 by the new crc32. Reported-by: Sven Eckelmann <sven@narfation.org> Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
7c1fd91da5a5eecc91674991199940c05f87cb3a |
|
23-Sep-2012 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: substitute tt_poss_change with a per-tt_entry flag tt_poss_change is a node-wide flag which tells whether the node is in a roaming state (a client recently moved to/away from it) in order to let it apply special re-routing rules. However this flag does not give a clear idea of the current state because it is not possible to understand *which client* is actually involved in the roaming. For this reason a better approach has been chosen: instead of using a node-wide variable, the roaming state is now given by a per-tt_entry ROAM flag which, in case of packet coming through the node, tells the node whether the real destination is in roaming state or not. With this flag change, batadv_check_unicast_ttvn() has also been rearranged in order to better fit the new re-routing logic and to be much more readable. Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
28709878b6a7d15362ba63bde01d42c38f88be9d |
|
13-Sep-2012 |
Simon Wunderlich <simon.wunderlich@s2003.tu-chemnitz.de> |
batman-adv: wait multiple periods before activating bla For some reasons (bridge forward delay, network device setup order, etc) the initial bridge loop avoidance announcement packets may be lost. This may lead to problems in finding other backbone gws, and therfore create loops in the startup time. Fix this by extending the waiting periods to 3 (define can be changed) before allowing broadcast traffic. Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
a7528f8ddda9fba061148e18e71761b50b1c6d26 |
|
02-Sep-2012 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: fix wrong spinlock inline comment Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
4046b24aface62f5647699e9af3260a486bc5f49 |
|
20-Apr-2012 |
Martin Hundebøll <martin@hundeboll.net> |
batman-adv: Add get_ethtool_stats() support for DAT Added additional counters for D.A.T. Signed-off-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
33af49ad8ae44de52c0ac30b1a9707dad5e4c418 |
|
08-Aug-2012 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: Distributed ARP Table - add runtime switch This patch adds a runtime switch that enables the user to turn the DAT feature on or off at runtime Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
172244748204c894864def59133d0133ccfabe30 |
|
06-Nov-2011 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: Distributed ARP Table - add compile option This patch makes it possible to decide whether to include DAT within the batman-adv binary or not. It is extremely useful when the user wants to reduce the size of the resulting module by cutting off any not needed feature. Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
2f1dfbe185075a50dc8f0490a136377af53a1c62 |
|
30-Jun-2012 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: Distributed ARP Table - implement local storage Since batman-adv cannot inter-operate with the host ARP table, this patch introduces a batman-adv private storage for ARP entries exchanged within DAT. This storage will represent the node local cache in the DAT protocol. Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
785ea1144182c341b8b85b0f8180291839d176a8 |
|
23-Nov-2011 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: Distributed ARP Table - create DHT helper functions Add all the relevant functions in order to manage a Distributed Hash Table over the B.A.T.M.A.N.-adv network. It will later be used to store several ARP entries and implement DAT (Distributed ARP Table) Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
14511519d4b49af968be1b00396843bc1790a81a |
|
02-Aug-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: split hard_iface struct for each routing protocol Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
7dac7b76b8db87fc79857a53a09730fb2148579b |
|
17-Oct-2012 |
Linus Lüssing <linus.luessing@web.de> |
batman-adv: Fix potential broadcast BLA-duplicate-check race condition Threads in the bottom half of batadv_bla_check_bcast_duplist() might otherwise for instance overwrite variables which other threads might be using/reading at the same time in the top half, potentially leading to messing up the bcast_duplist, possibly resulting in false bridge loop avoidance duplicate check decisions. Signed-off-by: Linus Lüssing <linus.luessing@web.de> Acked-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
30cfd02b60e1cb16f5effb0a01f826c5bb7e4c59 |
|
05-Jul-2012 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: detect not yet announced clients With the current TT mechanism a new client joining the network is not immediately able to communicate with other hosts because its MAC address has not been announced yet. This situation holds until the first OGM containing its joining event will be spread over the mesh network. This behaviour can be acceptable in networks where the originator interval is a small value (e.g. 1sec) but if that value is set to an higher time (e.g. 5secs) the client could suffer from several malfunctions like DHCP client timeouts, etc. This patch adds an early detection mechanism that makes nodes in the network able to recognise "not yet announced clients" by means of the broadcast packets they emitted on connection (e.g. ARP or DHCP request). The added client will then be confirmed upon receiving the OGM claiming it or purged if such OGM is not received within a fixed amount of time. Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
807736f6e00714fdeb443b31061d1c27fa903296 |
|
15-Jul-2012 |
Sven Eckelmann <sven@narfation.org> |
batman-adv: Split batadv_priv in sub-structures for features The structure batadv_priv grows everytime a new feature is introduced. It gets hard to find the parts of the struct that belongs to a specific feature. This becomes even harder by the fact that not every feature uses a prefix in the member name. The variables for bridge loop avoidence, gateway handling, translation table and visualization server are moved into separate structs that are included in the bat_priv main struct. Signed-off-by: Sven Eckelmann <sven@narfation.org> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
d657e621a0f5584cf269b5b3d733a4cbb2497900 |
|
01-Jul-2012 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: add reference counting for type batadv_tt_orig_list_entry The batadv_tt_orig_list_entry structure didn't have any refcounting mechanism so far. This patch introduces it and makes the structure being usable in much more complex context. Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
1c9b0550f4813c4931b4e142c80f5c89be9489ec |
|
23-Jun-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: convert remaining packet counters to per_cpu_ptr() infrastructure Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Acked-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
2c53040f018b6c36a46eec75b9b937aaa5f78e6d |
|
10-Jul-2012 |
Ben Hutchings <bhutchings@solarflare.com> |
net: Fix (nearly-)kernel-doc comments for various functions Fix incorrect start markers, wrapped summary lines, missing section breaks, incorrect separators, and some name mismatches. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
|
56303d34a332be8e2f4daf7891ebc12cb7900529 |
|
05-Jun-2012 |
Sven Eckelmann <sven@narfation.org> |
batman-adv: Prefix types structs with batadv_ Reported-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
96412690116afcc1b2705615b5a7c8dc6c5e905f |
|
05-Jun-2012 |
Sven Eckelmann <sven@narfation.org> |
batman-adv: Prefix packet structs with batadv_ Reported-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
5bf74e9ca1e618afe5a513f64ee4923115e67004 |
|
05-Jun-2012 |
Sven Eckelmann <sven@narfation.org> |
batman-adv: Prefix hash struct and typedef with batadv_ Reported-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
d69909d2fc9e00bd8149cc8df9b18c35008e3e62 |
|
03-Jun-2012 |
Sven Eckelmann <sven@narfation.org> |
batman-adv: Prefix types enum with BATADV_ Reported-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
42d0b044b7c9e5821f1bf3e2b4ea7861417c11c2 |
|
03-Jun-2012 |
Sven Eckelmann <sven@narfation.org> |
batman-adv: Prefix main defines with BATADV_ Reported-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
c11fdfaefa46a83a668a73dc3ae90859e99ed251 |
|
03-Jun-2012 |
Sven Eckelmann <sven@narfation.org> |
batman-adv: Prefix types defines with BATADV_ Reported-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
9cfc7bd608b97463993b4f3e4775d99022253f8d |
|
12-May-2012 |
Sven Eckelmann <sven@narfation.org> |
batman-adv: Reformat multiline comments to consistent style batman-adv doesn't follow the style for multiline comments that David S. Miller prefers. All comments should be reformatted to follow this consistent style to make the code slightly more readable. Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
be9aa4c1e0d7124cf976831db098f1e852fdbd14 |
|
06-May-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: turn tt commit code into routing protocol agnostic API Prior to this patch the translation table code made assumptions about how the routing protocol works and where its buffers are stored (to directly modify them). Each protocol now calls the tt code with the relevant pointers, thereby abstracting the code. Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Acked-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
f8214865a55f805e65c33350bc0f1eb46dd8433d |
|
20-Apr-2012 |
Martin Hundebøll <martin@hundeboll.net> |
batman-adv: Add get_ethtool_stats() support Added additional counters in a bat_stats structure, which are exported through the ethtool api. The counters are specific to batman-adv and includes: forwarded packets and bytes management packets and bytes (aggregated OGMs at this point) translation table packets New counters are added by extending "enum bat_counters" in types.h and adding corresponding descriptive string(s) to bat_counters_strings in soft-iface.c. Counters are increased by calling batadv_add_counter() and incremented by one by calling batadv_inc_counter(). Signed-off-by: Martin Hundebøll <martin@hundeboll.net> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
66a1b2bcb34b0c74a3422968b15a7ea853ea5a2d |
|
14-Apr-2012 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: convert bat_priv->tt_crc from atomic_t to uint16_t In the code we neever need to atomically check and set the bat_priv->tt_crc field value. It is simply set and read once in different pieces of the code. Therefore this field can be safely be converted from atomic_t to uint16_t. Reported-by: Al Viro <viro@ZenIV.linux.org.uk> Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
e3b0d0dea6e044283dff1c0852b20c98eb41a7f1 |
|
17-Mar-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: prepare lq_update_lock to be shared among different protocols Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
c32293983d836ed6cbc5e8b58cb8cd10b26a774e |
|
10-Mar-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: refactoring API: find generalized name for bat_ogm_update_mac callback Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
d7b2a97e03ad40c7986d3c2707b0b5ba79a63884 |
|
01-Mar-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: rename last_valid to last_seen Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Acked-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
c3e29312c8c27d403f91522711ce9a290c7571c9 |
|
04-Mar-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: register batman ogm receive function during protocol init The B.A.T.M.A.N. IV OGM receive function still was hard-coded although it is a routing protocol specific function. This patch takes advantage of the dynamic packet handler registration to remove the hard-coded function calls. Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Acked-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
0d125074ebc8c971e939f8c2c8f90a80fa09aeb4 |
|
18-Feb-2012 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: use ETH_HLEN instead of sizeof(struct ethhdr) Instead of using sizeof(struct ethhdr) it is strongly recommended to use the kernel macro ETH_HLEN. This patch substitute each occurrence of the former expressione with the latter one. Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
cd8b78e7e9d1d9625634dc1ec2bb4b5a14d1295a |
|
07-Feb-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: refactoring API: find generalized name for bat_ogm_init_primary callback Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
77af7575c4b11ce7d27b4cb372abd358b2dcd850 |
|
07-Feb-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: handle routing code initialization properly Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
00a50076a3afa4014cdd57e87e31a00ce4c4b67e |
|
07-Feb-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: add iface_disable() callback to routing API Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
c2aca02235c014de57b03aa725d9b094f7a87cac |
|
07-Feb-2012 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: refactoring API: find generalized name for bat_ogm_init callback Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
7a5cc24277b57ce38eb0afa6634b71d4d5cc671e |
|
22-Jan-2012 |
Simon Wunderlich <simon.wunderlich@s2003.tu-chemnitz.de> |
batman-adv: add bridge loop avoidance compile option The define CONFIG_BATMAN_ADV_BLA switches the bridge loop avoidance on - skip it, and the bridge loop avoidance is not compiled in. This is useful if binary size should be saved or the feature is not needed. Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
38ef3d1d919e6a47c3e0d38b3d788aa468a7ede8 |
|
22-Jan-2012 |
Simon Wunderlich <simon.wunderlich@s2003.tu-chemnitz.de> |
batman-adv: form groups in the bridge loop avoidance backbone gateways may be part of the same LAN, but participate in different meshes. With this patch, backbone gateways form groups by applying the groupid of another backbone gateway if it is higher. After forming the group, they only accept messages from backbone gateways of the same group. Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
fe2da6ff27c73c1d102ec2189f94e8bc729d1a9b |
|
22-Jan-2012 |
Simon Wunderlich <simon.wunderlich@s2003.tu-chemnitz.de> |
batman-adv: add broadcast duplicate check When multiple backbone gateways relay the same broadcast from the backbone into the mesh, other nodes in the mesh may receive this broadcast multiple times. To avoid this, the crc checksums of received broadcasts are recorded and new broadcast packets with the same content may be dropped if received by another gateway. Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
db08e6e557ebc8ffedf6530693937d0e51b8f6b9 |
|
22-Oct-2011 |
Simon Wunderlich <siwu@hrz.tu-chemnitz.de> |
batman-adv: allow multiple entries in tt_global_entries as backbone gateways will all independently announce the same clients, also the tt global table must be able to hold multiple originators per client entry. Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
23721387c409087fd3b97e274f34d3ddc0970b74 |
|
22-Jan-2012 |
Simon Wunderlich <simon.wunderlich@s2003.tu-chemnitz.de> |
batman-adv: add basic bridge loop avoidance code This second version of the bridge loop avoidance for batman-adv avoids loops between the mesh and a backbone (usually a LAN). By connecting multiple batman-adv mesh nodes to the same ethernet segment a loop can be created when the soft-interface is bridged into that ethernet segment. A simple visualization of the loop involving the most common case - a LAN as ethernet segment: node1 <-- LAN --> node2 | | wifi <-- mesh --> wifi Packets from the LAN (e.g. ARP broadcasts) will circle forever from node1 or node2 over the mesh back into the LAN. With this patch, batman recognizes backbone gateways, nodes which are part of the mesh and backbone/LAN at the same time. Each backbone gateway "claims" clients from within the mesh to handle them exclusively. By restricting that only responsible backbone gateways may handle their claimed clients traffic, loops are effectively avoided. Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
a7f6ee9493677ba40625d810258de5bd521cc1b0 |
|
22-Jan-2012 |
Simon Wunderlich <simon.wunderlich@s2003.tu-chemnitz.de> |
batman-adv: remove old bridge loop avoidance code The functionality is to be replaced by an improved implementation, so first clean up. Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
0079d2cef1514422668c7beedd61bfde5aa2c146 |
|
04-Feb-2012 |
Sven Eckelmann <sven@narfation.org> |
batman-adv: Replace bitarray operations with bitmap bitarray.c consists mostly of functionality that is already available as part of the standard kernel API. batman-adv could use architecture optimized code and reduce the binary size by switching to the standard functions. Signed-off-by: Sven Eckelmann <sven@narfation.org> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
|
567db7b0b7c0a94cc62846f8ebb429bdda2884bc |
|
01-Jan-2012 |
Sven Eckelmann <sven@narfation.org> |
batman-adv: Update copyright years Signed-off-by: Sven Eckelmann <sven@narfation.org> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
01c4224b51feba2ba64d070ab9f4aa32c9d0bb29 |
|
28-Nov-2011 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: convert batman iv algorithm to use dynamic infrastructure Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
1c280471b013e26c833fc86acc231c73442cfa21 |
|
28-Nov-2011 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: add infrastructure to change routing algorithm at runtime Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
17071578888c7c18709e48e74fae228c04581b9a |
|
07-Nov-2011 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: add tt_initialised flag to the orig_node struct (ttvn == 0) is currently used as initial condition. However this is not a good idea because ttvn gets the vale zero each time after reaching the maximum value (wrap around). For this reason a new flag is added in order to define whether a node has an initialised table or not. Moreover, after invoking tt_global_del_orig(), tt_initialised has to be set to false Reported-by: Alexey Fisher <bug-track@fisher-privat.net> Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Tested-by: Alexey Fisher <bug-track@fisher-privat.net> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
48100bac89a6161ca53dd65697fe635f77986686 |
|
30-Oct-2011 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: create a common substructure for tt_global/local_entry Several functions in the translation table management code assume that the tt_global_entry and tt_local_entry structures have the same initial fields such as 'addr' and 'hash_entry'. To improve the code readability and to avoid mistakes in later changes, a common substructure that substitute the shared fields has been introduced (struct tt_common_entry). Thanks to this modification, it has also been possible to slightly reduce the code length by merging some functions like compare_ltt/gtt() and tt_local/global_hash_find() Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
93840ac40bb0d0f177ef8af74e64671be67e8c37 |
|
22-Oct-2011 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: unify hash_entry field position in tt_local/global_entry Function tt_response_fill_table() actually uses a tt_local_entry pointer to iterate either over the local or the global table entries (it depends on the what hash table is passed as argument). To iterate over such entries the hlist_for_each_entry_rcu() macro has to access their "hash_entry" field which MUST be at the same position in both the tt_global/local_entry structures. Reported-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
59b699cdee039d75915c354da06937102d1f9a84 |
|
07-Jul-2011 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: implement AP-isolation on the receiver side When a node receives a unicast packet it checks if the source and the destination client can communicate or not due to the AP isolation Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
015758d00251a4dd9287806cdab4b9c1298f97ed |
|
09-Jul-2011 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: correct several typ0s in the comments Several typos have been corrected and some sentences have been rephrased Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
5fbc1598c28555d2aa44bff0ac56ec3739401aff |
|
17-Jun-2011 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: unify flags for tt_change/tt_local_entry/tt_global_entry The tt_local_entry structure now has a 'flags' field. This helps to unify the flags format to all the client related structures (tt_global_entry and tt_change). The 'never_purge' field is now encoded in the 'flags' one. To optimise the usage of this field, its length has been increased to 16bit in order to use the eight leading bits (from 0 to 7) to store flags that have to be sent on the wire, while the eight ending ones are used for local computation only. Moreover 'enum tt_change_flags' is now called 'enum tt_client_flags' and the defined values apply to the tt_local_entry, tt_global_entry and the tt_change 'flags' field. Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
2265c141086474bbae55a5bb3afa1ebb78ccaa7c |
|
27-Apr-2011 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: gateway election code refactoring The gateway election mechanism has been a little revised. Now the gw_election is trigered by an atomic_t flag (gw_reselect) which is set to 1 in case of election needed, avoding to set curr_gw to NULL. Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
7683fdc1e88644ee8108a1f33faba80545f0024d |
|
27-Apr-2011 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: protect the local and the global trans-tables with rcu The local and the global translation-tables are now lock free and rcu protected. Signed-off-by: Antonio Quartulli <ordex@autistici.org> Acked-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
cc47f66e6b9ec7e7d465f74739a6fc9844593894 |
|
27-Apr-2011 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: improved roaming mechanism With the current client announcement implementation, in case of roaming, an update is triggered on the new AP serving the client. At that point the new information is spread around by means of the OGM broadcasting mechanism. Until this operations is not executed, no node is able to correctly route traffic towards the client. This obviously causes packet drops and introduces a delay in the time needed by the client to recover its connections. A new packet type called ROAMING_ADVERTISEMENT is added to account this issue. This message is sent in case of roaming from the new AP serving the client to the old one and will contain the client MAC address. In this way an out-of-OGM update is immediately committed, so that the old node can update its global translation table. Traffic reaching this node will then be redirected to the correct destination utilising the fresher information. Thus reducing the packet drops and the connection recovery delay. Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
a73105b8d4c765d9ebfb664d0a66802127d8e4c7 |
|
27-Apr-2011 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: improved client announcement mechanism The client announcement mechanism informs every mesh node in the network of any connected non-mesh client, in order to find the path towards that client from any given point in the mesh. The old implementation was based on the simple idea of appending a data buffer to each OGM containing all the client MAC addresses the node is serving. All other nodes can populate their global translation tables (table which links client MAC addresses to node addresses) using this MAC address buffer and linking it to the node's address contained in the OGM. A node that wants to contact a client has to lookup the node the client is connected to and its address in the global translation table. It is easy to understand that this implementation suffers from several issues: - big overhead (each and every OGM contains the entire list of connected clients) - high latencies for client route updates due to long OGM trip time and OGM losses The new implementation addresses these issues by appending client changes (new client joined or a client left) to the OGM instead of filling it with all the client addresses each time. In this way nodes can modify their global tables by means of "updates", thus reducing the overhead within the OGMs. To keep the entire network in sync each node maintains a translation table version number (ttvn) and a translation table checksum. These values are spread with the OGM to allow all the network participants to determine whether or not they need to update their translation table information. When a translation table lookup is performed in order to send a packet to a client attached to another node, the destination's ttvn is added to the payload packet. Forwarding nodes can compare the packet's ttvn with their destination's ttvn (this node could have a fresher information than the source) and re-route the packet if necessary. This greatly reduces the packet loss of clients roaming from one AP to the next. Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
402196724816875d382099bedb09fdf1f57845bc |
|
18-May-2011 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: a multiline comment should precede the variable it is describing This comment has been wrongly put after the variable it refers to and was also bad indented Signed-off-by: Antonio Quartulli <ordex@autistici.org> Acked-by: Sven Eckelmann <sven@narfation.org> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
6e215fd8eb4930373d01da0fac16a0889804fac3 |
|
08-May-2011 |
Sven Eckelmann <sven@narfation.org> |
batman-adv: Remove multiline comments from line ending It is slightly irritating that comments after a long line span over multiple lines without any code. It is easier to put them before the actual code and reduce the number of lines which the eye has to read. Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
2dafb49d84a9195193b28ac5047df1bbab6053b9 |
|
05-May-2011 |
Antonio Quartulli <ordex@autistici.org> |
batman-adv: rename everything from *hna* into *tt* (translation table) To be coherent, all the functions/variables/constants have been renamed to the TranslationTable style Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
61906ae86d8989e5bd3bc1f51b2fb8d32ffde2c5 |
|
21-Apr-2011 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: multi vlan support for bridge loop detection The bridge loop detection for batman-adv allows the bat0 interface to be bridged into an ethernet segment which other batman-adv nodes are connected to. In order to also allow multiple VLANs on top of the bat0 interface to be bridged into the ethernet segment this patch extends the aforementioned bridge loop detection. Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
32ae9b221e788413ce68feaae2ca39e406211a0a |
|
20-Apr-2011 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: Make bat_priv->primary_if an rcu protected pointer The rcu protected macros rcu_dereference() and rcu_assign_pointer() for the bat_priv->primary_if need to be used, as well as spin/rcu locking. Otherwise we might end up using a primary_if pointer pointing to already freed memory. Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
ba85fac28005a59e6e03fdb13918fc6f6e69a3ca |
|
17-Apr-2011 |
Simon Wunderlich <siwu@hrz.tu-chemnitz.de> |
batman-adv: protect softif_neigh by rcu Add get/set wrapper functions for softif_neigh and use rcu functions to manipulate the pointers. Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
68003903e4eeec5288f074ff0751a381750ceb34 |
|
14-Mar-2011 |
Linus Lüssing <linus.luessing@web.de> |
batman-adv: Protect global TQ window with a spinlock Signed-off-by: Linus Lüssing <linus.luessing@web.de> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
e1a5382f978b67b5cc36eec65e6046730ce07714 |
|
14-Mar-2011 |
Linus Lüssing <linus.luessing@web.de> |
batman-adv: Make orig_node->router an rcu protected pointer The rcu protected macros rcu_dereference() and rcu_assign_pointer() for the orig_node->router need to be used, as well as spin/rcu locking. Otherwise we might end up using a router pointer pointing to already freed memory. Therefore this commit introduces the safe getter method orig_node_get_router(). Signed-off-by: Linus Lüssing <linus.luessing@web.de> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
e6c10f433af9c98994c94a10ae862c152fcfb2a9 |
|
18-Feb-2011 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: rename batman_if struct to hard_iface Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
d0072609baebaffb522083d367f4f195187f60f8 |
|
19-Jan-2011 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: remove orig_hash spinlock Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
7b36e8eef989fc59535b4f1d3fc0f83afaf419d4 |
|
18-Feb-2011 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: Correct rcu refcounting for orig_node 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>
|
7aadf889e897155c45cda230d2a6701ad1fbff61 |
|
18-Feb-2011 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: remove extra layer between hash and hash element - hash bucket Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
5d02b3cdfafeb23ab7cf43ef1d2118007370e8d0 |
|
13-Feb-2011 |
Linus Lüssing <linus.luessing@ascom.ch> |
batman-adv: Make bat_priv->curr_gw an rcu protected pointer The rcu protected macros rcu_dereference() and rcu_assign_pointer() for the bat_priv->curr_gw need to be used, as well as spin/rcu locking. Otherwise we might end up using a curr_gw pointer pointing to already freed memory. Reported-by: Sven Eckelmann <sven@narfation.org> Signed-off-by: Linus Lüssing <linus.luessing@ascom.ch> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
f3e0008f01b275bd08bd416cfcaa7021dd6bc277 |
|
25-Jan-2011 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: make broadcast seqno operations atomic 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>
|
0ede9f41b217d8982ab426e3c8c1b692a280a16f |
|
25-Jan-2011 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: protect bit operations to count OGMs with spinlock Reported-by: Linus Lüssing <linus.luessing@saxnet.de> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
ed75ccbe26f4a672a41556120390e67c80a2c441 |
|
10-Feb-2011 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: Correct rcu refcounting for batman_if 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>
|
7d2b554826195372764910da2f0dcb0d9b869108 |
|
10-Feb-2011 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: Correct rcu refcounting for softif_neigh 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>
|
25b6d3c17eaa92ae9700eb8235bc79782613354a |
|
10-Feb-2011 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: Correct rcu refcounting for gw_node 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>
|
44524fcdf6ca19b58c24f7622c4af1d8d8fe59f8 |
|
10-Feb-2011 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: Correct rcu refcounting for neigh_node 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>
|
a4c135c561106c397bae33455acfca4aa8065a30 |
|
19-Jan-2011 |
Simon Wunderlich <siwu@hrz.tu-chemnitz.de> |
batman-adv: protect bonding with rcu locks 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>
|
2ae2daf6c3f23364862a7d4f2ca79eab041b701b |
|
19-Jan-2011 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: protect ogm counter arrays with spinlock Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
16b1aba849eeb45d51a5de731cf103143439ffe1 |
|
19-Jan-2011 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: protect originator nodes with reference counters Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
f987ed6ebd991009cd9f6190ce319e8b50d6be1f |
|
12-Dec-2010 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: protect neighbor list with rcu locks Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
9591a79f280ede740e44aeb8ad93a6692d482dce |
|
12-Dec-2010 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: convert neighbor list to hlist Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
a8e7f4bc38c4a90ee308cd7f1f8604f71db59d05 |
|
12-Dec-2010 |
Marek Lindner <lindner_marek@yahoo.de> |
batman-adv: protect neighbor nodes with reference counters Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
|
64afe35398269577ef9809474dd7dc0e5d265176 |
|
27-Jan-2011 |
Sven Eckelmann <sven@narfation.org> |
batman-adv: Update copyright years Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
aa0adb1a85e159cf57f0e11282bc6c9e3606a5f3 |
|
15-Jan-2011 |
Sven Eckelmann <sven@narfation.org> |
batman-adv: Use "__attribute__" shortcut macros Linux 2.6.21 defines different macros for __attribute__ which are also used inside batman-adv. The next version of checkpatch.pl warns about the usage of __attribute__((packed))). Linux 2.6.33 defines an extra macro __always_unused which is used to assist source code analyzers and can be used to removed the last existing __attribute__ inside the source code. Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
c6c8fea29769d998d94fcec9b9f14d4b52b349d3 |
|
13-Dec-2010 |
Sven Eckelmann <sven@narfation.org> |
net: Add batman-adv meshing protocol 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>
|