]> git.proxmox.com Git - mirror_frr.git/blame - pimd/pim_addr.c
Merge pull request #13646 from donaldsharp/logically_illogical
[mirror_frr.git] / pimd / pim_addr.c
CommitLineData
acddc0ed 1// SPDX-License-Identifier: GPL-2.0-or-later
26625d51
DL
2/*
3 * PIM address generalizations
4 * Copyright (C) 2022 David Lamparter for NetDEF, Inc.
26625d51
DL
5 */
6
7#include <zebra.h>
8
9#include "pim_addr.h"
10#include "printfrr.h"
11#include "prefix.h"
12
13
54929fd3 14printfrr_ext_autoreg_p("PA", printfrr_pimaddr);
26625d51
DL
15static ssize_t printfrr_pimaddr(struct fbuf *buf, struct printfrr_eargs *ea,
16 const void *vptr)
17{
18 const pim_addr *addr = vptr;
19 bool use_star = false;
20
21 if (ea->fmt[0] == 's') {
22 use_star = true;
23 ea->fmt++;
24 }
25
26 if (!addr)
27 return bputs(buf, "(null)");
28
2a27f13b
DL
29 if (use_star && pim_addr_is_any(*addr))
30 return bputch(buf, '*');
26625d51
DL
31
32#if PIM_IPV == 4
33 return bprintfrr(buf, "%pI4", addr);
34#else
35 return bprintfrr(buf, "%pI6", addr);
36#endif
37}
38
54929fd3 39printfrr_ext_autoreg_p("SG", printfrr_sgaddr);
26625d51
DL
40static ssize_t printfrr_sgaddr(struct fbuf *buf, struct printfrr_eargs *ea,
41 const void *vptr)
42{
43 const pim_sgaddr *sga = vptr;
44
45 if (!sga)
46 return bputs(buf, "(null)");
47
48 return bprintfrr(buf, "(%pPAs,%pPAs)", &sga->src, &sga->grp);
49}