zebra: add zserv_send_batch api

Add a zserv api to send a batch (a fifo) of messages to a
zapi client.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
This commit is contained in:
Mark Stapp 2020-04-20 16:59:38 -04:00
parent 939b2339b4
commit 6e2a33a843
2 changed files with 30 additions and 0 deletions

View File

@ -544,6 +544,25 @@ int zserv_send_message(struct zserv *client, struct stream *msg)
return 0; return 0;
} }
/*
* Send a batch of messages to a connected Zebra API client.
*/
int zserv_send_batch(struct zserv *client, struct stream_fifo *fifo)
{
struct stream *msg;
frr_with_mutex(&client->obuf_mtx) {
msg = stream_fifo_pop(fifo);
while (msg) {
stream_fifo_push(client->obuf_fifo, msg);
msg = stream_fifo_pop(fifo);
}
}
zserv_client_event(client, ZSERV_CLIENT_WRITE);
return 0;
}
/* Hooks for client connect / disconnect */ /* Hooks for client connect / disconnect */
DEFINE_HOOK(zserv_client_connect, (struct zserv *client), (client)); DEFINE_HOOK(zserv_client_connect, (struct zserv *client), (client));

View File

@ -281,6 +281,17 @@ extern void zserv_start(char *path);
*/ */
extern int zserv_send_message(struct zserv *client, struct stream *msg); extern int zserv_send_message(struct zserv *client, struct stream *msg);
/*
* Send a batch of messages to a connected Zebra API client.
*
* client
* the client to send to
*
* fifo
* the list of messages to send
*/
extern int zserv_send_batch(struct zserv *client, struct stream_fifo *fifo);
/* /*
* Retrieve a client by its protocol and instance number. * Retrieve a client by its protocol and instance number.
* *