]> git.proxmox.com Git - mirror_frr.git/commitdiff
bgpd: honor max prefix timer on inbound sessions
authorMatthew Smith <mgsmith@netgate.com>
Tue, 9 Jul 2019 17:59:44 +0000 (12:59 -0500)
committerDonatas Abraitis <donatas.abraitis@gmail.com>
Wed, 16 Oct 2019 05:26:32 +0000 (08:26 +0300)
When using the maximum-prefix restart option with a BGP peer,
if the peer exceeds the limit of prefixes, bgpd causes the
connection to be closed and sets a timer. It will not attempt
to connect to that peer until the timer expires. But if the
peer attempts to connect to it before the timer expires, it
accepts the connection and starts exchanging routes again.

When accepting a connection from a peer, reject the connection
if the max prefix restart timer is set.

Signed-off-by: Matthew Smith <mgsmith@netgate.com>
bgpd/bgp_network.c

index 6a5c2c4b38f9075c6a34d0883a0c5898860f7680..1bbcf8ca2b8f19161871c5486a10a76750daa6d8 100644 (file)
@@ -440,6 +440,17 @@ static int bgp_accept(struct thread *thread)
                return -1;
        }
 
+       /* Check whether max prefix restart timer is set for the peer */
+       if (peer1->t_pmax_restart) {
+               if (bgp_debug_neighbor_events(peer1))
+                       zlog_debug(
+                               "%s - incoming conn rejected - "
+                               "peer max prefix timer is active",
+                               peer1->host);
+               close(bgp_sock);
+               return -1;
+       }
+
        if (bgp_debug_neighbor_events(peer1))
                zlog_debug("[Event] BGP connection from host %s fd %d",
                           inet_sutop(&su, buf), bgp_sock);