diff options
| author | Anuradha Karuppiah <anuradhak@cumulusnetworks.com> | 2019-03-19 11:36:41 -0700 |
|---|---|---|
| committer | Anuradha Karuppiah <anuradhak@cumulusnetworks.com> | 2019-04-20 08:33:20 -0700 |
| commit | c6b6b53b294ae37e35f802769a6da21a88f63e18 (patch) | |
| tree | 32d383a4c109206d71d609d8c9916a44ea21dfda /lib/prefix.c | |
| parent | 9718c54ef44f46e97ecb4aa4c570f4337113322c (diff) | |
lib: move SG prefix2str APIs from pimd to lib
This is to allow zebra to use these APIs instead of re-defining.
Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Diffstat (limited to 'lib/prefix.c')
| -rw-r--r-- | lib/prefix.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/prefix.c b/lib/prefix.c index 52bb266f11..6b91969218 100644 --- a/lib/prefix.c +++ b/lib/prefix.c @@ -1359,6 +1359,35 @@ const char *prefix2str(union prefixconstptr pu, char *str, int size) return str; } +void prefix_mcast_inet4_dump(const char *onfail, struct in_addr addr, + char *buf, int buf_size) +{ + int save_errno = errno; + + if (addr.s_addr == INADDR_ANY) + strcpy(buf, "*"); + else { + if (!inet_ntop(AF_INET, &addr, buf, buf_size)) { + if (onfail) + snprintf(buf, buf_size, "%s", onfail); + } + } + + errno = save_errno; +} + +const char *prefix_sg2str(const struct prefix_sg *sg, char *sg_str) +{ + char src_str[INET_ADDRSTRLEN]; + char grp_str[INET_ADDRSTRLEN]; + + prefix_mcast_inet4_dump("<src?>", sg->src, src_str, sizeof(src_str)); + prefix_mcast_inet4_dump("<grp?>", sg->grp, grp_str, sizeof(grp_str)); + snprintf(sg_str, PREFIX_SG_STR_LEN, "(%s,%s)", src_str, grp_str); + + return sg_str; +} + struct prefix *prefix_new(void) { struct prefix *p; |
