[B.A.T.M.A.N.] [RFC] ELP

Marek Lindner
2012-03-22T21:50:30Z

Hi,

after numerous infrastructure changes in the past weeks ELP[1] slowly
approaches the state in which it can be tested and later merged into the
master branch.

Since its initial implementation by Linus Luessing last summer a lot has
happened:
* the internal protocol name (NDP) was renamed to ELP
* the old code was rebased on top of the master branch
* the ELP code was adjusted to the many changes in our code base
* several patches were squashed together
* brought the code in sync with the spec
* numerous bugs were fixed (buffer overflow, writing into random memory
sections, memory corruptions, locking issues, elp packet length checks,
printing the neighbors of the requested mesh only and many more)

The ELP code is the first to use the recently introduced routing protocol
abstraction. It is not compiled into batman-adv by default, therefore you
need to compile with CONFIG_BATMAN_ADV_BATMAN_V=y or modify the makefile.

Once the batman-adv kernel module has been loaded you can check for the
existence of the new routing protocol:

cat /sys/kernel/debug/batman_adv/routing_algos
Available routing algorithms:
BATMAN IV
BATMAN V

To activate B.A.T.M.A.N. V (ELP) you should run the following command *before*
adding any interface via batctl:

echo -n "BATMAN V" > /sys/module/batman_adv/parameters/routing_algo

Caveats:
* ELP alone (without OGMv2) isn't very useful because ELP handles single hop
neighbors only. So don't expect to convert your entire mesh network to
B.A.T.M.A.N. V just yet.
* The batman-adv routing protocol abstraction still lacks the translation
table integration which is why the following patches will lead to a kernel
crash. The ELP repository[2] contains a patch to disable the TT propagation
partially to mitigate the problem until a proper solution has been
implemented.

Any comments and suggestions are appreciated.

Regards,
Marek

[1] http://www.open-mesh.org/wiki/batman-adv/ELP
[2] http://git.open-mesh.org/?p=marek/batman-adv.git;a=shortlog;h=refs/heads/elp

Linus Luessing (5):
batman-adv: ELP - adding basic infrastructure
batman-adv: ELP - creating neighbor structures, updating LQs
batman-adv: ELP - exporting neighbor list via debugfs
batman-adv: ELP - adding sysfs parameter for elp interval
batman-adv: ELP - add configurable minimum ELP packet length (def: 300B)

Makefile | 2 +
Makefile.kbuild | 1 +
README.external | 1 +
bat_algo.h | 6 +
bat_debugfs.c | 16 ++
bat_sysfs.c | 8 +
bat_v_elp.c | 500 ++++++++++++++++++++++++++++++++++++++++++++
gen-compat-autoconf.sh | 1 +
hard-interface.c | 7 +
main.c | 1 +
packet.h | 20 ++-
sysfs-class-net-batman-adv | 13 ++
types.h | 15 ++
13 files changed, 590 insertions(+), 1 deletions(-)