mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-05 11:48:50 +00:00
lib: Abstract usage of '%pNHs' so that nexthop groups can use it too
Abstract the usage of '%pNHs' so that when nexthop groups get a new special printfrr that it can take advantage of this functionality too. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
parent
f90391998c
commit
f7a410a7c3
@ -922,6 +922,34 @@ int nexthop_str2backups(const char *str, int *num_backups,
|
||||
return ret;
|
||||
}
|
||||
|
||||
ssize_t printfrr_nhs(struct fbuf *buf, const struct nexthop *nexthop)
|
||||
{
|
||||
ssize_t ret = 0;
|
||||
|
||||
if (!nexthop)
|
||||
return bputs(buf, "(null)");
|
||||
|
||||
switch (nexthop->type) {
|
||||
case NEXTHOP_TYPE_IFINDEX:
|
||||
ret += bprintfrr(buf, "if %u", nexthop->ifindex);
|
||||
break;
|
||||
case NEXTHOP_TYPE_IPV4:
|
||||
case NEXTHOP_TYPE_IPV4_IFINDEX:
|
||||
ret += bprintfrr(buf, "%pI4 if %u", &nexthop->gate.ipv4,
|
||||
nexthop->ifindex);
|
||||
break;
|
||||
case NEXTHOP_TYPE_IPV6:
|
||||
case NEXTHOP_TYPE_IPV6_IFINDEX:
|
||||
ret += bprintfrr(buf, "%pI6 if %u", &nexthop->gate.ipv6,
|
||||
nexthop->ifindex);
|
||||
break;
|
||||
case NEXTHOP_TYPE_BLACKHOLE:
|
||||
ret += bputs(buf, "blackhole");
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* nexthop printing variants:
|
||||
* %pNHvv
|
||||
@ -1010,27 +1038,7 @@ static ssize_t printfrr_nh(struct fbuf *buf, struct printfrr_eargs *ea,
|
||||
case 's':
|
||||
ea->fmt++;
|
||||
|
||||
if (!nexthop)
|
||||
return bputs(buf, "(null)");
|
||||
|
||||
switch (nexthop->type) {
|
||||
case NEXTHOP_TYPE_IFINDEX:
|
||||
ret += bprintfrr(buf, "if %u", nexthop->ifindex);
|
||||
break;
|
||||
case NEXTHOP_TYPE_IPV4:
|
||||
case NEXTHOP_TYPE_IPV4_IFINDEX:
|
||||
ret += bprintfrr(buf, "%pI4 if %u", &nexthop->gate.ipv4,
|
||||
nexthop->ifindex);
|
||||
break;
|
||||
case NEXTHOP_TYPE_IPV6:
|
||||
case NEXTHOP_TYPE_IPV6_IFINDEX:
|
||||
ret += bprintfrr(buf, "%pI6 if %u", &nexthop->gate.ipv6,
|
||||
nexthop->ifindex);
|
||||
break;
|
||||
case NEXTHOP_TYPE_BLACKHOLE:
|
||||
ret += bputs(buf, "blackhole");
|
||||
break;
|
||||
}
|
||||
ret += printfrr_nhs(buf, nexthop);
|
||||
return ret;
|
||||
case 'c':
|
||||
ea->fmt++;
|
||||
|
@ -260,6 +260,7 @@ int nexthop_str2backups(const char *str, int *num_backups,
|
||||
#pragma FRR printfrr_ext "%pNH" (struct nexthop *)
|
||||
#endif
|
||||
|
||||
ssize_t printfrr_nhs(struct fbuf *buf, const struct nexthop *nh);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user