Hi,
ok, I thought it was a bug in OLSR, but it isn't.
It's actually bad design (not in OLSR, in the setup).
First and foremost: you're trying to send flows from the central node to the other nodes. As a consequence, OLSR doesn't have anything to do with it.
Second: it works when all the nodes are in the same channel by sheer luck: they're all connected in a big, huge, mesh.
And now the design issue.
When you have a node with multiple IP interfaces, you have to have a "normal" routing protocol. OLSR, AODV, or whatever, won't work.
In your case, the sender node (which has multiple interfaces) is picking up the wrong one to send all the traffic, purely because when it goes through the routing table it finds the first one first.
The solution is: bridge the interfaces, i.e., use BridgeNetDevice to connect all the interfaces in node 0.
T.