Disable IPv6 routes adv when peer doesn't support it.
authorBenjamin Cama <benoar@dolka.fr>
Tue, 19 Jul 2011 22:29:02 +0000 (00:29 +0200)
committerBenjamin Cama <benoar@dolka.fr>
Thu, 28 Jul 2011 12:58:30 +0000 (14:58 +0200)
Signed-off-by: Benjamin Cama <benoar@dolka.fr>
bgp.c

diff --git a/bgp.c b/bgp.c
index 2deeeb3..ea15faf 100644 (file)
--- a/bgp.c
+++ b/bgp.c
@@ -1093,6 +1093,17 @@ static int bgp_handle_input(struct bgp_peer *peer)
                return 0;
            }
 
+           if (notification->error_code == BGP_ERR_OPEN
+                   && notification->subcode == BGP_ERR_OPN_UNSUP_CAP)
+           {
+               /* the only capability we advertise is this one, so upon receiving
+                  an "unsupported capability" message, we disable IPv6 routes for
+                  this peer */
+               LOG(4, 0, 0, "BGP peer %s doesn't support IPv6 routes advertisement\n", peer->name);
+               peer->handle_ipv6_routes = 0;
+               break;
+           }
+
            /* FIXME: should handle more notifications */
            LOG(4, 0, 0, "BGP peer %s sent unhandled NOTIFICATION %d\n",
                peer->name, (int) notification->error_code);