summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_fsm.c40
-rw-r--r--bgpd/bgp_vty.c15
-rw-r--r--bgpd/bgpd.h2
3 files changed, 31 insertions, 26 deletions
diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c
index c726f3c4fa..58492063a7 100644
--- a/bgpd/bgp_fsm.c
+++ b/bgpd/bgp_fsm.c
@@ -160,12 +160,12 @@ static struct peer *peer_xfer_conn(struct peer *from_peer)
bgp_keepalives_off(from_peer);
EVENT_OFF(peer->t_routeadv);
- EVENT_OFF(peer->t_connect);
+ EVENT_OFF(peer->connection->t_connect);
EVENT_OFF(peer->t_delayopen);
EVENT_OFF(peer->t_connect_check_r);
EVENT_OFF(peer->t_connect_check_w);
EVENT_OFF(from_peer->t_routeadv);
- EVENT_OFF(from_peer->t_connect);
+ EVENT_OFF(from_peer->connection->t_connect);
EVENT_OFF(from_peer->t_delayopen);
EVENT_OFF(from_peer->t_connect_check_r);
EVENT_OFF(from_peer->t_connect_check_w);
@@ -363,7 +363,7 @@ void bgp_timer_set(struct peer *peer)
BGP_TIMER_ON(peer->t_start, bgp_start_timer,
peer->v_start);
}
- EVENT_OFF(peer->t_connect);
+ EVENT_OFF(peer->connection->t_connect);
EVENT_OFF(peer->t_holdtime);
bgp_keepalives_off(peer);
EVENT_OFF(peer->t_routeadv);
@@ -376,11 +376,12 @@ void bgp_timer_set(struct peer *peer)
on. */
EVENT_OFF(peer->t_start);
if (CHECK_FLAG(peer->flags, PEER_FLAG_TIMER_DELAYOPEN))
- BGP_TIMER_ON(peer->t_connect, bgp_connect_timer,
+ BGP_TIMER_ON(peer->connection->t_connect,
+ bgp_connect_timer,
(peer->v_delayopen + peer->v_connect));
else
- BGP_TIMER_ON(peer->t_connect, bgp_connect_timer,
- peer->v_connect);
+ BGP_TIMER_ON(peer->connection->t_connect,
+ bgp_connect_timer, peer->v_connect);
EVENT_OFF(peer->t_holdtime);
bgp_keepalives_off(peer);
@@ -394,15 +395,16 @@ void bgp_timer_set(struct peer *peer)
/* If peer is passive mode, do not set connect timer. */
if (CHECK_FLAG(peer->flags, PEER_FLAG_PASSIVE)
|| CHECK_FLAG(peer->sflags, PEER_STATUS_NSF_WAIT)) {
- EVENT_OFF(peer->t_connect);
+ EVENT_OFF(peer->connection->t_connect);
} else {
if (CHECK_FLAG(peer->flags, PEER_FLAG_TIMER_DELAYOPEN))
- BGP_TIMER_ON(
- peer->t_connect, bgp_connect_timer,
- (peer->v_delayopen + peer->v_connect));
+ BGP_TIMER_ON(peer->connection->t_connect,
+ bgp_connect_timer,
+ (peer->v_delayopen +
+ peer->v_connect));
else
- BGP_TIMER_ON(peer->t_connect, bgp_connect_timer,
- peer->v_connect);
+ BGP_TIMER_ON(peer->connection->t_connect,
+ bgp_connect_timer, peer->v_connect);
}
EVENT_OFF(peer->t_holdtime);
bgp_keepalives_off(peer);
@@ -412,7 +414,7 @@ void bgp_timer_set(struct peer *peer)
case OpenSent:
/* OpenSent status. */
EVENT_OFF(peer->t_start);
- EVENT_OFF(peer->t_connect);
+ EVENT_OFF(peer->connection->t_connect);
if (peer->v_holdtime != 0) {
BGP_TIMER_ON(peer->t_holdtime, bgp_holdtime_timer,
peer->v_holdtime);
@@ -427,7 +429,7 @@ void bgp_timer_set(struct peer *peer)
case OpenConfirm:
/* OpenConfirm status. */
EVENT_OFF(peer->t_start);
- EVENT_OFF(peer->t_connect);
+ EVENT_OFF(peer->connection->t_connect);
/*
* If the negotiated Hold Time value is zero, then the Hold Time
@@ -451,7 +453,7 @@ void bgp_timer_set(struct peer *peer)
/* In Established status start and connect timer is turned
off. */
EVENT_OFF(peer->t_start);
- EVENT_OFF(peer->t_connect);
+ EVENT_OFF(peer->connection->t_connect);
EVENT_OFF(peer->t_delayopen);
/*
@@ -481,7 +483,7 @@ void bgp_timer_set(struct peer *peer)
/* fallthru */
case Clearing:
EVENT_OFF(peer->t_start);
- EVENT_OFF(peer->t_connect);
+ EVENT_OFF(peer->connection->t_connect);
EVENT_OFF(peer->t_holdtime);
bgp_keepalives_off(peer);
EVENT_OFF(peer->t_routeadv);
@@ -1512,7 +1514,7 @@ enum bgp_fsm_state_progress bgp_stop(struct peer_connection *connection)
/* Stop all timers. */
EVENT_OFF(peer->t_start);
- EVENT_OFF(peer->t_connect);
+ EVENT_OFF(connection->t_connect);
EVENT_OFF(peer->t_holdtime);
EVENT_OFF(peer->t_routeadv);
EVENT_OFF(peer->t_delayopen);
@@ -2417,13 +2419,13 @@ void bgp_fsm_nht_update(struct peer *peer, bool has_valid_nexthops)
break;
case Connect:
if (!has_valid_nexthops) {
- EVENT_OFF(peer->t_connect);
+ EVENT_OFF(peer->connection->t_connect);
BGP_EVENT_ADD(peer, TCP_fatal_error);
}
break;
case Active:
if (has_valid_nexthops) {
- EVENT_OFF(peer->t_connect);
+ EVENT_OFF(peer->connection->t_connect);
BGP_EVENT_ADD(peer, ConnectRetry_timer_expired);
}
break;
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index e0f5b78470..b06f793223 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -15132,10 +15132,12 @@ static void bgp_show_peer(struct vty *vty, struct peer *p, bool use_json,
json_object_int_add(
json_neigh, "nextStartTimerDueInMsecs",
event_timer_remain_second(p->t_start) * 1000);
- if (p->t_connect)
- json_object_int_add(
- json_neigh, "nextConnectTimerDueInMsecs",
- event_timer_remain_second(p->t_connect) * 1000);
+ if (p->connection->t_connect)
+ json_object_int_add(json_neigh,
+ "nextConnectTimerDueInMsecs",
+ event_timer_remain_second(
+ p->connection->t_connect) *
+ 1000);
if (p->t_routeadv) {
json_object_int_add(json_neigh, "mraiInterval",
p->v_routeadv);
@@ -15173,9 +15175,10 @@ static void bgp_show_peer(struct vty *vty, struct peer *p, bool use_json,
if (p->t_start)
vty_out(vty, "Next start timer due in %ld seconds\n",
event_timer_remain_second(p->t_start));
- if (p->t_connect)
+ if (p->connection->t_connect)
vty_out(vty, "Next connect timer due in %ld seconds\n",
- event_timer_remain_second(p->t_connect));
+ event_timer_remain_second(
+ p->connection->t_connect));
if (p->t_routeadv)
vty_out(vty,
"MRAI (interval %u) timer expires in %ld seconds\n",
diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h
index dd8096c574..5321812e17 100644
--- a/bgpd/bgpd.h
+++ b/bgpd/bgpd.h
@@ -1138,6 +1138,7 @@ struct peer_connection {
struct event *t_read;
struct event *t_write;
+ struct event *t_connect;
struct event *t_process_packet;
struct event *t_process_packet_error;
@@ -1551,7 +1552,6 @@ struct peer {
struct event *t_start;
struct event *t_connect_check_r;
struct event *t_connect_check_w;
- struct event *t_connect;
struct event *t_holdtime;
struct event *t_routeadv;
struct event *t_delayopen;