Hi Sven and thanks for this RFC. Sorry for taking soo long to comment. On 14/11/15 03:46, Sven Eckelmann wrote: > batman-adv checks in different situation if a new device is already on top > of a different batman-adv device. This is done by getting the iflink of a > device and all its parent. It assumes that this iflink is always a parent > device in an acyclic graph. But this assumption is broken by devices like > veth which are actually a pair of two devices linked to each other. The > recursive check would therefore get veth0 when calling dev_get_iflink on > veth1. And it gets veth0 when calling dev_get_iflink with veth1. > I agree that this check implemented this way represents a problem. However I also believe that we should still have some kind of prevention against this particular scenario (chain of batman interfaces), because if ignored it could lead to troubles. Unfortunately I don't know how to implement this check in an elegant and extendible manner. First of all we should add a check that follows the master interface, but at the same time we should still follow the iflink, otherwise we can't check relationships like VLAN_DEV->REAL_DEV. But how to implement the latter without hitting the cyclic case is not clear to me .. An option is to add a specific check for veth and break the recursion, but this is not really nice, because the next time a cyclic interface type will be introduced our check will become troublesome again. Suggestions? Cheers, -- Antonio Quartulli