summaryrefslogtreecommitdiff
path: root/lib/link_state.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/link_state.c')
-rw-r--r--lib/link_state.c46
1 files changed, 10 insertions, 36 deletions
diff --git a/lib/link_state.c b/lib/link_state.c
index 58727a568b..6537f881ce 100644
--- a/lib/link_state.c
+++ b/lib/link_state.c
@@ -1138,31 +1138,13 @@ int ls_unregister(struct zclient *zclient, bool server)
int ls_request_sync(struct zclient *zclient)
{
- struct stream *s;
- uint16_t flags = 0;
-
/* Check buffer size */
if (STREAM_SIZE(zclient->obuf)
< (ZEBRA_HEADER_SIZE + 3 * sizeof(uint32_t)))
return -1;
- s = zclient->obuf;
- stream_reset(s);
-
- zclient_create_header(s, ZEBRA_OPAQUE_MESSAGE, VRF_DEFAULT);
-
- /* Set type and flags */
- stream_putl(s, LINK_STATE_SYNC);
- stream_putw(s, flags);
- /* Send destination client info */
- stream_putc(s, zclient->redist_default);
- stream_putw(s, zclient->instance);
- stream_putl(s, zclient->session_id);
-
- /* Put length into the header at the start of the stream. */
- stream_putw_at(s, 0, stream_get_endp(s));
-
- return zclient_send_message(zclient);
+ /* No data with this message */
+ return zclient_send_opaque(zclient, LINK_STATE_SYNC, NULL, 0);
}
static struct ls_node *ls_parse_node(struct stream *s)
@@ -1623,23 +1605,15 @@ int ls_send_msg(struct zclient *zclient, struct ls_message *msg,
(ZEBRA_HEADER_SIZE + sizeof(uint32_t) + sizeof(msg)))
return -1;
+ /* Init the message, then encode the data inline. */
+ if (dst == NULL)
+ zapi_opaque_init(zclient, LINK_STATE_UPDATE, flags);
+ else
+ zapi_opaque_unicast_init(zclient, LINK_STATE_UPDATE, flags,
+ dst->proto, dst->instance,
+ dst->session_id);
+
s = zclient->obuf;
- stream_reset(s);
-
- zclient_create_header(s, ZEBRA_OPAQUE_MESSAGE, VRF_DEFAULT);
-
- /* Set sub-type, flags and destination for unicast message */
- stream_putl(s, LINK_STATE_UPDATE);
- if (dst != NULL) {
- SET_FLAG(flags, ZAPI_OPAQUE_FLAG_UNICAST);
- stream_putw(s, flags);
- /* Send destination client info */
- stream_putc(s, dst->proto);
- stream_putw(s, dst->instance);
- stream_putl(s, dst->session_id);
- } else {
- stream_putw(s, flags);
- }
/* Format Link State message */
if (ls_format_msg(s, msg) < 0) {