Converting a route between tables via pipe proto?

David Johnson dave at oort.io
Fri Jan 22 21:26:59 CET 2021


Hi,

I'm trying to see if bird can accomplish the following and so far I can't
seem to find a way to do it.

Quick summary:
I want to be able to modify a route (the actual IP/mask) between 2
interfaces.


Setup is as follows:

table A: routes learned as normal

table B: I want to advertise a specific route into table B if there is
another specific route learned on table A.  Note that the route in table B
is different than A but I want to link/convert them somehow.

Why would I want to do this?  This Linux setup is performing NETMAP to
convert IPs when forwarded between 2 interfaces.  I know the exact prefixes
so I can enter them in the config but I want to dynamically advertise those
into B but only if they are reachable via A.


My first attempt was to use a proto pipe between the two tables and simply
change the net variable:

  protocol pipe a_b_pipe {
    table b;
    peer table a;
    import filter {   # a -> b
      if net ~ A.B.C.D/E then { net = F.G.H.I/J; accept; };
      reject;
    };
    export none;  # b -> a
  }

but that doesn't work:
bird: /etc/bird/bird.conf:24:56 This static attribute is read-only.


My second attempt was to setup filters/functions on the protos in table A
to set some variable if the specific route is seen, then reference that
variable via a static proto route in table B.  This seems to be a no go as
there are global constants (define xxx;) but attributes are local and
function variables are also local scope.


My third thinking was to somehow use bfd to cross the bridge as it were..
 setup a static route with the bfd option in table B and have it
communicate with a bfd in table A, but there doesn't seem to be any way to
start/stop bfd on the table B side based on learning a specific route in
table B.

Other suggestions appreciated, or is this just not possible?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://trubka.network.cz/pipermail/bird-users/attachments/20210122/dedc036c/attachment.htm>


More information about the Bird-users mailing list