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 <qlyoung@cumulusnetworks.com>
This commit is contained in:
Quentin Young 2017-03-27 19:47:23 +00:00
parent 2d4ee77490
commit 49507a6f6a
No known key found for this signature in database
GPG Key ID: DAF48E0F57E0834F
4 changed files with 17 additions and 4 deletions

View File

@ -215,6 +215,7 @@ void peer_keepalives_on(struct peer *peer)
pkat = pkat_new(peer); pkat = pkat_new(peer);
listnode_add(peerlist, pkat); listnode_add(peerlist, pkat);
peer_lock(peer); peer_lock(peer);
SET_FLAG(peer->thread_flags, PEER_THREAD_KEEPALIVES_ON);
} }
pthread_mutex_unlock(&peerlist_mtx); pthread_mutex_unlock(&peerlist_mtx);
peer_keepalives_wake(); peer_keepalives_wake();
@ -233,6 +234,8 @@ void peer_keepalives_off(struct peer *peer)
list_delete_node(peerlist, ln); list_delete_node(peerlist, ln);
peer_unlock(peer); peer_unlock(peer);
} }
UNSET_FLAG(peer->thread_flags, PEER_THREAD_KEEPALIVES_ON);
} }
pthread_mutex_unlock(&peerlist_mtx); pthread_mutex_unlock(&peerlist_mtx);
} }

View File

@ -2362,6 +2362,8 @@ void peer_writes_on(struct peer *peer)
peer_lock(peer); peer_lock(peer);
listnode_add(plist, peer); listnode_add(plist, peer);
SET_FLAG(peer->thread_flags, PEER_THREAD_WRITES_ON);
} }
pthread_mutex_unlock(&plist_mtx); pthread_mutex_unlock(&plist_mtx);
peer_writes_wake(); peer_writes_wake();
@ -2382,6 +2384,8 @@ void peer_writes_off(struct peer *peer)
peer_unlock(peer); peer_unlock(peer);
break; break;
} }
UNSET_FLAG(peer->thread_flags, PEER_THREAD_WRITES_ON);
} }
pthread_mutex_unlock(&plist_mtx); pthread_mutex_unlock(&plist_mtx);
} }

View File

@ -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"); json_object_string_add(json_neigh, "readThread", "on");
else else
json_object_string_add(json_neigh, "readThread", "off"); 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"); json_object_string_add(json_neigh, "writeThread", "on");
else else
json_object_string_add(json_neigh, "writeThread", 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, "Peer Authentication Enabled\n");
vty_out(vty, "Read thread: %s Write thread: %s\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 if (p->notify.code == BGP_NOTIFY_OPEN_ERR

View File

@ -799,16 +799,18 @@ struct peer {
/* Threads. */ /* Threads. */
struct thread *t_read; struct thread *t_read;
struct thread *t_write;
struct thread *t_start; struct thread *t_start;
struct thread *t_connect; struct thread *t_connect;
struct thread *t_holdtime; struct thread *t_holdtime;
struct thread *t_keepalive;
struct thread *t_routeadv; struct thread *t_routeadv;
struct thread *t_pmax_restart; struct thread *t_pmax_restart;
struct thread *t_gr_restart; struct thread *t_gr_restart;
struct thread *t_gr_stale; 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 */ /* workqueues */
struct work_queue *clear_node_queue; struct work_queue *clear_node_queue;