Don't process timers of disabled peers.
[l2tpns.git] / l2tpns.c
index b745b3f..f2a60c9 100644 (file)
--- a/l2tpns.c
+++ b/l2tpns.c
@@ -159,6 +159,8 @@ config_descriptt config_values[] = {
        CONFIG("ipv6_prefix", ipv6_prefix, IPv6),
        CONFIG("cli_bind_address", cli_bind_address, IPv4),
        CONFIG("hostname", hostname, STRING),
+       CONFIG("nexthop_address", nexthop_address, IPv4),
+       CONFIG("nexthop6_address", nexthop6_address, IPv6),
        { NULL, 0, 0, 0 },
 };
 
@@ -501,7 +503,12 @@ void route6set(sessionidt s, struct in6_addr ip, int prefixlen, int add)
                LOG(0, 0, 0, "route6set() error in ioctl: %s\n",
                                strerror(errno));
 
-       // FIXME: need to add BGP routing (RFC2858)
+#ifdef BGP
+       if (add)
+               bgp_add_route6(ip, prefixlen);
+       else
+               bgp_del_route6(ip, prefixlen);
+#endif /* BGP */
 
        if (s)
        {
@@ -3762,6 +3769,11 @@ static void mainloop(void)
                                more++;
                        }
                }
+#ifdef BGP
+               else
+                       /* no event received, but timers could still have expired */
+                       bgp_process_peers_timers();
+#endif /* BGP */
 
                if (time_changed)
                {