Using RAdv and trigger routes with multiple interfaces

Tore Anderson tore at fud.no
Fri Nov 29 15:34:25 CET 2013


Hi,

I'm trying to set up conditional RA transmission from BIRD 1.3.11 on a
firewall pair running Keepalived for HA/failover. My goal is to start
emitting RAs on an interface as soon as Keepalived adds an IPv6 address
on it, and start suppressing the RAs (i.e., sending with router
lifetime=0) as soon as Keepalived removes it.

On first look, it would appear that the "trigger" option is exactly what
I need. However, I ran into the a problem - it appears to be global for
the entire radv protocol instead of being per-interface, and that I
cannot seem to work around limitation that by setting up multiple (one
per interface) instances of the protocol either.

To be more specific, assume that I have two interfaces with the
following virtual IPs controlled by Keepalived:

vlan100 = 2001:db8:100::1/64
vlan200 = 2001:db8:200::1/64

I would have liked to do something like:

protocol radv {
  interface "vlan100" {
    trigger 2001:db8:100::/64; # <-- syntax error on this line
  };
  interface "vlan200" {
    trigger 2001:db8:200::/64;
  };
}

...but that only gives me a syntax error on the line marked. So I tried
the following instead, which also resulted in a syntax error:

protocol radv vlan100 { # <-- syntax error on this line
  interface "vlan100";
  trigger 2001:db8:100::/64;
}
protocol radv vlan200 {
  interface "vlan200";
  trigger 2001:db8:200::/64;
}

Am I missing something obvious here or is the trigger feature only
useful on routers with a single network interface?

Best regards,
Tore Anderson



More information about the Bird-users mailing list