]> git.proxmox.com Git - mirror_frr.git/blobdiff - bgpd/bgpd.c
*: Convert `struct event_master` to `struct event_loop`
[mirror_frr.git] / bgpd / bgpd.c
index 0fd0dafa2232c9c5baeb52764f7dc7cce5a09c13..ae46efef2c13ea282e6141f7cc3a70bcceb6e122 100644 (file)
@@ -6,7 +6,7 @@
 #include <zebra.h>
 
 #include "prefix.h"
-#include "thread.h"
+#include "event.h"
 #include "buffer.h"
 #include "stream.h"
 #include "ringbuf.h"
@@ -977,9 +977,10 @@ void peer_flag_inherit(struct peer *peer, uint64_t flag)
                COND_FLAG(peer->flags, flag, group_val);
 }
 
-int peer_af_flag_check(struct peer *peer, afi_t afi, safi_t safi, uint32_t flag)
+bool peer_af_flag_check(struct peer *peer, afi_t afi, safi_t safi,
+                       uint64_t flag)
 {
-       return CHECK_FLAG(peer->af_flags[afi][safi], flag);
+       return !!CHECK_FLAG(peer->af_flags[afi][safi], flag);
 }
 
 void peer_af_flag_inherit(struct peer *peer, afi_t afi, safi_t safi,
@@ -1125,9 +1126,9 @@ static void peer_free(struct peer *peer)
        bgp_timer_set(peer);
        bgp_reads_off(peer);
        bgp_writes_off(peer);
-       thread_cancel_event_ready(bm->master, peer);
+       event_cancel_event_ready(bm->master, peer);
        FOREACH_AFI_SAFI (afi, safi)
-               THREAD_OFF(peer->t_revalidate_all[afi][safi]);
+               EVENT_OFF(peer->t_revalidate_all[afi][safi]);
        assert(!peer->t_write);
        assert(!peer->t_read);
        BGP_EVENT_FLUSH(peer);
@@ -2466,16 +2467,16 @@ void peer_nsf_stop(struct peer *peer)
 
        FOREACH_AFI_SAFI_NSF (afi, safi) {
                peer->nsf[afi][safi] = 0;
-               THREAD_OFF(peer->t_llgr_stale[afi][safi]);
+               EVENT_OFF(peer->t_llgr_stale[afi][safi]);
        }
 
        if (peer->t_gr_restart) {
-               THREAD_OFF(peer->t_gr_restart);
+               EVENT_OFF(peer->t_gr_restart);
                if (bgp_debug_neighbor_events(peer))
                        zlog_debug("%pBP graceful restart timer stopped", peer);
        }
        if (peer->t_gr_stale) {
-               THREAD_OFF(peer->t_gr_stale);
+               EVENT_OFF(peer->t_gr_stale);
                if (bgp_debug_neighbor_events(peer))
                        zlog_debug(
                                "%pBP graceful restart stalepath timer stopped",
@@ -2515,9 +2516,9 @@ int peer_delete(struct peer *peer)
        bgp_keepalives_off(peer);
        bgp_reads_off(peer);
        bgp_writes_off(peer);
-       thread_cancel_event_ready(bm->master, peer);
+       event_cancel_event_ready(bm->master, peer);
        FOREACH_AFI_SAFI (afi, safi)
-               THREAD_OFF(peer->t_revalidate_all[afi][safi]);
+               EVENT_OFF(peer->t_revalidate_all[afi][safi]);
        assert(!CHECK_FLAG(peer->thread_flags, PEER_THREAD_WRITES_ON));
        assert(!CHECK_FLAG(peer->thread_flags, PEER_THREAD_READS_ON));
        assert(!CHECK_FLAG(peer->thread_flags, PEER_THREAD_KEEPALIVES_ON));
@@ -2725,7 +2726,7 @@ struct peer_group *peer_group_get(struct bgp *bgp, const char *name)
 static void peer_group2peer_config_copy(struct peer_group *group,
                                        struct peer *peer)
 {
-       uint32_t flags_tmp;
+       uint64_t flags_tmp;
        struct peer *conf;
        bool config_node = !!CHECK_FLAG(peer->flags, PEER_FLAG_CONFIG_NODE);
 
@@ -3196,11 +3197,11 @@ int peer_group_bind(struct bgp *bgp, union sockunion *su, struct peer *peer,
        return 0;
 }
 
-static void bgp_startup_timer_expire(struct thread *thread)
+static void bgp_startup_timer_expire(struct event *thread)
 {
        struct bgp *bgp;
 
-       bgp = THREAD_ARG(thread);
+       bgp = EVENT_ARG(thread);
        bgp->t_startup = NULL;
 }
 
@@ -3354,8 +3355,8 @@ static struct bgp *bgp_create(as_t *as, const char *name,
        if (name)
                bgp->name = XSTRDUP(MTYPE_BGP, name);
 
-       thread_add_timer(bm->master, bgp_startup_timer_expire, bgp,
-                        bgp->restart_time, &bgp->t_startup);
+       event_add_timer(bm->master, bgp_startup_timer_expire, bgp,
+                       bgp->restart_time, &bgp->t_startup);
 
        /* printable name we can use in debug messages */
        if (inst_type == BGP_INSTANCE_TYPE_DEFAULT) {
@@ -3695,7 +3696,7 @@ void bgp_instance_down(struct bgp *bgp)
 
        /* Stop timers. */
        if (bgp->t_rmap_def_originate_eval) {
-               THREAD_OFF(bgp->t_rmap_def_originate_eval);
+               EVENT_OFF(bgp->t_rmap_def_originate_eval);
                bgp_unlock(bgp); /* TODO - This timer is started with a lock -
                                    why? */
        }
@@ -3747,39 +3748,39 @@ int bgp_delete(struct bgp *bgp)
        hook_call(bgp_inst_delete, bgp);
 
        FOREACH_AFI_SAFI (afi, safi)
-               THREAD_OFF(bgp->t_revalidate[afi][safi]);
+               EVENT_OFF(bgp->t_revalidate[afi][safi]);
 
-       THREAD_OFF(bgp->t_condition_check);
-       THREAD_OFF(bgp->t_startup);
-       THREAD_OFF(bgp->t_maxmed_onstartup);
-       THREAD_OFF(bgp->t_update_delay);
-       THREAD_OFF(bgp->t_establish_wait);
+       EVENT_OFF(bgp->t_condition_check);
+       EVENT_OFF(bgp->t_startup);
+       EVENT_OFF(bgp->t_maxmed_onstartup);
+       EVENT_OFF(bgp->t_update_delay);
+       EVENT_OFF(bgp->t_establish_wait);
 
        /* Set flag indicating bgp instance delete in progress */
        SET_FLAG(bgp->flags, BGP_FLAG_DELETE_IN_PROGRESS);
 
        /* Delete the graceful restart info */
        FOREACH_AFI_SAFI (afi, safi) {
-               struct thread *t;
+               struct event *t;
 
                gr_info = &bgp->gr_info[afi][safi];
                if (!gr_info)
                        continue;
                t = gr_info->t_select_deferral;
                if (t) {
-                       void *info = THREAD_ARG(t);
+                       void *info = EVENT_ARG(t);
 
                        XFREE(MTYPE_TMP, info);
                }
-               THREAD_OFF(gr_info->t_select_deferral);
+               EVENT_OFF(gr_info->t_select_deferral);
 
                t = gr_info->t_route_select;
                if (t) {
-                       void *info = THREAD_ARG(t);
+                       void *info = EVENT_ARG(t);
 
                        XFREE(MTYPE_TMP, info);
                }
-               THREAD_OFF(gr_info->t_route_select);
+               EVENT_OFF(gr_info->t_route_select);
        }
 
        if (BGP_DEBUG(zebra, ZEBRA)) {
@@ -3802,7 +3803,7 @@ int bgp_delete(struct bgp *bgp)
 
        /* Stop timers. */
        if (bgp->t_rmap_def_originate_eval) {
-               THREAD_OFF(bgp->t_rmap_def_originate_eval);
+               EVENT_OFF(bgp->t_rmap_def_originate_eval);
                bgp_unlock(bgp); /* TODO - This timer is started with a lock -
                                    why? */
        }
@@ -3896,7 +3897,7 @@ int bgp_delete(struct bgp *bgp)
        if (bgp->process_queue)
                work_queue_free_and_null(&bgp->process_queue);
 
-       thread_master_free_unused(bm->master);
+       event_master_free_unused(bm->master);
        bgp_unlock(bgp); /* initial reference */
 
        return 0;
@@ -4517,7 +4518,7 @@ static int peer_flag_action_set(const struct peer_flag_action *action_list,
        return found;
 }
 
-static void peer_flag_modify_action(struct peer *peer, uint32_t flag)
+static void peer_flag_modify_action(struct peer *peer, uint64_t flag)
 {
        if (flag == PEER_FLAG_SHUTDOWN) {
                if (CHECK_FLAG(peer->flags, flag)) {
@@ -4527,7 +4528,7 @@ static void peer_flag_modify_action(struct peer *peer, uint32_t flag)
                        UNSET_FLAG(peer->sflags, PEER_STATUS_PREFIX_OVERFLOW);
 
                        if (peer->t_pmax_restart) {
-                               THREAD_OFF(peer->t_pmax_restart);
+                               EVENT_OFF(peer->t_pmax_restart);
                                if (bgp_debug_neighbor_events(peer))
                                        zlog_debug(
                                                "%pBP Maximum-prefix restart timer canceled",
@@ -6312,8 +6313,11 @@ int peer_local_as_set(struct peer *peer, as_t as, bool no_prepend,
            && old_replace_as == replace_as)
                return 0;
        peer->change_local_as = as;
-       if (as_str)
+       if (as_str) {
+               if (peer->change_local_as_pretty)
+                       XFREE(MTYPE_BGP, peer->change_local_as_pretty);
                peer->change_local_as_pretty = XSTRDUP(MTYPE_BGP, as_str);
+       }
 
        (void)peer_sort(peer);
 
@@ -7394,7 +7398,7 @@ static bool peer_maximum_prefix_clear_overflow(struct peer *peer)
 
        UNSET_FLAG(peer->sflags, PEER_STATUS_PREFIX_OVERFLOW);
        if (peer->t_pmax_restart) {
-               THREAD_OFF(peer->t_pmax_restart);
+               EVENT_OFF(peer->t_pmax_restart);
                if (bgp_debug_neighbor_events(peer))
                        zlog_debug(
                                "%pBP Maximum-prefix restart timer cancelled",
@@ -8006,7 +8010,7 @@ char *peer_uptime(time_t uptime2, char *buf, size_t len, bool use_json,
        return buf;
 }
 
-void bgp_master_init(struct thread_master *master, const int buffer_size,
+void bgp_master_init(struct event_loop *master, const int buffer_size,
                     struct list *addresses)
 {
        qobj_init();
@@ -8272,7 +8276,7 @@ void bgp_terminate(void)
        if (bm->listen_sockets)
                list_delete(&bm->listen_sockets);
 
-       THREAD_OFF(bm->t_rmap_update);
+       EVENT_OFF(bm->t_rmap_update);
 
        bgp_mac_finish();
 }