Hmm, I have been running babeld with source-specific routes for quite
some time and never run into this problem. Are you sure you didn't botch
the netlink calls? ;)

I don't think so, I even tested inserting the routes with ip route without running bird. It was a documented behavior in net/ipv6/Kconfig in the kernel source.

config IPV6_SUBTREES
    bool "IPv6: source address based routing"
    depends on IPV6_MULTIPLE_TABLES
    ---help---
      Enable routing by source address or prefix.

      The destination address is still the primary routing key, so mixing
      normal and source prefix specific routes in the same routing table
      may sometimes lead to unintended routing behavior.  This can be
      avoided by defining different routing tables for the normal and
      source prefix specific routes.

      If unsure, say N.

On Mon, Mar 6, 2017 at 11:40 AM, Toke Høiland-Jørgensen <toke@toke.dk> wrote:
Dean <dluga93@gmail.com> writes:

> There is already an implementation for that here
> (https://github.com/jech/babeld), if you want to check. I think this supports
> both IPV6_SUBTREES and policy routing, not sure.

I meant for the Bird Babel implementation. And yeah, that was what I was
referring to with policy routing:)

> And I encountered another problem with IPV6_SUBTREES yesterday. Having
> source constrained routes and normal routes in the same routing table
> leads to unintended behavior. In my case, the normal route was
> ignored. If I had both a normal route and a source constrained route
> (with a wrong source address) in the table, it automatically returned
> a Network Unreachable, ignoring the normal route which should have
> worked.

Hmm, I have been running babeld with source-specific routes for quite
some time and never run into this problem. Are you sure you didn't botch
the netlink calls? ;)

-Toke