mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-15 09:20:25 +00:00
sharpd: send opaque message registrations
For testing, add cli to sharpd to send opaque message registration and un-registration messages. Signed-off-by: Mark Stapp <mjs@voltanet.io>
This commit is contained in:
parent
5bebe26d4e
commit
939b2339b4
@ -561,6 +561,32 @@ DEFPY (send_opaque,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFPY (send_opaque_reg,
|
||||||
|
send_opaque_reg_cmd,
|
||||||
|
"sharp send opaque <reg$reg | unreg> \
|
||||||
|
" FRR_IP_REDIST_STR_ZEBRA "$proto_str \
|
||||||
|
[{instance (0-1000) | session (1-1000)}] type (1-1000)",
|
||||||
|
"Sharp Routing Protocol\n"
|
||||||
|
"Send messages for testing\n"
|
||||||
|
"Send opaque messages\n"
|
||||||
|
"Send opaque registration\n"
|
||||||
|
"Send opaque unregistration\n"
|
||||||
|
FRR_IP_REDIST_HELP_STR_ZEBRA
|
||||||
|
"Daemon instance\n"
|
||||||
|
"Daemon instance\n"
|
||||||
|
"Session ID\n"
|
||||||
|
"Session ID\n"
|
||||||
|
"Opaque sub-type code\n"
|
||||||
|
"Opaque sub-type code\n")
|
||||||
|
{
|
||||||
|
int proto;
|
||||||
|
|
||||||
|
proto = proto_redistnum(AFI_IP, proto_str);
|
||||||
|
|
||||||
|
sharp_opaque_reg_send((reg != NULL), proto, instance, session, type);
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
void sharp_vty_init(void)
|
void sharp_vty_init(void)
|
||||||
{
|
{
|
||||||
install_element(ENABLE_NODE, &install_routes_data_dump_cmd);
|
install_element(ENABLE_NODE, &install_routes_data_dump_cmd);
|
||||||
@ -574,6 +600,7 @@ void sharp_vty_init(void)
|
|||||||
install_element(ENABLE_NODE, &sharp_remove_lsp_prefix_v4_cmd);
|
install_element(ENABLE_NODE, &sharp_remove_lsp_prefix_v4_cmd);
|
||||||
install_element(ENABLE_NODE, &logpump_cmd);
|
install_element(ENABLE_NODE, &logpump_cmd);
|
||||||
install_element(ENABLE_NODE, &send_opaque_cmd);
|
install_element(ENABLE_NODE, &send_opaque_cmd);
|
||||||
|
install_element(ENABLE_NODE, &send_opaque_reg_cmd);
|
||||||
|
|
||||||
install_element(VIEW_NODE, &show_debugging_sharpd_cmd);
|
install_element(VIEW_NODE, &show_debugging_sharpd_cmd);
|
||||||
|
|
||||||
|
@ -509,6 +509,37 @@ void sharp_opaque_send(uint32_t type, uint32_t count)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Send OPAQUE registration messages, using subtype 'type'.
|
||||||
|
*/
|
||||||
|
void sharp_opaque_reg_send(bool is_reg, uint32_t proto, uint32_t instance,
|
||||||
|
uint32_t session_id, uint32_t type)
|
||||||
|
{
|
||||||
|
struct stream *s;
|
||||||
|
|
||||||
|
s = zclient->obuf;
|
||||||
|
stream_reset(s);
|
||||||
|
|
||||||
|
if (is_reg)
|
||||||
|
zclient_create_header(s, ZEBRA_OPAQUE_REGISTER, VRF_DEFAULT);
|
||||||
|
else
|
||||||
|
zclient_create_header(s, ZEBRA_OPAQUE_UNREGISTER, VRF_DEFAULT);
|
||||||
|
|
||||||
|
/* Send sub-type */
|
||||||
|
stream_putl(s, type);
|
||||||
|
|
||||||
|
/* Add zclient info */
|
||||||
|
stream_putc(s, proto);
|
||||||
|
stream_putw(s, instance);
|
||||||
|
stream_putl(s, session_id);
|
||||||
|
|
||||||
|
/* Put length at the first point of the stream. */
|
||||||
|
stream_putw_at(s, 0, stream_get_endp(s));
|
||||||
|
|
||||||
|
(void)zclient_send_message(zclient);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
extern struct zebra_privs_t sharp_privs;
|
extern struct zebra_privs_t sharp_privs;
|
||||||
|
|
||||||
void sharp_zebra_init(void)
|
void sharp_zebra_init(void)
|
||||||
|
@ -44,8 +44,12 @@ int sharp_install_lsps_helper(bool install_p, const struct prefix *p,
|
|||||||
uint8_t type, int instance, uint32_t in_label,
|
uint8_t type, int instance, uint32_t in_label,
|
||||||
const struct nexthop_group *nhg,
|
const struct nexthop_group *nhg,
|
||||||
const struct nexthop_group *backup_nhg);
|
const struct nexthop_group *backup_nhg);
|
||||||
|
|
||||||
/* Send OPAQUE messages, using subtype 'type'. */
|
/* Send OPAQUE messages, using subtype 'type'. */
|
||||||
void sharp_opaque_send(uint32_t type, uint32_t count);
|
void sharp_opaque_send(uint32_t type, uint32_t count);
|
||||||
|
|
||||||
|
/* Send OPAQUE registration messages, using subtype 'type'. */
|
||||||
|
void sharp_opaque_reg_send(bool is_reg, uint32_t proto, uint32_t instance,
|
||||||
|
uint32_t session_id, uint32_t type);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user