mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-04 14:11:48 +00:00
lib: Add the ability for other people to call a nexthop write line
Add code to allow nexthops to be written by people who are interested in writing their own nexthop line. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
d604266ced
commit
1b7bce04d5
@ -315,57 +315,55 @@ struct cmd_node nexthop_group_node = {
|
|||||||
1
|
1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void nexthop_group_write_nexthop(struct vty *vty, struct nexthop *nh)
|
||||||
|
{
|
||||||
|
char buf[100];
|
||||||
|
struct vrf *vrf;
|
||||||
|
|
||||||
|
vty_out(vty, " nexthop ");
|
||||||
|
|
||||||
|
switch (nh->type) {
|
||||||
|
case NEXTHOP_TYPE_IFINDEX:
|
||||||
|
vty_out(vty, "%s", ifindex2ifname(nh->ifindex, nh->vrf_id));
|
||||||
|
break;
|
||||||
|
case NEXTHOP_TYPE_IPV4:
|
||||||
|
vty_out(vty, "%s", inet_ntoa(nh->gate.ipv4));
|
||||||
|
break;
|
||||||
|
case NEXTHOP_TYPE_IPV4_IFINDEX:
|
||||||
|
vty_out(vty, "%s %s", inet_ntoa(nh->gate.ipv4),
|
||||||
|
ifindex2ifname(nh->ifindex, nh->vrf_id));
|
||||||
|
break;
|
||||||
|
case NEXTHOP_TYPE_IPV6:
|
||||||
|
vty_out(vty, "%s",
|
||||||
|
inet_ntop(AF_INET6, &nh->gate.ipv6, buf, sizeof(buf)));
|
||||||
|
break;
|
||||||
|
case NEXTHOP_TYPE_IPV6_IFINDEX:
|
||||||
|
vty_out(vty, "%s %s",
|
||||||
|
inet_ntop(AF_INET6, &nh->gate.ipv6, buf, sizeof(buf)),
|
||||||
|
ifindex2ifname(nh->ifindex, nh->vrf_id));
|
||||||
|
break;
|
||||||
|
case NEXTHOP_TYPE_BLACKHOLE:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nh->vrf_id != VRF_DEFAULT) {
|
||||||
|
vrf = vrf_lookup_by_id(nh->vrf_id);
|
||||||
|
vty_out(vty, " nexthop-vrf %s", vrf->name);
|
||||||
|
}
|
||||||
|
vty_out(vty, "\n");
|
||||||
|
}
|
||||||
|
|
||||||
static int nexthop_group_write(struct vty *vty)
|
static int nexthop_group_write(struct vty *vty)
|
||||||
{
|
{
|
||||||
struct nexthop_group_cmd *nhgc;
|
struct nexthop_group_cmd *nhgc;
|
||||||
struct nexthop *nh;
|
struct nexthop *nh;
|
||||||
struct vrf *vrf;
|
|
||||||
|
|
||||||
RB_FOREACH (nhgc, nhgc_entry_head, &nhgc_entries) {
|
RB_FOREACH (nhgc, nhgc_entry_head, &nhgc_entries) {
|
||||||
char buf[100];
|
|
||||||
|
|
||||||
vty_out(vty, "nexthop-group %s\n", nhgc->name);
|
vty_out(vty, "nexthop-group %s\n", nhgc->name);
|
||||||
|
|
||||||
for (nh = nhgc->nhg.nexthop; nh; nh = nh->next) {
|
for (nh = nhgc->nhg.nexthop; nh; nh = nh->next)
|
||||||
|
nexthop_group_write_nexthop(vty, nh);
|
||||||
|
|
||||||
vty_out(vty, " nexthop ");
|
|
||||||
|
|
||||||
switch (nh->type) {
|
|
||||||
case NEXTHOP_TYPE_IFINDEX:
|
|
||||||
vty_out(vty, "%s",
|
|
||||||
ifindex2ifname(nh->ifindex,
|
|
||||||
nh->vrf_id));
|
|
||||||
break;
|
|
||||||
case NEXTHOP_TYPE_IPV4:
|
|
||||||
vty_out(vty, "%s", inet_ntoa(nh->gate.ipv4));
|
|
||||||
break;
|
|
||||||
case NEXTHOP_TYPE_IPV4_IFINDEX:
|
|
||||||
vty_out(vty, "%s %s", inet_ntoa(nh->gate.ipv4),
|
|
||||||
ifindex2ifname(nh->ifindex,
|
|
||||||
nh->vrf_id));
|
|
||||||
break;
|
|
||||||
case NEXTHOP_TYPE_IPV6:
|
|
||||||
vty_out(vty, "%s",
|
|
||||||
inet_ntop(AF_INET6, &nh->gate.ipv6, buf,
|
|
||||||
sizeof(buf)));
|
|
||||||
break;
|
|
||||||
case NEXTHOP_TYPE_IPV6_IFINDEX:
|
|
||||||
vty_out(vty, "%s %s",
|
|
||||||
inet_ntop(AF_INET6, &nh->gate.ipv6, buf,
|
|
||||||
sizeof(buf)),
|
|
||||||
ifindex2ifname(nh->ifindex,
|
|
||||||
nh->vrf_id));
|
|
||||||
break;
|
|
||||||
case NEXTHOP_TYPE_BLACKHOLE:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nh->vrf_id) {
|
|
||||||
vrf = vrf_lookup_by_id(nh->vrf_id);
|
|
||||||
vty_out(vty, " nexthop-vrf %s", vrf->name);
|
|
||||||
}
|
|
||||||
vty_out(vty, "\n");
|
|
||||||
}
|
|
||||||
vty_out(vty, "!\n");
|
vty_out(vty, "!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,6 +21,8 @@
|
|||||||
#ifndef __NEXTHOP_GROUP__
|
#ifndef __NEXTHOP_GROUP__
|
||||||
#define __NEXTHOP_GROUP__
|
#define __NEXTHOP_GROUP__
|
||||||
|
|
||||||
|
#include <vty.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* What is a nexthop group?
|
* What is a nexthop group?
|
||||||
*
|
*
|
||||||
@ -88,4 +90,5 @@ extern struct nexthop *nexthop_exists(struct nexthop_group *nhg,
|
|||||||
|
|
||||||
extern struct nexthop_group_cmd *nhgc_find(const char *name);
|
extern struct nexthop_group_cmd *nhgc_find(const char *name);
|
||||||
|
|
||||||
|
extern void nexthop_group_write_nexthop(struct vty *vty, struct nexthop *nh);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user