summaryrefslogtreecommitdiff
path: root/bgpd/bgp_network.c
diff options
context:
space:
mode:
Diffstat (limited to 'bgpd/bgp_network.c')
-rw-r--r--bgpd/bgp_network.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/bgpd/bgp_network.c b/bgpd/bgp_network.c
index e07b18f8fd..dbb34b048f 100644
--- a/bgpd/bgp_network.c
+++ b/bgpd/bgp_network.c
@@ -484,10 +484,23 @@ static void bgp_accept(struct event *thread)
/* Dynamic neighbor has been created, let it proceed */
connection1->fd = bgp_sock;
+ if (bgp_set_socket_ttl(connection1) < 0) {
+ peer1->last_reset = PEER_DOWN_SOCKET_ERROR;
+ zlog_err("%s: Unable to set min/max TTL on peer %s (dynamic), error received: %s(%d)",
+ __func__, peer1->host,
+ safe_strerror(errno), errno);
+ return;
+ }
+
/* Set the user configured MSS to TCP socket */
if (CHECK_FLAG(peer1->flags, PEER_FLAG_TCP_MSS))
sockopt_tcp_mss_set(bgp_sock, peer1->tcp_mss);
+ frr_with_privs (&bgpd_privs) {
+ vrf_bind(peer1->bgp->vrf_id, bgp_sock,
+ bgp_get_bound_name(connection1));
+ }
+ bgp_peer_reg_with_nht(peer1);
bgp_fsm_change_status(connection1, Active);
EVENT_OFF(connection1->t_start);