Hi xianghua,
for such test cases basically this patch had once been made to force batman-adv onto certain routes but needed to be removed again as the way ebtables is used here is not standard-conforming. However, this shouldn't bother you :).
You can then just use ebtables to prohibit certain routes:
ebtables -I INPUT -s MAC -j DROP or ebtables -I INPUT -p 0x4305 -j DROP (and the same for -I OUTPUT)
Antonio had been doing tests with this ebtables patch, too (see this mailing list's archive from about the 10 May 2010).
This is a revert of the revert of commit 660d20261343e0b2ff57e51e50d7eb0e557d5e5b. and applies on top of the current git master branch. If you need it for any other version of batman-adv, try 'git revert 660d20261343e0b2ff57e51e50d7eb0e557d5e5b' and if that doesn't work, just bug me again :).
Cheers, Linus