mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-05 16:03:35 +00:00
Merge pull request #2532 from donaldsharp/various_stuff
Redistribution and some extra developer debug code
This commit is contained in:
commit
20e5fd7ab5
13
lib/stream.c
13
lib/stream.c
@ -1109,6 +1109,10 @@ struct stream_fifo *stream_fifo_new(void)
|
|||||||
/* Add new stream to fifo. */
|
/* Add new stream to fifo. */
|
||||||
void stream_fifo_push(struct stream_fifo *fifo, struct stream *s)
|
void stream_fifo_push(struct stream_fifo *fifo, struct stream *s)
|
||||||
{
|
{
|
||||||
|
#if defined DEV_BUILD
|
||||||
|
size_t max, curmax;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (fifo->tail)
|
if (fifo->tail)
|
||||||
fifo->tail->next = s;
|
fifo->tail->next = s;
|
||||||
else
|
else
|
||||||
@ -1116,8 +1120,15 @@ void stream_fifo_push(struct stream_fifo *fifo, struct stream *s)
|
|||||||
|
|
||||||
fifo->tail = s;
|
fifo->tail = s;
|
||||||
fifo->tail->next = NULL;
|
fifo->tail->next = NULL;
|
||||||
|
#if !defined DEV_BUILD
|
||||||
atomic_fetch_add_explicit(&fifo->count, 1, memory_order_release);
|
atomic_fetch_add_explicit(&fifo->count, 1, memory_order_release);
|
||||||
|
#else
|
||||||
|
max = atomic_fetch_add_explicit(&fifo->count, 1, memory_order_release);
|
||||||
|
curmax = atomic_load_explicit(&fifo->max_count, memory_order_relaxed);
|
||||||
|
if (max > curmax)
|
||||||
|
atomic_store_explicit(&fifo->max_count, max,
|
||||||
|
memory_order_relaxed);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void stream_fifo_push_safe(struct stream_fifo *fifo, struct stream *s)
|
void stream_fifo_push_safe(struct stream_fifo *fifo, struct stream *s)
|
||||||
|
@ -115,6 +115,9 @@ struct stream_fifo {
|
|||||||
|
|
||||||
/* number of streams in this fifo */
|
/* number of streams in this fifo */
|
||||||
_Atomic size_t count;
|
_Atomic size_t count;
|
||||||
|
#if defined DEV_BUILD
|
||||||
|
_Atomic size_t max_count;
|
||||||
|
#endif
|
||||||
|
|
||||||
struct stream *head;
|
struct stream *head;
|
||||||
struct stream *tail;
|
struct stream *tail;
|
||||||
|
@ -737,8 +737,6 @@ static void pim_zebra_connected(struct zclient *zclient)
|
|||||||
|
|
||||||
void pim_zebra_init(void)
|
void pim_zebra_init(void)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
|
|
||||||
/* Socket for receiving updates from Zebra daemon */
|
/* Socket for receiving updates from Zebra daemon */
|
||||||
zclient = zclient_new_notify(master, &zclient_options_default);
|
zclient = zclient_new_notify(master, &zclient_options_default);
|
||||||
|
|
||||||
@ -754,31 +752,7 @@ void pim_zebra_init(void)
|
|||||||
|
|
||||||
zclient_init(zclient, ZEBRA_ROUTE_PIM, 0, &pimd_privs);
|
zclient_init(zclient, ZEBRA_ROUTE_PIM, 0, &pimd_privs);
|
||||||
if (PIM_DEBUG_PIM_TRACE) {
|
if (PIM_DEBUG_PIM_TRACE) {
|
||||||
zlog_info("zclient_init cleared redistribution request");
|
zlog_notice("%s: zclient socket initialized",
|
||||||
}
|
|
||||||
|
|
||||||
/* Request all redistribution */
|
|
||||||
for (i = 0; i < ZEBRA_ROUTE_MAX; i++) {
|
|
||||||
if (i == zclient->redist_default)
|
|
||||||
continue;
|
|
||||||
vrf_bitmap_set(zclient->redist[AFI_IP][i], pimg->vrf_id);
|
|
||||||
;
|
|
||||||
if (PIM_DEBUG_PIM_TRACE) {
|
|
||||||
zlog_debug("%s: requesting redistribution for %s (%i)",
|
|
||||||
__PRETTY_FUNCTION__, zebra_route_string(i),
|
|
||||||
i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Request default information */
|
|
||||||
zclient_redistribute_default(ZEBRA_REDISTRIBUTE_DEFAULT_ADD, zclient,
|
|
||||||
pimg->vrf_id);
|
|
||||||
|
|
||||||
if (PIM_DEBUG_PIM_TRACE) {
|
|
||||||
zlog_info("%s: requesting default information redistribution",
|
|
||||||
__PRETTY_FUNCTION__);
|
|
||||||
|
|
||||||
zlog_notice("%s: zclient update socket initialized",
|
|
||||||
__PRETTY_FUNCTION__);
|
__PRETTY_FUNCTION__);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -521,6 +521,7 @@ int zsend_redistribute_route(int cmd, struct zserv *client, struct prefix *p,
|
|||||||
struct zapi_nexthop *api_nh;
|
struct zapi_nexthop *api_nh;
|
||||||
struct nexthop *nexthop;
|
struct nexthop *nexthop;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
afi_t afi;
|
||||||
|
|
||||||
memset(&api, 0, sizeof(api));
|
memset(&api, 0, sizeof(api));
|
||||||
api.vrf_id = re->vrf_id;
|
api.vrf_id = re->vrf_id;
|
||||||
@ -528,6 +529,24 @@ int zsend_redistribute_route(int cmd, struct zserv *client, struct prefix *p,
|
|||||||
api.instance = re->instance;
|
api.instance = re->instance;
|
||||||
api.flags = re->flags;
|
api.flags = re->flags;
|
||||||
|
|
||||||
|
afi = family2afi(p->family);
|
||||||
|
switch (afi) {
|
||||||
|
case AFI_IP:
|
||||||
|
if (cmd == ZEBRA_REDISTRIBUTE_ROUTE_ADD)
|
||||||
|
client->redist_v4_add_cnt++;
|
||||||
|
else
|
||||||
|
client->redist_v4_del_cnt++;
|
||||||
|
break;
|
||||||
|
case AFI_IP6:
|
||||||
|
if (cmd == ZEBRA_REDISTRIBUTE_ROUTE_ADD)
|
||||||
|
client->redist_v6_add_cnt++;
|
||||||
|
else
|
||||||
|
client->redist_v6_del_cnt++;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/* Prefix. */
|
/* Prefix. */
|
||||||
api.prefix = *p;
|
api.prefix = *p;
|
||||||
if (src_p) {
|
if (src_p) {
|
||||||
|
@ -939,6 +939,11 @@ static void zebra_show_client_detail(struct vty *vty, struct zserv *client)
|
|||||||
vty_out(vty, "MAC-IP add notifications: %d\n", client->macipadd_cnt);
|
vty_out(vty, "MAC-IP add notifications: %d\n", client->macipadd_cnt);
|
||||||
vty_out(vty, "MAC-IP delete notifications: %d\n", client->macipdel_cnt);
|
vty_out(vty, "MAC-IP delete notifications: %d\n", client->macipdel_cnt);
|
||||||
|
|
||||||
|
#if defined DEV_BUILD
|
||||||
|
vty_out(vty, "Input Fifo: %zu:%zu Output Fifo: %zu:%zu\n",
|
||||||
|
client->ibuf_fifo->count, client->ibuf_fifo->max_count,
|
||||||
|
client->obuf_fifo->count, client->obuf_fifo->max_count);
|
||||||
|
#endif
|
||||||
vty_out(vty, "\n");
|
vty_out(vty, "\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user