summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@nvidia.com>2021-08-09 23:01:32 -0400
committerDonald Sharp <sharpd@nvidia.com>2023-08-18 09:29:04 -0400
commit5d527567357ed859eeb01062777f2c313ee08da2 (patch)
treecb7cfde3b7a16edf4deb69b602655041744dfc4a
parente20c23fa5b06f1dcef4e99df5099e55251d9d9bd (diff)
bgpd: Move t_process_packet and t_process_packet_error to connection
The t_process_packet thread events should be managed by the connection. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
-rw-r--r--bgpd/bgp_fsm.c4
-rw-r--r--bgpd/bgp_io.c11
-rw-r--r--bgpd/bgp_packet.c2
-rw-r--r--bgpd/bgpd.h5
4 files changed, 11 insertions, 11 deletions
diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c
index b951ada196..41d386ebaa 100644
--- a/bgpd/bgp_fsm.c
+++ b/bgpd/bgp_fsm.c
@@ -172,7 +172,7 @@ static struct peer *peer_xfer_conn(struct peer *from_peer)
EVENT_OFF(from_peer->t_delayopen);
EVENT_OFF(from_peer->t_connect_check_r);
EVENT_OFF(from_peer->t_connect_check_w);
- EVENT_OFF(from_peer->t_process_packet);
+ EVENT_OFF(from_peer->connection.t_process_packet);
/*
* At this point in time, it is possible that there are packets pending
@@ -341,7 +341,7 @@ static struct peer *peer_xfer_conn(struct peer *from_peer)
bgp_reads_on(&peer->connection);
bgp_writes_on(&peer->connection);
event_add_event(bm->master, bgp_process_packet, &peer->connection, 0,
- &peer->t_process_packet);
+ &peer->connection.t_process_packet);
return (peer);
}
diff --git a/bgpd/bgp_io.c b/bgpd/bgp_io.c
index 5b7d234f9d..efef773d85 100644
--- a/bgpd/bgp_io.c
+++ b/bgpd/bgp_io.c
@@ -97,13 +97,12 @@ void bgp_reads_on(struct peer_connection *connection)
void bgp_reads_off(struct peer_connection *connection)
{
- struct peer *peer = connection->peer;
struct frr_pthread *fpt = bgp_pth_io;
assert(fpt->running);
event_cancel_async(fpt->master, &connection->t_read, NULL);
- EVENT_OFF(peer->t_process_packet);
- EVENT_OFF(peer->t_process_packet_error);
+ EVENT_OFF(connection->t_process_packet);
+ EVENT_OFF(connection->t_process_packet_error);
UNSET_FLAG(connection->thread_flags, PEER_THREAD_READS_ON);
}
@@ -255,8 +254,8 @@ static void bgp_process_reads(struct event *thread)
/* Handle the error in the main pthread, include the
* specific state change from 'bgp_read'.
*/
- event_add_event(bm->master, bgp_packet_process_error,
- connection, code, &peer->t_process_packet_error);
+ event_add_event(bm->master, bgp_packet_process_error, connection,
+ code, &connection->t_process_packet_error);
goto done;
}
@@ -299,7 +298,7 @@ done:
&connection->t_read);
if (added_pkt)
event_add_event(bm->master, bgp_process_packet, connection, 0,
- &peer->t_process_packet);
+ &connection->t_process_packet);
}
/*
diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c
index e13d1fd937..7bee979c68 100644
--- a/bgpd/bgp_packet.c
+++ b/bgpd/bgp_packet.c
@@ -3146,7 +3146,7 @@ void bgp_process_packet(struct event *thread)
if (connection->ibuf->count > 0)
event_add_event(bm->master, bgp_process_packet,
connection, 0,
- &peer->t_process_packet);
+ &connection->t_process_packet);
}
}
}
diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h
index 5215c6a08d..196f25a24c 100644
--- a/bgpd/bgpd.h
+++ b/bgpd/bgpd.h
@@ -1139,6 +1139,9 @@ struct peer_connection {
struct event *t_read;
struct event *t_write;
+ struct event *t_process_packet;
+ struct event *t_process_packet_error;
+
/* Thread flags */
_Atomic uint32_t thread_flags;
#define PEER_THREAD_WRITES_ON (1U << 0)
@@ -1557,8 +1560,6 @@ struct peer {
struct event *t_llgr_stale[AFI_MAX][SAFI_MAX];
struct event *t_revalidate_all[AFI_MAX][SAFI_MAX];
struct event *t_generate_updgrp_packets;
- struct event *t_process_packet;
- struct event *t_process_packet_error;
struct event *t_refresh_stalepath;
/* Thread flags. */