forked from Mirror/frr
sharpd: Add some infrastructure to allow test of ZEBRA_VRF_LABEL
Add some infrastructure to allow the testing of ZEBRA_VRF_LABEL Signed-off-by: Donald Sharp <sharp@cumulusnetworks.com>
This commit is contained in:
parent
c83c5e4482
commit
ab18a4954f
|
@ -26,6 +26,8 @@
|
||||||
#include "prefix.h"
|
#include "prefix.h"
|
||||||
#include "nexthop.h"
|
#include "nexthop.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
#include "vrf.h"
|
||||||
|
#include "zclient.h"
|
||||||
|
|
||||||
#include "sharpd/sharp_zebra.h"
|
#include "sharpd/sharp_zebra.h"
|
||||||
#include "sharpd/sharp_vty.h"
|
#include "sharpd/sharp_vty.h"
|
||||||
|
@ -76,6 +78,30 @@ DEFPY (install_routes,
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFPY(vrf_label,
|
||||||
|
vrf_label_cmd,
|
||||||
|
"label vrf NAME$name label (0-100000)$label",
|
||||||
|
"Give a vrf a label\n"
|
||||||
|
VRF_CMD_HELP_STR
|
||||||
|
"The label to use\n"
|
||||||
|
"Specified range to use\n")
|
||||||
|
{
|
||||||
|
struct vrf *vrf;
|
||||||
|
|
||||||
|
if (strcmp(name, "default") == 0)
|
||||||
|
vrf = vrf_lookup_by_id(VRF_DEFAULT);
|
||||||
|
else
|
||||||
|
vrf = vrf_lookup_by_name(name);
|
||||||
|
|
||||||
|
if (!vrf) {
|
||||||
|
vty_out(vty, "Unable to find vrf you silly head");
|
||||||
|
return CMD_WARNING_CONFIG_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
|
vrf_label_add(vrf->vrf_id, label);
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
DEFPY (remove_routes,
|
DEFPY (remove_routes,
|
||||||
remove_routes_cmd,
|
remove_routes_cmd,
|
||||||
"remove routes A.B.C.D$start (1-1000000)$routes",
|
"remove routes A.B.C.D$start (1-1000000)$routes",
|
||||||
|
@ -112,5 +138,6 @@ void sharp_vty_init(void)
|
||||||
{
|
{
|
||||||
install_element(ENABLE_NODE, &install_routes_cmd);
|
install_element(ENABLE_NODE, &install_routes_cmd);
|
||||||
install_element(ENABLE_NODE, &remove_routes_cmd);
|
install_element(ENABLE_NODE, &remove_routes_cmd);
|
||||||
|
install_element(ENABLE_NODE, &vrf_label_cmd);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -152,6 +152,11 @@ static void zebra_connected(struct zclient *zclient)
|
||||||
zclient_send_reg_requests(zclient, VRF_DEFAULT);
|
zclient_send_reg_requests(zclient, VRF_DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vrf_label_add(vrf_id_t vrf_id, mpls_label_t label)
|
||||||
|
{
|
||||||
|
zclient_send_vrf_label(zclient, vrf_id, label);
|
||||||
|
}
|
||||||
|
|
||||||
void route_add(struct prefix *p, struct nexthop *nh)
|
void route_add(struct prefix *p, struct nexthop *nh)
|
||||||
{
|
{
|
||||||
struct zapi_route api;
|
struct zapi_route api;
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
|
|
||||||
extern void sharp_zebra_init(void);
|
extern void sharp_zebra_init(void);
|
||||||
|
|
||||||
|
extern void vrf_label_add(vrf_id_t vrf_id, mpls_label_t label);
|
||||||
extern void route_add(struct prefix *p, struct nexthop *nh);
|
extern void route_add(struct prefix *p, struct nexthop *nh);
|
||||||
extern void route_delete(struct prefix *p);
|
extern void route_delete(struct prefix *p);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue