mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-09 03:47:47 +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;
|
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:
|
* nexthop printing variants:
|
||||||
* %pNHvv
|
* %pNHvv
|
||||||
@ -1010,27 +1038,7 @@ static ssize_t printfrr_nh(struct fbuf *buf, struct printfrr_eargs *ea,
|
|||||||
case 's':
|
case 's':
|
||||||
ea->fmt++;
|
ea->fmt++;
|
||||||
|
|
||||||
if (!nexthop)
|
ret += printfrr_nhs(buf, 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;
|
return ret;
|
||||||
case 'c':
|
case 'c':
|
||||||
ea->fmt++;
|
ea->fmt++;
|
||||||
|
@ -260,6 +260,7 @@ int nexthop_str2backups(const char *str, int *num_backups,
|
|||||||
#pragma FRR printfrr_ext "%pNH" (struct nexthop *)
|
#pragma FRR printfrr_ext "%pNH" (struct nexthop *)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
ssize_t printfrr_nhs(struct fbuf *buf, const struct nexthop *nh);
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user