]> git.proxmox.com Git - mirror_frr.git/commitdiff
bgpd: remove unused `struct thread` from peer
authorQuentin Young <qlyoung@cumulusnetworks.com>
Mon, 27 Mar 2017 19:47:23 +0000 (19:47 +0000)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Thu, 30 Nov 2017 21:17:58 +0000 (16:17 -0500)
* 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>
bgpd/bgp_keepalives.c
bgpd/bgp_packet.c
bgpd/bgp_vty.c
bgpd/bgpd.h

index d142e31af10e6c82390b3205be1d91eeb8cf7244..4944e3ea23276b8749b8f74aa64ac8fa6469ad2e 100644 (file)
@@ -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);
 }
index 6e80c4191404ddaebc38493e4501b66504577d3a..7d9d2426d0d67da3c8d202a89f5ff47b66ae458a 100644 (file)
@@ -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);
 }
index 9159bc683d8f9a4545720acbfadbf9e2a7b0dc9a..af702ac853e79b69cd40ce9550e7ed7dae40625b 100644 (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");
                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
index 2022d47acec9350cca7277496571ae859f07d95c..70a1d386c6f8a4c1d5a262f15bd46c98afed5c15 100644 (file)
@@ -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;