I am currently redesigning hbbp and p2ptbl[1,2]. p2ptbl is a distributed key-value database build on top of HBBP link-local UDP broadcasts. Both are used in some Freifunk communities and elsewhere.
To reduce the bandwidth demand of the employed gossip protocol I would like to use something that behaves like a link-local broadcast packet in a batman-adv mesh every respect - except that any mesh node on it's route may decide to drop it or change it's UDP data.
Right now only approaches that are ugly or don't work come to my mind.
Ugly: * using NFQUEUE on all enslaved interfaces to mangle packets before they are seen by batman; requires out-of-kernel parsing of batman-adv packets and watching enslaved interfaces * add a custom broadcast TVLV; requires kernel code and either bloats OGMs are requires non-OGM broadcast TVLV packets
Don't work: * using NFQUEUE on bcast payload (without batman header); does not work because they are not exposed to the iptables * send link-local UDP on all enslaved interfaces; requires to reimplement all the loop-avoidance / routing / resending logic that already exists in batman-adv
If you see a smarter way or a reason why manipulating broadcast packets is utter nonsene: please let me know.
With best regards, Jan Huwald