From 49507a6f6ae42e4e9b29e0b7e996d58d6eb4c477 Mon Sep 17 00:00:00 2001 From: Quentin Young Date: Mon, 27 Mar 2017 19:47:23 +0000 Subject: [PATCH] bgpd: remove unused `struct thread` from peer * Remove t_write * Remove t_keepalive These have been replaced by pthreads and are no longer needed. Since some code looks at these values to determine if the threads are scheduled, also add a new bitfield to store the same information. Signed-off-by: Quentin Young --- bgpd/bgp_keepalives.c | 3 +++ bgpd/bgp_packet.c | 4 ++++ bgpd/bgp_vty.c | 8 ++++++-- bgpd/bgpd.h | 6 ++++-- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/bgpd/bgp_keepalives.c b/bgpd/bgp_keepalives.c index d142e31af1..4944e3ea23 100644 --- a/bgpd/bgp_keepalives.c +++ b/bgpd/bgp_keepalives.c @@ -215,6 +215,7 @@ void peer_keepalives_on(struct peer *peer) pkat = pkat_new(peer); listnode_add(peerlist, pkat); peer_lock(peer); + SET_FLAG(peer->thread_flags, PEER_THREAD_KEEPALIVES_ON); } pthread_mutex_unlock(&peerlist_mtx); peer_keepalives_wake(); @@ -233,6 +234,8 @@ void peer_keepalives_off(struct peer *peer) list_delete_node(peerlist, ln); peer_unlock(peer); } + + UNSET_FLAG(peer->thread_flags, PEER_THREAD_KEEPALIVES_ON); } pthread_mutex_unlock(&peerlist_mtx); } diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c index 6e80c41914..7d9d2426d0 100644 --- a/bgpd/bgp_packet.c +++ b/bgpd/bgp_packet.c @@ -2362,6 +2362,8 @@ void peer_writes_on(struct peer *peer) peer_lock(peer); listnode_add(plist, peer); + + SET_FLAG(peer->thread_flags, PEER_THREAD_WRITES_ON); } pthread_mutex_unlock(&plist_mtx); peer_writes_wake(); @@ -2382,6 +2384,8 @@ void peer_writes_off(struct peer *peer) peer_unlock(peer); break; } + + UNSET_FLAG(peer->thread_flags, PEER_THREAD_WRITES_ON); } pthread_mutex_unlock(&plist_mtx); } diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index 9159bc683d..af702ac853 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -9657,7 +9657,8 @@ static void bgp_show_peer(struct vty *vty, struct peer *p, u_char use_json, json_object_string_add(json_neigh, "readThread", "on"); else json_object_string_add(json_neigh, "readThread", "off"); - if (p->t_write) + + if (CHECK_FLAG(p->thread_flags, PEER_THREAD_WRITES_ON)) json_object_string_add(json_neigh, "writeThread", "on"); else json_object_string_add(json_neigh, "writeThread", @@ -9683,7 +9684,10 @@ static void bgp_show_peer(struct vty *vty, struct peer *p, u_char use_json, vty_out(vty, "Peer Authentication Enabled\n"); vty_out(vty, "Read thread: %s Write thread: %s\n", - p->t_read ? "on" : "off", p->t_write ? "on" : "off"); + p->t_read ? "on" : "off", + CHECK_FLAG(p->thread_flags, PEER_THREAD_WRITES_ON) + ? "on" + : "off"); } if (p->notify.code == BGP_NOTIFY_OPEN_ERR diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h index 2022d47ace..70a1d386c6 100644 --- a/bgpd/bgpd.h +++ b/bgpd/bgpd.h @@ -799,16 +799,18 @@ struct peer { /* Threads. */ struct thread *t_read; - struct thread *t_write; struct thread *t_start; struct thread *t_connect; struct thread *t_holdtime; - struct thread *t_keepalive; struct thread *t_routeadv; struct thread *t_pmax_restart; struct thread *t_gr_restart; struct thread *t_gr_stale; + /* Thread flags. */ + u_int16_t thread_flags; +#define PEER_THREAD_WRITES_ON (1 << 0) +#define PEER_THREAD_KEEPALIVES_ON (1 << 1) /* workqueues */ struct work_queue *clear_node_queue;